group_theory.subgroup.basic
⟷
Mathlib.GroupTheory.Subgroup.Basic
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
centralizer
from subgroup G
to set G
(#18965)
This is consistent with all the other sub<foo>.centralizer
definitions.
This generalization reveals that a lot of downstream results are rather strangely stated about zpowers
.
This does not attempt to change these, instead leaving the work for a follow up (either in a later mathlib3 PR or in mathlib4).
@@ -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)
@@ -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)
to_additive
s (#19168)
I forgot these in #18861. These are already in the forward-port PR, leanprover-community/mathlib4#4896.
@@ -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)
@@ -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)
@@ -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)
topological_space_units
(#18536)
See Zulip chat
Also generalize TC assumptions in inv_mem_iff
.
@@ -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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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"]
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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,
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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 /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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 /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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 /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/b1abe23ae96fef89ad30d9f4362c307f72a55010
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/442a83d738cb208d3600056c489be16900ba701d
@@ -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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/442a83d738cb208d3600056c489be16900ba701d
@@ -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⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -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
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/63721b2c3eba6c325ecf8ae8cca27155a4f6306f
@@ -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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/c0c52abb75074ed8b73a948341f50521fbf43b4c
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -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"]
mathlib commit https://github.com/leanprover-community/mathlib/commit/8b981918a93bc45a8600de608cde7944a80d92b9
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/d30d31261cdb4d2f5e612eabc3c4bf45556350d5
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3e83f0fa4391c8740f7d773a7a9b74e311ae2a3
@@ -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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -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
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -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] :
mathlib commit https://github.com/leanprover-community/mathlib/commit/31c24aa72e7b3e5ed97a8412470e904f82b81004
@@ -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) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -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,
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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 :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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) = ⊤ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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₂
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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') :
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -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')) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -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ₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -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')) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/36b8aa61ea7c05727161f96a0532897bd72aedab
@@ -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 _) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/09079525fd01b3dda35e96adaa08d2f943e1648c
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/d95bef0d215ea58c0fd7bbc4b151bf3fe952c095
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -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 _) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -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')) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -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')) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/3b267e70a936eebb21ab546f49a8df34dd300b25
@@ -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 _) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/62e8311c791f02c47451bf14aa2501048e7c2f33
@@ -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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -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 _) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -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) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -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) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/22131150f88a2d125713ffa0f4693e3355b1eb49
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -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 _) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -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
@@ -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
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.
@@ -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.
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
).
@@ -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
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>
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>
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>
@@ -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
@@ -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
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 coreNat.decidableBallLT
and Nat.decidableBallLE
: defined in Lean corebef_def
is still used in a number of places and could be renamedBAll.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>
@@ -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
Purely automatic replacement. If this is in any way controversial; I'm happy to just close this PR.
@@ -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"]
@@ -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
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.
@@ -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) }
@@ -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'
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
@@ -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]
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)
@@ -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` -/
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.
@@ -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
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>
@@ -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
open Classical
(#11199)
We remove all but one open Classical
s, 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.
@@ -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 :=
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -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
ℕ
, ℤ
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
@@ -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."]
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.
@@ -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]
@@ -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
Order
ed 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>
@@ -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
refine
s (#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 refine
s, but maybe the current change is beneficial.
@@ -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
@@ -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
@@ -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
@@ -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
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.
@@ -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
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.
@@ -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
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>
@@ -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
@@ -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
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>
@@ -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 :=
@@ -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
abs
(#9553)
The current design for abs
is flawed:
Abs
notation typeclass has exactly two instances: one for [Neg α] [Sup α]
, one for [Inv α] [Sup α]
. This means that:
Abs.abs
Abs
instances!Algebra.Order.Group.Abs
are about the additive version.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>
@@ -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 [*]
$
with <|
(#9319)
See Zulip thread for the discussion.
@@ -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
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>
@@ -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. -/
@@ -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
∃ 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.
@@ -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
@@ -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]
@@ -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
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.
@@ -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
@@ -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. -/
The cardinality of a subgroup is greater than the order of any of its elements.
Rename
order_eq_card_zpowers
→ Fintype.card_zpowers
order_eq_card_zpowers'
→ Nat.card_zpowers
(and turn it around to match Nat.card_subgroupPowers
)Submonoid.powers_subset
→ Submonoid.powers_le
orderOf_dvd_card_univ
→ orderOf_dvd_card
orderOf_subgroup
→ Subgroup.orderOf
Subgroup.nonempty
→ Subgroup.coe_nonempty
@@ -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
@@ -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
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>
@@ -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
@@ -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
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.
@@ -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
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.
@@ -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]
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
@@ -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
@@ -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') :
@@ -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⟩
@@ -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
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>
@@ -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) :=
Monoid.Coprod
(#2214)
Monoid.Coprod
.@[to_additive]
.@@ -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?
@@ -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
@@ -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
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.
@@ -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
@@ -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]
@@ -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]
@@ -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
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.
@@ -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
@@ -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
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>
@@ -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
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -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]
@@ -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
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>
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
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
@@ -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
@@ -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
@@ -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
@@ -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 (· + ·)
@@ -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
@@ -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)))
I forgot to put some required to_additive
s in Lean3, I am currently backporting this change in leanprover-community/mathlib#19168.
Co-authored-by: Eric Rodriguez <37984851+ericrbg@users.noreply.github.com>
@@ -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
@@ -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
@@ -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)))
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>
@@ -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
fix-comments.py
on all files.@@ -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⟩⟩
@@ -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
sSup
/iSup
(#3938)
As discussed on Zulip
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>
@@ -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 :=
by
s! (#3825)
This PR puts, with one exception, every single remaining by
that lies all by itself on its own line to the previous line, thus matching the current behaviour of start-port.sh
. The exception is when the by
begins the second or later argument to a tuple or anonymous constructor; see https://github.com/leanprover-community/mathlib4/pull/3825#discussion_r1186702599.
Essentially this is s/\n *by$/ by/g
, but with manual editing to satisfy the linter's max-100-char-line requirement. The Python style linter is also modified to catch these "isolated by
s".
@@ -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⁻¹
closes #3680, see https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Stepping.20through.20simp_rw/near/326712986
@@ -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
This PR fixes two things:
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.#align
statements. (This was needed for a script I wrote for #3630.)@@ -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 :=
Subgroup.subtype
(#3254)
Mathlib 3: https://github.com/leanprover-community/mathlib/pull/18712
@@ -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
initialize_simps_projections
automatically find coercions if there is a Funlike
or SetLike
instance defined by one of the projections.SetLike
coercionsNot yet implemented (and rarely - if ever - used in mathlib3):
+
,*
,...)Co-authored-by: Johan Commelin <johan@commelin.net>
@@ -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)]
I generalized some lemmas from additive subgroups of the real numbers to additive subgroups of an archimedean additive group.
@@ -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. -/
@@ -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)
units.embedding_val₀
(#2590)
Forward-port #18536
group_theory.subgroup.basic
@1f0096e6caa61e9c849ec2adbd227e960e9dff58
..c10e724be91096453ee3db13862b9fb9a992fef2
group_theory.subgroup.pointwise
@59694bd07f0a39c5beccba34bd9f413a160782bf
..c10e724be91096453ee3db13862b9fb9a992fef2
topology.algebra.constructions
@d90e4e186f1d18e375dcd4e5b5f6364b01cb3e46
..c10e724be91096453ee3db13862b9fb9a992fef2
topology.algebra.group.basic
@dc6c365e751e34d100e80fe6e314c3c3e0fd2988
..c10e724be91096453ee3db13862b9fb9a992fef2
topology.algebra.group_with_zero
@48085f140e684306f9e7da907cd5932056d1aded
..c10e724be91096453ee3db13862b9fb9a992fef2
@@ -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''
@@ -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
@@ -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
initialize_simps_projections
now by default generates all projections of all parent structures, and doesn't generate the projections to those parent structures.TwoPointed
)Internal changes:
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 97454284Co-authored-by: Johan Commelin <johan@commelin.net>
@@ -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 :=
@@ -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
@@ -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'⟩ }⟩
Needed to fix some mistranslation in another file but then it's smooth sailing.
@@ -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
simps
, just raises a linter error if you run simps
in a more expensive mode without writing !
.to_additive, simps
. Will do that systematically in future PR.OmegaCompletePartialOrder.ContinuousHom.ofMono
a bitCo-authored-by: Yury G. Kudryashov <urkud@urkud.name>
@@ -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
@@ -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] }
@@ -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 :=
@@ -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] }
This PR is the result of a slight variant on the following "algorithm"
_
and make all uppercase letters into lowercase_
and make all uppercase letters into lowercase(original_lean3_name, OriginalLean4Name)
#align
statement just before the next empty line#align
statement to have been inserted too early)@@ -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) :
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>
The unported dependencies are