group_theory.noncomm_pi_coprod
⟷
Mathlib.GroupTheory.NoncommPiCoprod
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -153,7 +153,7 @@ def noncommPiCoprodEquiv :
where
toFun ϕ := noncommPiCoprod ϕ.1 ϕ.2
invFun f :=
- ⟨fun i => f.comp (MonoidHom.single N i), fun i j hij x y =>
+ ⟨fun i => f.comp (MonoidHom.mulSingle N i), fun i j hij x y =>
Commute.map (Pi.mulSingle_commute hij x y) f⟩
left_inv ϕ := by ext; simp
right_inv f := pi_ext fun i x => by simp
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -6,7 +6,7 @@ Authors: Joachim Breitner
import GroupTheory.OrderOfElement
import Data.Finset.NoncommProd
import Data.Fintype.BigOperators
-import Data.Nat.Gcd.BigOperators
+import Data.Nat.GCD.BigOperators
import Order.SupIndep
#align_import group_theory.noncomm_pi_coprod from "leanprover-community/mathlib"@"ef7acf407d265ad4081c8998687e994fa80ba70c"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -66,7 +66,7 @@ theorem eq_one_of_noncommProd_eq_one_of_independent {ι : Type _} (s : Finset ι
induction' s using Finset.induction_on with i s hnmem ih
· simp
· have hcomm := comm.mono (Finset.coe_subset.2 <| Finset.subset_insert _ _)
- simp only [Finset.forall_mem_insert] at hmem
+ simp only [Finset.forall_mem_insert] at hmem
have hmem_bsupr : s.noncomm_prod f hcomm ∈ ⨆ i ∈ (s : Set ι), K i :=
by
refine' Subgroup.noncommProd_mem _ _ _
@@ -74,12 +74,12 @@ theorem eq_one_of_noncommProd_eq_one_of_independent {ι : Type _} (s : Finset ι
have : K x ≤ ⨆ i ∈ (s : Set ι), K i := le_iSup₂ x hx
exact this (hmem.2 x hx)
intro heq1
- rw [Finset.noncommProd_insert_of_not_mem _ _ _ _ hnmem] at heq1
+ rw [Finset.noncommProd_insert_of_not_mem _ _ _ _ hnmem] at heq1
have hnmem' : i ∉ (s : Set ι) := by simpa
obtain ⟨heq1i : f i = 1, heq1S : s.noncomm_prod f _ = 1⟩ :=
subgroup.disjoint_iff_mul_eq_one.mp (hind.disjoint_bsupr hnmem') hmem.1 hmem_bsupr heq1
intro i h
- simp only [Finset.mem_insert] at h
+ simp only [Finset.mem_insert] at h
rcases h with ⟨rfl | _⟩
· exact heq1i
· exact ih hcomm hmem.2 heq1S _ h
@@ -140,7 +140,7 @@ theorem noncommPiCoprod_mulSingle (i : ι) (y : N i) :
rw [Pi.mulSingle_eq_same]
rw [Finset.noncommProd_eq_pow_card]
· rw [one_pow]; exact mul_one _
- · intro j hj; simp only [Finset.mem_erase] at hj ; simp [hj]
+ · intro j hj; simp only [Finset.mem_erase] at hj; simp [hj]
#align monoid_hom.noncomm_pi_coprod_mul_single MonoidHom.noncommPiCoprod_mulSingle
#align add_monoid_hom.noncomm_pi_coprod_single AddMonoidHom.noncommPiCoprod_single
-/
@@ -226,7 +226,7 @@ theorem injective_noncommPiCoprod_of_independent
apply (MonoidHom.ker_eq_bot_iff _).mp
apply eq_bot_iff.mpr
intro f heq1
- change finset.univ.noncomm_prod (fun i => ϕ i (f i)) _ = 1 at heq1
+ change finset.univ.noncomm_prod (fun i => ϕ i (f i)) _ = 1 at heq1
change f = 1
have : ∀ i, i ∈ Finset.univ → ϕ i (f i) = 1 :=
Subgroup.eq_one_of_noncommProd_eq_one_of_independent _ _ _ _ hind (by simp) heq1
@@ -250,8 +250,8 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
rintro i
rw [disjoint_iff_inf_le]
rintro f ⟨hxi, hxp⟩
- dsimp at hxi hxp
- rw [iSup_subtype', ← noncomm_pi_coprod_range] at hxp
+ dsimp at hxi hxp
+ rw [iSup_subtype', ← noncomm_pi_coprod_range] at hxp
rotate_left
· intro _ _ hj; apply hcomm; exact hj ∘ Subtype.ext
cases' hxp with g hgf
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -60,7 +60,29 @@ generalizes (one direction of) `subgroup.disjoint_iff_mul_eq_one`. -/
"`finset.noncomm_sum` is “injective” in `f` if `f` maps into independent subgroups.\nThis generalizes (one direction of) `add_subgroup.disjoint_iff_add_eq_zero`. "]
theorem eq_one_of_noncommProd_eq_one_of_independent {ι : Type _} (s : Finset ι) (f : ι → G) (comm)
(K : ι → Subgroup G) (hind : CompleteLattice.Independent K) (hmem : ∀ x ∈ s, f x ∈ K x)
- (heq1 : s.noncommProd f comm = 1) : ∀ i ∈ s, f i = 1 := by classical
+ (heq1 : s.noncommProd f comm = 1) : ∀ i ∈ s, f i = 1 := by
+ classical
+ revert heq1
+ induction' s using Finset.induction_on with i s hnmem ih
+ · simp
+ · have hcomm := comm.mono (Finset.coe_subset.2 <| Finset.subset_insert _ _)
+ simp only [Finset.forall_mem_insert] at hmem
+ have hmem_bsupr : s.noncomm_prod f hcomm ∈ ⨆ i ∈ (s : Set ι), K i :=
+ by
+ refine' Subgroup.noncommProd_mem _ _ _
+ intro x hx
+ have : K x ≤ ⨆ i ∈ (s : Set ι), K i := le_iSup₂ x hx
+ exact this (hmem.2 x hx)
+ intro heq1
+ rw [Finset.noncommProd_insert_of_not_mem _ _ _ _ hnmem] at heq1
+ have hnmem' : i ∉ (s : Set ι) := by simpa
+ obtain ⟨heq1i : f i = 1, heq1S : s.noncomm_prod f _ = 1⟩ :=
+ subgroup.disjoint_iff_mul_eq_one.mp (hind.disjoint_bsupr hnmem') hmem.1 hmem_bsupr heq1
+ intro i h
+ simp only [Finset.mem_insert] at h
+ rcases h with ⟨rfl | _⟩
+ · exact heq1i
+ · exact ih hcomm hmem.2 heq1S _ h
#align subgroup.eq_one_of_noncomm_prod_eq_one_of_independent Subgroup.eq_one_of_noncommProd_eq_one_of_independent
#align add_subgroup.eq_zero_of_noncomm_sum_eq_zero_of_independent AddSubgroup.eq_zero_of_noncommSum_eq_zero_of_independent
-/
@@ -96,7 +118,11 @@ def noncommPiCoprod : (∀ i : ι, N i) →* M
where
toFun f := Finset.univ.noncommProd (fun i => ϕ i (f i)) fun i _ j _ h => hcomm h _ _
map_one' := by apply (Finset.noncommProd_eq_pow_card _ _ _ _ _).trans (one_pow _); simp
- map_mul' f g := by classical
+ map_mul' f g := by
+ classical
+ convert @Finset.noncommProd_mul_distrib _ _ _ _ (fun i => ϕ i (f i)) (fun i => ϕ i (g i)) _ _ _
+ · ext i; exact map_mul (ϕ i) (f i) (g i)
+ · rintro i - j - h; exact hcomm h _ _
#align monoid_hom.noncomm_pi_coprod MonoidHom.noncommPiCoprod
#align add_monoid_hom.noncomm_pi_coprod AddMonoidHom.noncommPiCoprod
-/
@@ -139,6 +165,15 @@ def noncommPiCoprodEquiv :
@[to_additive]
theorem noncommPiCoprod_mrange : (noncommPiCoprod ϕ hcomm).mrange = ⨆ i : ι, (ϕ i).mrange := by
classical
+ apply le_antisymm
+ · rintro x ⟨f, rfl⟩
+ refine' Submonoid.noncommProd_mem _ _ _ _ _
+ intro i hi
+ apply Submonoid.mem_sSup_of_mem; · use i
+ simp
+ · refine' iSup_le _
+ rintro i x ⟨y, rfl⟩
+ refine' ⟨Pi.mulSingle i y, noncomm_pi_coprod_mul_single _ _ _⟩
#align monoid_hom.noncomm_pi_coprod_mrange MonoidHom.noncommPiCoprod_mrange
#align add_monoid_hom.noncomm_pi_coprod_mrange AddMonoidHom.noncommPiCoprod_mrange
-/
@@ -169,6 +204,15 @@ namespace MonoidHom
@[to_additive]
theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (ϕ i).range := by
classical
+ apply le_antisymm
+ · rintro x ⟨f, rfl⟩
+ refine' Subgroup.noncommProd_mem _ _ _
+ intro i hi
+ apply Subgroup.mem_sSup_of_mem; · use i
+ simp
+ · refine' iSup_le _
+ rintro i x ⟨y, rfl⟩
+ refine' ⟨Pi.mulSingle i y, noncomm_pi_coprod_mul_single _ _ _⟩
#align monoid_hom.noncomm_pi_coprod_range MonoidHom.noncommPiCoprod_range
#align add_monoid_hom.noncomm_pi_coprod_range AddMonoidHom.noncommPiCoprod_range
-/
@@ -179,6 +223,16 @@ theorem injective_noncommPiCoprod_of_independent
(hind : CompleteLattice.Independent fun i => (ϕ i).range)
(hinj : ∀ i, Function.Injective (ϕ i)) : Function.Injective (noncommPiCoprod ϕ hcomm) := by
classical
+ apply (MonoidHom.ker_eq_bot_iff _).mp
+ apply eq_bot_iff.mpr
+ intro f heq1
+ change finset.univ.noncomm_prod (fun i => ϕ i (f i)) _ = 1 at heq1
+ change f = 1
+ have : ∀ i, i ∈ Finset.univ → ϕ i (f i) = 1 :=
+ Subgroup.eq_one_of_noncommProd_eq_one_of_independent _ _ _ _ hind (by simp) heq1
+ ext i
+ apply hinj
+ simp [this i (Finset.mem_univ i)]
#align monoid_hom.injective_noncomm_pi_coprod_of_independent MonoidHom.injective_noncommPiCoprod_of_independent
#align add_monoid_hom.injective_noncomm_pi_coprod_of_independent AddMonoidHom.injective_noncommPiCoprod_of_independent
-/
@@ -193,6 +247,27 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
by
cases nonempty_fintype ι
classical
+ rintro i
+ rw [disjoint_iff_inf_le]
+ rintro f ⟨hxi, hxp⟩
+ dsimp at hxi hxp
+ rw [iSup_subtype', ← noncomm_pi_coprod_range] at hxp
+ rotate_left
+ · intro _ _ hj; apply hcomm; exact hj ∘ Subtype.ext
+ cases' hxp with g hgf
+ cases' hxi with g' hg'f
+ have hxi : orderOf f ∣ Fintype.card (H i) := by rw [← hg'f];
+ exact (orderOf_map_dvd _ _).trans orderOf_dvd_card
+ have hxp : orderOf f ∣ ∏ j : { j // j ≠ i }, Fintype.card (H j) := by
+ rw [← hgf, ← Fintype.card_pi]; exact (orderOf_map_dvd _ _).trans orderOf_dvd_card
+ change f = 1
+ rw [← pow_one f, ← orderOf_dvd_iff_pow_eq_one]
+ convert ← Nat.dvd_gcd hxp hxi
+ rw [← Nat.coprime_iff_gcd_eq_one]
+ apply Nat.Coprime.prod_left
+ intro j _
+ apply hcoprime
+ exact j.2
#align monoid_hom.independent_range_of_coprime_order MonoidHom.independent_range_of_coprime_order
#align add_monoid_hom.independent_range_of_coprime_order AddMonoidHom.independent_range_of_coprime_order
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -60,29 +60,7 @@ generalizes (one direction of) `subgroup.disjoint_iff_mul_eq_one`. -/
"`finset.noncomm_sum` is “injective” in `f` if `f` maps into independent subgroups.\nThis generalizes (one direction of) `add_subgroup.disjoint_iff_add_eq_zero`. "]
theorem eq_one_of_noncommProd_eq_one_of_independent {ι : Type _} (s : Finset ι) (f : ι → G) (comm)
(K : ι → Subgroup G) (hind : CompleteLattice.Independent K) (hmem : ∀ x ∈ s, f x ∈ K x)
- (heq1 : s.noncommProd f comm = 1) : ∀ i ∈ s, f i = 1 := by
- classical
- revert heq1
- induction' s using Finset.induction_on with i s hnmem ih
- · simp
- · have hcomm := comm.mono (Finset.coe_subset.2 <| Finset.subset_insert _ _)
- simp only [Finset.forall_mem_insert] at hmem
- have hmem_bsupr : s.noncomm_prod f hcomm ∈ ⨆ i ∈ (s : Set ι), K i :=
- by
- refine' Subgroup.noncommProd_mem _ _ _
- intro x hx
- have : K x ≤ ⨆ i ∈ (s : Set ι), K i := le_iSup₂ x hx
- exact this (hmem.2 x hx)
- intro heq1
- rw [Finset.noncommProd_insert_of_not_mem _ _ _ _ hnmem] at heq1
- have hnmem' : i ∉ (s : Set ι) := by simpa
- obtain ⟨heq1i : f i = 1, heq1S : s.noncomm_prod f _ = 1⟩ :=
- subgroup.disjoint_iff_mul_eq_one.mp (hind.disjoint_bsupr hnmem') hmem.1 hmem_bsupr heq1
- intro i h
- simp only [Finset.mem_insert] at h
- rcases h with ⟨rfl | _⟩
- · exact heq1i
- · exact ih hcomm hmem.2 heq1S _ h
+ (heq1 : s.noncommProd f comm = 1) : ∀ i ∈ s, f i = 1 := by classical
#align subgroup.eq_one_of_noncomm_prod_eq_one_of_independent Subgroup.eq_one_of_noncommProd_eq_one_of_independent
#align add_subgroup.eq_zero_of_noncomm_sum_eq_zero_of_independent AddSubgroup.eq_zero_of_noncommSum_eq_zero_of_independent
-/
@@ -118,11 +96,7 @@ def noncommPiCoprod : (∀ i : ι, N i) →* M
where
toFun f := Finset.univ.noncommProd (fun i => ϕ i (f i)) fun i _ j _ h => hcomm h _ _
map_one' := by apply (Finset.noncommProd_eq_pow_card _ _ _ _ _).trans (one_pow _); simp
- map_mul' f g := by
- classical
- convert @Finset.noncommProd_mul_distrib _ _ _ _ (fun i => ϕ i (f i)) (fun i => ϕ i (g i)) _ _ _
- · ext i; exact map_mul (ϕ i) (f i) (g i)
- · rintro i - j - h; exact hcomm h _ _
+ map_mul' f g := by classical
#align monoid_hom.noncomm_pi_coprod MonoidHom.noncommPiCoprod
#align add_monoid_hom.noncomm_pi_coprod AddMonoidHom.noncommPiCoprod
-/
@@ -165,15 +139,6 @@ def noncommPiCoprodEquiv :
@[to_additive]
theorem noncommPiCoprod_mrange : (noncommPiCoprod ϕ hcomm).mrange = ⨆ i : ι, (ϕ i).mrange := by
classical
- apply le_antisymm
- · rintro x ⟨f, rfl⟩
- refine' Submonoid.noncommProd_mem _ _ _ _ _
- intro i hi
- apply Submonoid.mem_sSup_of_mem; · use i
- simp
- · refine' iSup_le _
- rintro i x ⟨y, rfl⟩
- refine' ⟨Pi.mulSingle i y, noncomm_pi_coprod_mul_single _ _ _⟩
#align monoid_hom.noncomm_pi_coprod_mrange MonoidHom.noncommPiCoprod_mrange
#align add_monoid_hom.noncomm_pi_coprod_mrange AddMonoidHom.noncommPiCoprod_mrange
-/
@@ -204,15 +169,6 @@ namespace MonoidHom
@[to_additive]
theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (ϕ i).range := by
classical
- apply le_antisymm
- · rintro x ⟨f, rfl⟩
- refine' Subgroup.noncommProd_mem _ _ _
- intro i hi
- apply Subgroup.mem_sSup_of_mem; · use i
- simp
- · refine' iSup_le _
- rintro i x ⟨y, rfl⟩
- refine' ⟨Pi.mulSingle i y, noncomm_pi_coprod_mul_single _ _ _⟩
#align monoid_hom.noncomm_pi_coprod_range MonoidHom.noncommPiCoprod_range
#align add_monoid_hom.noncomm_pi_coprod_range AddMonoidHom.noncommPiCoprod_range
-/
@@ -223,16 +179,6 @@ theorem injective_noncommPiCoprod_of_independent
(hind : CompleteLattice.Independent fun i => (ϕ i).range)
(hinj : ∀ i, Function.Injective (ϕ i)) : Function.Injective (noncommPiCoprod ϕ hcomm) := by
classical
- apply (MonoidHom.ker_eq_bot_iff _).mp
- apply eq_bot_iff.mpr
- intro f heq1
- change finset.univ.noncomm_prod (fun i => ϕ i (f i)) _ = 1 at heq1
- change f = 1
- have : ∀ i, i ∈ Finset.univ → ϕ i (f i) = 1 :=
- Subgroup.eq_one_of_noncommProd_eq_one_of_independent _ _ _ _ hind (by simp) heq1
- ext i
- apply hinj
- simp [this i (Finset.mem_univ i)]
#align monoid_hom.injective_noncomm_pi_coprod_of_independent MonoidHom.injective_noncommPiCoprod_of_independent
#align add_monoid_hom.injective_noncomm_pi_coprod_of_independent AddMonoidHom.injective_noncommPiCoprod_of_independent
-/
@@ -247,27 +193,6 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
by
cases nonempty_fintype ι
classical
- rintro i
- rw [disjoint_iff_inf_le]
- rintro f ⟨hxi, hxp⟩
- dsimp at hxi hxp
- rw [iSup_subtype', ← noncomm_pi_coprod_range] at hxp
- rotate_left
- · intro _ _ hj; apply hcomm; exact hj ∘ Subtype.ext
- cases' hxp with g hgf
- cases' hxi with g' hg'f
- have hxi : orderOf f ∣ Fintype.card (H i) := by rw [← hg'f];
- exact (orderOf_map_dvd _ _).trans orderOf_dvd_card
- have hxp : orderOf f ∣ ∏ j : { j // j ≠ i }, Fintype.card (H j) := by
- rw [← hgf, ← Fintype.card_pi]; exact (orderOf_map_dvd _ _).trans orderOf_dvd_card
- change f = 1
- rw [← pow_one f, ← orderOf_dvd_iff_pow_eq_one]
- convert ← Nat.dvd_gcd hxp hxi
- rw [← Nat.coprime_iff_gcd_eq_one]
- apply Nat.Coprime.prod_left
- intro j _
- apply hcoprime
- exact j.2
#align monoid_hom.independent_range_of_coprime_order MonoidHom.independent_range_of_coprime_order
#align add_monoid_hom.independent_range_of_coprime_order AddMonoidHom.independent_range_of_coprime_order
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -264,7 +264,7 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
rw [← pow_one f, ← orderOf_dvd_iff_pow_eq_one]
convert ← Nat.dvd_gcd hxp hxi
rw [← Nat.coprime_iff_gcd_eq_one]
- apply Nat.coprime_prod_left
+ apply Nat.Coprime.prod_left
intro j _
apply hcoprime
exact j.2
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -297,7 +297,7 @@ theorem commute_subtype_of_commute (i j : ι) (hne : i ≠ j) :
∀ (x : H i) (y : H j), Commute ((H i).Subtype x) ((H j).Subtype y) := by rintro ⟨x, hx⟩ ⟨y, hy⟩;
exact hcomm i j hne x y hx hy
#align subgroup.commute_subtype_of_commute Subgroup.commute_subtype_of_commute
-#align add_subgroup.commute_subtype_of_commute AddSubgroup.commute_subtype_of_commute
+#align add_subgroup.commute_subtype_of_commute AddSubgroup.addCommute_subtype_of_addCommute
-/
#print Subgroup.noncommPiCoprod /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -257,9 +257,9 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
cases' hxp with g hgf
cases' hxi with g' hg'f
have hxi : orderOf f ∣ Fintype.card (H i) := by rw [← hg'f];
- exact (orderOf_map_dvd _ _).trans orderOf_dvd_card_univ
+ exact (orderOf_map_dvd _ _).trans orderOf_dvd_card
have hxp : orderOf f ∣ ∏ j : { j // j ≠ i }, Fintype.card (H j) := by
- rw [← hgf, ← Fintype.card_pi]; exact (orderOf_map_dvd _ _).trans orderOf_dvd_card_univ
+ rw [← hgf, ← Fintype.card_pi]; exact (orderOf_map_dvd _ _).trans orderOf_dvd_card
change f = 1
rw [← pow_one f, ← orderOf_dvd_iff_pow_eq_one]
convert ← Nat.dvd_gcd hxp hxi
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,11 +3,11 @@ Copyright (c) 2022 Joachim Breitner. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joachim Breitner
-/
-import Mathbin.GroupTheory.OrderOfElement
-import Mathbin.Data.Finset.NoncommProd
-import Mathbin.Data.Fintype.BigOperators
-import Mathbin.Data.Nat.Gcd.BigOperators
-import Mathbin.Order.SupIndep
+import GroupTheory.OrderOfElement
+import Data.Finset.NoncommProd
+import Data.Fintype.BigOperators
+import Data.Nat.Gcd.BigOperators
+import Order.SupIndep
#align_import group_theory.noncomm_pi_coprod from "leanprover-community/mathlib"@"ef7acf407d265ad4081c8998687e994fa80ba70c"
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -242,7 +242,7 @@ variable (hcomm)
#print MonoidHom.independent_range_of_coprime_order /-
@[to_additive]
theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
- (hcoprime : ∀ i j, i ≠ j → Nat.coprime (Fintype.card (H i)) (Fintype.card (H j))) :
+ (hcoprime : ∀ i j, i ≠ j → Nat.Coprime (Fintype.card (H i)) (Fintype.card (H j))) :
CompleteLattice.Independent fun i => (ϕ i).range :=
by
cases nonempty_fintype ι
@@ -346,7 +346,7 @@ variable (hcomm)
#print Subgroup.independent_of_coprime_order /-
@[to_additive]
theorem independent_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
- (hcoprime : ∀ i j, i ≠ j → Nat.coprime (Fintype.card (H i)) (Fintype.card (H j))) :
+ (hcoprime : ∀ i j, i ≠ j → Nat.Coprime (Fintype.card (H i)) (Fintype.card (H j))) :
CompleteLattice.Independent H := by
simpa using
MonoidHom.independent_range_of_coprime_order (fun i => (H i).Subtype)
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,11 +2,6 @@
Copyright (c) 2022 Joachim Breitner. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joachim Breitner
-
-! This file was ported from Lean 3 source module group_theory.noncomm_pi_coprod
-! leanprover-community/mathlib commit ef7acf407d265ad4081c8998687e994fa80ba70c
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.GroupTheory.OrderOfElement
import Mathbin.Data.Finset.NoncommProd
@@ -14,6 +9,8 @@ import Mathbin.Data.Fintype.BigOperators
import Mathbin.Data.Nat.Gcd.BigOperators
import Mathbin.Order.SupIndep
+#align_import group_theory.noncomm_pi_coprod from "leanprover-community/mathlib"@"ef7acf407d265ad4081c8998687e994fa80ba70c"
+
/-!
# Canonical homomorphism from a finite family of monoids
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -56,6 +56,7 @@ namespace Subgroup
variable {G : Type _} [Group G]
+#print Subgroup.eq_one_of_noncommProd_eq_one_of_independent /-
/-- `finset.noncomm_prod` is “injective” in `f` if `f` maps into independent subgroups. This
generalizes (one direction of) `subgroup.disjoint_iff_mul_eq_one`. -/
@[to_additive
@@ -87,6 +88,7 @@ theorem eq_one_of_noncommProd_eq_one_of_independent {ι : Type _} (s : Finset ι
· exact ih hcomm hmem.2 heq1S _ h
#align subgroup.eq_one_of_noncomm_prod_eq_one_of_independent Subgroup.eq_one_of_noncommProd_eq_one_of_independent
#align add_subgroup.eq_zero_of_noncomm_sum_eq_zero_of_independent AddSubgroup.eq_zero_of_noncommSum_eq_zero_of_independent
+-/
end Subgroup
@@ -106,13 +108,12 @@ variable (ϕ : ∀ i : ι, N i →* M)
-- We assume that the elements of different morphism commute
variable (hcomm : Pairwise fun i j => ∀ x y, Commute (ϕ i x) (ϕ j y))
-include hcomm
-
-- We use `f` and `g` to denote elements of `Π (i : ι), N i`
variable (f g : ∀ i : ι, N i)
namespace MonoidHom
+#print MonoidHom.noncommPiCoprod /-
/-- The canonical homomorphism from a family of monoids. -/
@[to_additive
"The canonical homomorphism from a family of additive monoids.\n\nSee also `linear_map.lsum` for a linear version without the commutativity assumption."]
@@ -127,11 +128,11 @@ def noncommPiCoprod : (∀ i : ι, N i) →* M
· rintro i - j - h; exact hcomm h _ _
#align monoid_hom.noncomm_pi_coprod MonoidHom.noncommPiCoprod
#align add_monoid_hom.noncomm_pi_coprod AddMonoidHom.noncommPiCoprod
+-/
variable {hcomm}
-include hdec
-
+#print MonoidHom.noncommPiCoprod_mulSingle /-
@[simp, to_additive]
theorem noncommPiCoprod_mulSingle (i : ι) (y : N i) :
noncommPiCoprod ϕ hcomm (Pi.mulSingle i y) = ϕ i y :=
@@ -145,9 +146,9 @@ theorem noncommPiCoprod_mulSingle (i : ι) (y : N i) :
· intro j hj; simp only [Finset.mem_erase] at hj ; simp [hj]
#align monoid_hom.noncomm_pi_coprod_mul_single MonoidHom.noncommPiCoprod_mulSingle
#align add_monoid_hom.noncomm_pi_coprod_single AddMonoidHom.noncommPiCoprod_single
+-/
-omit hcomm
-
+#print MonoidHom.noncommPiCoprodEquiv /-
/-- The universal property of `noncomm_pi_coprod` -/
@[to_additive "The universal property of `noncomm_pi_coprod`"]
def noncommPiCoprodEquiv :
@@ -161,11 +162,9 @@ def noncommPiCoprodEquiv :
right_inv f := pi_ext fun i x => by simp
#align monoid_hom.noncomm_pi_coprod_equiv MonoidHom.noncommPiCoprodEquiv
#align add_monoid_hom.noncomm_pi_coprod_equiv AddMonoidHom.noncommPiCoprodEquiv
+-/
-omit hdec
-
-include hcomm
-
+#print MonoidHom.noncommPiCoprod_mrange /-
@[to_additive]
theorem noncommPiCoprod_mrange : (noncommPiCoprod ϕ hcomm).mrange = ⨆ i : ι, (ϕ i).mrange := by
classical
@@ -180,6 +179,7 @@ theorem noncommPiCoprod_mrange : (noncommPiCoprod ϕ hcomm).mrange = ⨆ i : ι,
refine' ⟨Pi.mulSingle i y, noncomm_pi_coprod_mul_single _ _ _⟩
#align monoid_hom.noncomm_pi_coprod_mrange MonoidHom.noncommPiCoprod_mrange
#align add_monoid_hom.noncomm_pi_coprod_mrange AddMonoidHom.noncommPiCoprod_mrange
+-/
end MonoidHom
@@ -197,15 +197,12 @@ variable (ϕ : ∀ i : ι, H i →* G)
variable {hcomm : ∀ i j : ι, i ≠ j → ∀ (x : H i) (y : H j), Commute (ϕ i x) (ϕ j y)}
-include hcomm
-
-- We use `f` and `g` to denote elements of `Π (i : ι), H i`
variable (f g : ∀ i : ι, H i)
-include hfin
-
namespace MonoidHom
+#print MonoidHom.noncommPiCoprod_range /-
-- The subgroup version of `noncomm_pi_coprod_mrange`
@[to_additive]
theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (ϕ i).range := by
@@ -221,7 +218,9 @@ theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (
refine' ⟨Pi.mulSingle i y, noncomm_pi_coprod_mul_single _ _ _⟩
#align monoid_hom.noncomm_pi_coprod_range MonoidHom.noncommPiCoprod_range
#align add_monoid_hom.noncomm_pi_coprod_range AddMonoidHom.noncommPiCoprod_range
+-/
+#print MonoidHom.injective_noncommPiCoprod_of_independent /-
@[to_additive]
theorem injective_noncommPiCoprod_of_independent
(hind : CompleteLattice.Independent fun i => (ϕ i).range)
@@ -239,11 +238,11 @@ theorem injective_noncommPiCoprod_of_independent
simp [this i (Finset.mem_univ i)]
#align monoid_hom.injective_noncomm_pi_coprod_of_independent MonoidHom.injective_noncommPiCoprod_of_independent
#align add_monoid_hom.injective_noncomm_pi_coprod_of_independent AddMonoidHom.injective_noncommPiCoprod_of_independent
+-/
variable (hcomm)
-omit hfin
-
+#print MonoidHom.independent_range_of_coprime_order /-
@[to_additive]
theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
(hcoprime : ∀ i j, i ≠ j → Nat.coprime (Fintype.card (H i)) (Fintype.card (H j))) :
@@ -274,6 +273,7 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
exact j.2
#align monoid_hom.independent_range_of_coprime_order MonoidHom.independent_range_of_coprime_order
#align add_monoid_hom.independent_range_of_coprime_order AddMonoidHom.independent_range_of_coprime_order
+-/
end MonoidHom
@@ -294,17 +294,16 @@ section CommutingSubgroups
-- We assume that the elements of different subgroups commute
variable (hcomm : ∀ i j : ι, i ≠ j → ∀ x y : G, x ∈ H i → y ∈ H j → Commute x y)
-include hcomm
-
+#print Subgroup.commute_subtype_of_commute /-
@[to_additive]
theorem commute_subtype_of_commute (i j : ι) (hne : i ≠ j) :
∀ (x : H i) (y : H j), Commute ((H i).Subtype x) ((H j).Subtype y) := by rintro ⟨x, hx⟩ ⟨y, hy⟩;
exact hcomm i j hne x y hx hy
#align subgroup.commute_subtype_of_commute Subgroup.commute_subtype_of_commute
#align add_subgroup.commute_subtype_of_commute AddSubgroup.commute_subtype_of_commute
+-/
-include hfin
-
+#print Subgroup.noncommPiCoprod /-
/-- The canonical homomorphism from a family of subgroups where elements from different subgroups
commute -/
@[to_additive
@@ -313,25 +312,27 @@ def noncommPiCoprod : (∀ i : ι, H i) →* G :=
MonoidHom.noncommPiCoprod (fun i => (H i).Subtype) (commute_subtype_of_commute hcomm)
#align subgroup.noncomm_pi_coprod Subgroup.noncommPiCoprod
#align add_subgroup.noncomm_pi_coprod AddSubgroup.noncommPiCoprod
+-/
variable {hcomm}
-include hdec
-
+#print Subgroup.noncommPiCoprod_mulSingle /-
@[simp, to_additive]
theorem noncommPiCoprod_mulSingle (i : ι) (y : H i) :
noncommPiCoprod hcomm (Pi.mulSingle i y) = y := by apply MonoidHom.noncommPiCoprod_mulSingle
#align subgroup.noncomm_pi_coprod_mul_single Subgroup.noncommPiCoprod_mulSingle
#align add_subgroup.noncomm_pi_coprod_single AddSubgroup.noncommPiCoprod_single
+-/
-omit hdec
-
+#print Subgroup.noncommPiCoprod_range /-
@[to_additive]
theorem noncommPiCoprod_range : (noncommPiCoprod hcomm).range = ⨆ i : ι, H i := by
simp [noncomm_pi_coprod, MonoidHom.noncommPiCoprod_range]
#align subgroup.noncomm_pi_coprod_range Subgroup.noncommPiCoprod_range
#align add_subgroup.noncomm_pi_coprod_range AddSubgroup.noncommPiCoprod_range
+-/
+#print Subgroup.injective_noncommPiCoprod_of_independent /-
@[to_additive]
theorem injective_noncommPiCoprod_of_independent (hind : CompleteLattice.Independent H) :
Function.Injective (noncommPiCoprod hcomm) :=
@@ -341,11 +342,11 @@ theorem injective_noncommPiCoprod_of_independent (hind : CompleteLattice.Indepen
· intro i; exact Subtype.coe_injective
#align subgroup.injective_noncomm_pi_coprod_of_independent Subgroup.injective_noncommPiCoprod_of_independent
#align add_subgroup.injective_noncomm_pi_coprod_of_independent AddSubgroup.injective_noncommPiCoprod_of_independent
+-/
variable (hcomm)
-omit hfin
-
+#print Subgroup.independent_of_coprime_order /-
@[to_additive]
theorem independent_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
(hcoprime : ∀ i j, i ≠ j → Nat.coprime (Fintype.card (H i)) (Fintype.card (H j))) :
@@ -355,6 +356,7 @@ theorem independent_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
(commute_subtype_of_commute hcomm) hcoprime
#align subgroup.independent_of_coprime_order Subgroup.independent_of_coprime_order
#align add_subgroup.independent_of_coprime_order AddSubgroup.independent_of_coprime_order
+-/
end CommutingSubgroups
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -64,27 +64,27 @@ theorem eq_one_of_noncommProd_eq_one_of_independent {ι : Type _} (s : Finset ι
(K : ι → Subgroup G) (hind : CompleteLattice.Independent K) (hmem : ∀ x ∈ s, f x ∈ K x)
(heq1 : s.noncommProd f comm = 1) : ∀ i ∈ s, f i = 1 := by
classical
- revert heq1
- induction' s using Finset.induction_on with i s hnmem ih
- · simp
- · have hcomm := comm.mono (Finset.coe_subset.2 <| Finset.subset_insert _ _)
- simp only [Finset.forall_mem_insert] at hmem
- have hmem_bsupr : s.noncomm_prod f hcomm ∈ ⨆ i ∈ (s : Set ι), K i :=
- by
- refine' Subgroup.noncommProd_mem _ _ _
- intro x hx
- have : K x ≤ ⨆ i ∈ (s : Set ι), K i := le_iSup₂ x hx
- exact this (hmem.2 x hx)
- intro heq1
- rw [Finset.noncommProd_insert_of_not_mem _ _ _ _ hnmem] at heq1
- have hnmem' : i ∉ (s : Set ι) := by simpa
- obtain ⟨heq1i : f i = 1, heq1S : s.noncomm_prod f _ = 1⟩ :=
- subgroup.disjoint_iff_mul_eq_one.mp (hind.disjoint_bsupr hnmem') hmem.1 hmem_bsupr heq1
- intro i h
- simp only [Finset.mem_insert] at h
- rcases h with ⟨rfl | _⟩
- · exact heq1i
- · exact ih hcomm hmem.2 heq1S _ h
+ revert heq1
+ induction' s using Finset.induction_on with i s hnmem ih
+ · simp
+ · have hcomm := comm.mono (Finset.coe_subset.2 <| Finset.subset_insert _ _)
+ simp only [Finset.forall_mem_insert] at hmem
+ have hmem_bsupr : s.noncomm_prod f hcomm ∈ ⨆ i ∈ (s : Set ι), K i :=
+ by
+ refine' Subgroup.noncommProd_mem _ _ _
+ intro x hx
+ have : K x ≤ ⨆ i ∈ (s : Set ι), K i := le_iSup₂ x hx
+ exact this (hmem.2 x hx)
+ intro heq1
+ rw [Finset.noncommProd_insert_of_not_mem _ _ _ _ hnmem] at heq1
+ have hnmem' : i ∉ (s : Set ι) := by simpa
+ obtain ⟨heq1i : f i = 1, heq1S : s.noncomm_prod f _ = 1⟩ :=
+ subgroup.disjoint_iff_mul_eq_one.mp (hind.disjoint_bsupr hnmem') hmem.1 hmem_bsupr heq1
+ intro i h
+ simp only [Finset.mem_insert] at h
+ rcases h with ⟨rfl | _⟩
+ · exact heq1i
+ · exact ih hcomm hmem.2 heq1S _ h
#align subgroup.eq_one_of_noncomm_prod_eq_one_of_independent Subgroup.eq_one_of_noncommProd_eq_one_of_independent
#align add_subgroup.eq_zero_of_noncomm_sum_eq_zero_of_independent AddSubgroup.eq_zero_of_noncommSum_eq_zero_of_independent
@@ -122,9 +122,9 @@ def noncommPiCoprod : (∀ i : ι, N i) →* M
map_one' := by apply (Finset.noncommProd_eq_pow_card _ _ _ _ _).trans (one_pow _); simp
map_mul' f g := by
classical
- convert@Finset.noncommProd_mul_distrib _ _ _ _ (fun i => ϕ i (f i)) (fun i => ϕ i (g i)) _ _ _
- · ext i; exact map_mul (ϕ i) (f i) (g i)
- · rintro i - j - h; exact hcomm h _ _
+ convert @Finset.noncommProd_mul_distrib _ _ _ _ (fun i => ϕ i (f i)) (fun i => ϕ i (g i)) _ _ _
+ · ext i; exact map_mul (ϕ i) (f i) (g i)
+ · rintro i - j - h; exact hcomm h _ _
#align monoid_hom.noncomm_pi_coprod MonoidHom.noncommPiCoprod
#align add_monoid_hom.noncomm_pi_coprod AddMonoidHom.noncommPiCoprod
@@ -169,15 +169,15 @@ include hcomm
@[to_additive]
theorem noncommPiCoprod_mrange : (noncommPiCoprod ϕ hcomm).mrange = ⨆ i : ι, (ϕ i).mrange := by
classical
- apply le_antisymm
- · rintro x ⟨f, rfl⟩
- refine' Submonoid.noncommProd_mem _ _ _ _ _
- intro i hi
- apply Submonoid.mem_sSup_of_mem; · use i
- simp
- · refine' iSup_le _
- rintro i x ⟨y, rfl⟩
- refine' ⟨Pi.mulSingle i y, noncomm_pi_coprod_mul_single _ _ _⟩
+ apply le_antisymm
+ · rintro x ⟨f, rfl⟩
+ refine' Submonoid.noncommProd_mem _ _ _ _ _
+ intro i hi
+ apply Submonoid.mem_sSup_of_mem; · use i
+ simp
+ · refine' iSup_le _
+ rintro i x ⟨y, rfl⟩
+ refine' ⟨Pi.mulSingle i y, noncomm_pi_coprod_mul_single _ _ _⟩
#align monoid_hom.noncomm_pi_coprod_mrange MonoidHom.noncommPiCoprod_mrange
#align add_monoid_hom.noncomm_pi_coprod_mrange AddMonoidHom.noncommPiCoprod_mrange
@@ -210,15 +210,15 @@ namespace MonoidHom
@[to_additive]
theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (ϕ i).range := by
classical
- apply le_antisymm
- · rintro x ⟨f, rfl⟩
- refine' Subgroup.noncommProd_mem _ _ _
- intro i hi
- apply Subgroup.mem_sSup_of_mem; · use i
- simp
- · refine' iSup_le _
- rintro i x ⟨y, rfl⟩
- refine' ⟨Pi.mulSingle i y, noncomm_pi_coprod_mul_single _ _ _⟩
+ apply le_antisymm
+ · rintro x ⟨f, rfl⟩
+ refine' Subgroup.noncommProd_mem _ _ _
+ intro i hi
+ apply Subgroup.mem_sSup_of_mem; · use i
+ simp
+ · refine' iSup_le _
+ rintro i x ⟨y, rfl⟩
+ refine' ⟨Pi.mulSingle i y, noncomm_pi_coprod_mul_single _ _ _⟩
#align monoid_hom.noncomm_pi_coprod_range MonoidHom.noncommPiCoprod_range
#align add_monoid_hom.noncomm_pi_coprod_range AddMonoidHom.noncommPiCoprod_range
@@ -227,16 +227,16 @@ theorem injective_noncommPiCoprod_of_independent
(hind : CompleteLattice.Independent fun i => (ϕ i).range)
(hinj : ∀ i, Function.Injective (ϕ i)) : Function.Injective (noncommPiCoprod ϕ hcomm) := by
classical
- apply (MonoidHom.ker_eq_bot_iff _).mp
- apply eq_bot_iff.mpr
- intro f heq1
- change finset.univ.noncomm_prod (fun i => ϕ i (f i)) _ = 1 at heq1
- change f = 1
- have : ∀ i, i ∈ Finset.univ → ϕ i (f i) = 1 :=
- Subgroup.eq_one_of_noncommProd_eq_one_of_independent _ _ _ _ hind (by simp) heq1
- ext i
- apply hinj
- simp [this i (Finset.mem_univ i)]
+ apply (MonoidHom.ker_eq_bot_iff _).mp
+ apply eq_bot_iff.mpr
+ intro f heq1
+ change finset.univ.noncomm_prod (fun i => ϕ i (f i)) _ = 1 at heq1
+ change f = 1
+ have : ∀ i, i ∈ Finset.univ → ϕ i (f i) = 1 :=
+ Subgroup.eq_one_of_noncommProd_eq_one_of_independent _ _ _ _ hind (by simp) heq1
+ ext i
+ apply hinj
+ simp [this i (Finset.mem_univ i)]
#align monoid_hom.injective_noncomm_pi_coprod_of_independent MonoidHom.injective_noncommPiCoprod_of_independent
#align add_monoid_hom.injective_noncomm_pi_coprod_of_independent AddMonoidHom.injective_noncommPiCoprod_of_independent
@@ -251,27 +251,27 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
by
cases nonempty_fintype ι
classical
- rintro i
- rw [disjoint_iff_inf_le]
- rintro f ⟨hxi, hxp⟩
- dsimp at hxi hxp
- rw [iSup_subtype', ← noncomm_pi_coprod_range] at hxp
- rotate_left
- · intro _ _ hj; apply hcomm; exact hj ∘ Subtype.ext
- cases' hxp with g hgf
- cases' hxi with g' hg'f
- have hxi : orderOf f ∣ Fintype.card (H i) := by rw [← hg'f];
- exact (orderOf_map_dvd _ _).trans orderOf_dvd_card_univ
- have hxp : orderOf f ∣ ∏ j : { j // j ≠ i }, Fintype.card (H j) := by
- rw [← hgf, ← Fintype.card_pi]; exact (orderOf_map_dvd _ _).trans orderOf_dvd_card_univ
- change f = 1
- rw [← pow_one f, ← orderOf_dvd_iff_pow_eq_one]
- convert← Nat.dvd_gcd hxp hxi
- rw [← Nat.coprime_iff_gcd_eq_one]
- apply Nat.coprime_prod_left
- intro j _
- apply hcoprime
- exact j.2
+ rintro i
+ rw [disjoint_iff_inf_le]
+ rintro f ⟨hxi, hxp⟩
+ dsimp at hxi hxp
+ rw [iSup_subtype', ← noncomm_pi_coprod_range] at hxp
+ rotate_left
+ · intro _ _ hj; apply hcomm; exact hj ∘ Subtype.ext
+ cases' hxp with g hgf
+ cases' hxi with g' hg'f
+ have hxi : orderOf f ∣ Fintype.card (H i) := by rw [← hg'f];
+ exact (orderOf_map_dvd _ _).trans orderOf_dvd_card_univ
+ have hxp : orderOf f ∣ ∏ j : { j // j ≠ i }, Fintype.card (H j) := by
+ rw [← hgf, ← Fintype.card_pi]; exact (orderOf_map_dvd _ _).trans orderOf_dvd_card_univ
+ change f = 1
+ rw [← pow_one f, ← orderOf_dvd_iff_pow_eq_one]
+ convert ← Nat.dvd_gcd hxp hxi
+ rw [← Nat.coprime_iff_gcd_eq_one]
+ apply Nat.coprime_prod_left
+ intro j _
+ apply hcoprime
+ exact j.2
#align monoid_hom.independent_range_of_coprime_order MonoidHom.independent_range_of_coprime_order
#align add_monoid_hom.independent_range_of_coprime_order AddMonoidHom.independent_range_of_coprime_order
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -68,7 +68,7 @@ theorem eq_one_of_noncommProd_eq_one_of_independent {ι : Type _} (s : Finset ι
induction' s using Finset.induction_on with i s hnmem ih
· simp
· have hcomm := comm.mono (Finset.coe_subset.2 <| Finset.subset_insert _ _)
- simp only [Finset.forall_mem_insert] at hmem
+ simp only [Finset.forall_mem_insert] at hmem
have hmem_bsupr : s.noncomm_prod f hcomm ∈ ⨆ i ∈ (s : Set ι), K i :=
by
refine' Subgroup.noncommProd_mem _ _ _
@@ -76,12 +76,12 @@ theorem eq_one_of_noncommProd_eq_one_of_independent {ι : Type _} (s : Finset ι
have : K x ≤ ⨆ i ∈ (s : Set ι), K i := le_iSup₂ x hx
exact this (hmem.2 x hx)
intro heq1
- rw [Finset.noncommProd_insert_of_not_mem _ _ _ _ hnmem] at heq1
+ rw [Finset.noncommProd_insert_of_not_mem _ _ _ _ hnmem] at heq1
have hnmem' : i ∉ (s : Set ι) := by simpa
obtain ⟨heq1i : f i = 1, heq1S : s.noncomm_prod f _ = 1⟩ :=
subgroup.disjoint_iff_mul_eq_one.mp (hind.disjoint_bsupr hnmem') hmem.1 hmem_bsupr heq1
intro i h
- simp only [Finset.mem_insert] at h
+ simp only [Finset.mem_insert] at h
rcases h with ⟨rfl | _⟩
· exact heq1i
· exact ih hcomm hmem.2 heq1S _ h
@@ -142,7 +142,7 @@ theorem noncommPiCoprod_mulSingle (i : ι) (y : N i) :
rw [Pi.mulSingle_eq_same]
rw [Finset.noncommProd_eq_pow_card]
· rw [one_pow]; exact mul_one _
- · intro j hj; simp only [Finset.mem_erase] at hj; simp [hj]
+ · intro j hj; simp only [Finset.mem_erase] at hj ; simp [hj]
#align monoid_hom.noncomm_pi_coprod_mul_single MonoidHom.noncommPiCoprod_mulSingle
#align add_monoid_hom.noncomm_pi_coprod_single AddMonoidHom.noncommPiCoprod_single
@@ -230,7 +230,7 @@ theorem injective_noncommPiCoprod_of_independent
apply (MonoidHom.ker_eq_bot_iff _).mp
apply eq_bot_iff.mpr
intro f heq1
- change finset.univ.noncomm_prod (fun i => ϕ i (f i)) _ = 1 at heq1
+ change finset.univ.noncomm_prod (fun i => ϕ i (f i)) _ = 1 at heq1
change f = 1
have : ∀ i, i ∈ Finset.univ → ϕ i (f i) = 1 :=
Subgroup.eq_one_of_noncommProd_eq_one_of_independent _ _ _ _ hind (by simp) heq1
@@ -254,8 +254,8 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
rintro i
rw [disjoint_iff_inf_le]
rintro f ⟨hxi, hxp⟩
- dsimp at hxi hxp
- rw [iSup_subtype', ← noncomm_pi_coprod_range] at hxp
+ dsimp at hxi hxp
+ rw [iSup_subtype', ← noncomm_pi_coprod_range] at hxp
rotate_left
· intro _ _ hj; apply hcomm; exact hj ∘ Subtype.ext
cases' hxp with g hgf
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -50,7 +50,7 @@ images of different morphisms commute, we obtain a canonical morphism
-/
-open BigOperators
+open scoped BigOperators
namespace Subgroup
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -56,12 +56,6 @@ namespace Subgroup
variable {G : Type _} [Group G]
-/- warning: subgroup.eq_one_of_noncomm_prod_eq_one_of_independent -> Subgroup.eq_one_of_noncommProd_eq_one_of_independent is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} (s : Finset.{u2} ι) (f : ι -> G) (comm : Set.Pairwise.{u2} ι ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} ι) (Set.{u2} ι) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} ι) (Set.{u2} ι) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} ι) (Set.{u2} ι) (Finset.Set.hasCoeT.{u2} ι))) s) (fun (a : ι) (b : ι) => Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (f a) (f b))) (K : ι -> (Subgroup.{u1} G _inst_1)), (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) K) -> (forall (x : ι), (Membership.Mem.{u2, u2} ι (Finset.{u2} ι) (Finset.hasMem.{u2} ι) 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)) (f x) (K x))) -> (Eq.{succ u1} G (Finset.noncommProd.{u2, u1} ι G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) s f comm) (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 (i : ι), (Membership.Mem.{u2, u2} ι (Finset.{u2} ι) (Finset.hasMem.{u2} ι) i s) -> (Eq.{succ u1} G (f i) (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] {ι : Type.{u2}} (s : Finset.{u2} ι) (f : ι -> G) (comm : Set.Pairwise.{u2} ι (Finset.toSet.{u2} ι s) (fun (a : ι) (b : ι) => Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (f a) (f b))) (K : ι -> (Subgroup.{u1} G _inst_1)), (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) K) -> (forall (x : ι), (Membership.mem.{u2, u2} ι (Finset.{u2} ι) (Finset.instMembershipFinset.{u2} ι) 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)) (f x) (K x))) -> (Eq.{succ u1} G (Finset.noncommProd.{u2, u1} ι G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) s f comm) (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 (i : ι), (Membership.mem.{u2, u2} ι (Finset.{u2} ι) (Finset.instMembershipFinset.{u2} ι) i s) -> (Eq.{succ u1} G (f i) (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_one_of_noncomm_prod_eq_one_of_independent Subgroup.eq_one_of_noncommProd_eq_one_of_independentₓ'. -/
/-- `finset.noncomm_prod` is “injective” in `f` if `f` maps into independent subgroups. This
generalizes (one direction of) `subgroup.disjoint_iff_mul_eq_one`. -/
@[to_additive
@@ -119,12 +113,6 @@ variable (f g : ∀ i : ι, N i)
namespace MonoidHom
-/- warning: monoid_hom.noncomm_pi_coprod -> MonoidHom.noncommPiCoprod is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)), (Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y))) -> (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)), (Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (MulOneClass.toMul.{u3} (N i) (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N j) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (MulOneClass.toMul.{u3} (N j) (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ j) y))) -> (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod MonoidHom.noncommPiCoprodₓ'. -/
/-- The canonical homomorphism from a family of monoids. -/
@[to_additive
"The canonical homomorphism from a family of additive monoids.\n\nSee also `linear_map.lsum` for a linear version without the commutativity assumption."]
@@ -144,9 +132,6 @@ variable {hcomm}
include hdec
-/- warning: monoid_hom.noncomm_pi_coprod_mul_single -> MonoidHom.noncommPiCoprod_mulSingle is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_mul_single MonoidHom.noncommPiCoprod_mulSingleₓ'. -/
@[simp, to_additive]
theorem noncommPiCoprod_mulSingle (i : ι) (y : N i) :
noncommPiCoprod ϕ hcomm (Pi.mulSingle i y) = ϕ i y :=
@@ -163,9 +148,6 @@ theorem noncommPiCoprod_mulSingle (i : ι) (y : N i) :
omit hcomm
-/- warning: monoid_hom.noncomm_pi_coprod_equiv -> MonoidHom.noncommPiCoprodEquiv is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_equiv MonoidHom.noncommPiCoprodEquivₓ'. -/
/-- The universal property of `noncomm_pi_coprod` -/
@[to_additive "The universal property of `noncomm_pi_coprod`"]
def noncommPiCoprodEquiv :
@@ -184,9 +166,6 @@ omit hdec
include hcomm
-/- warning: monoid_hom.noncomm_pi_coprod_mrange -> MonoidHom.noncommPiCoprod_mrange is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_mrange MonoidHom.noncommPiCoprod_mrangeₓ'. -/
@[to_additive]
theorem noncommPiCoprod_mrange : (noncommPiCoprod ϕ hcomm).mrange = ⨆ i : ι, (ϕ i).mrange := by
classical
@@ -227,9 +206,6 @@ include hfin
namespace MonoidHom
-/- warning: monoid_hom.noncomm_pi_coprod_range -> MonoidHom.noncommPiCoprod_range is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_range MonoidHom.noncommPiCoprod_rangeₓ'. -/
-- The subgroup version of `noncomm_pi_coprod_mrange`
@[to_additive]
theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (ϕ i).range := by
@@ -246,9 +222,6 @@ theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (
#align monoid_hom.noncomm_pi_coprod_range MonoidHom.noncommPiCoprod_range
#align add_monoid_hom.noncomm_pi_coprod_range AddMonoidHom.noncommPiCoprod_range
-/- warning: monoid_hom.injective_noncomm_pi_coprod_of_independent -> MonoidHom.injective_noncommPiCoprod_of_independent is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.injective_noncomm_pi_coprod_of_independent MonoidHom.injective_noncommPiCoprod_of_independentₓ'. -/
@[to_additive]
theorem injective_noncommPiCoprod_of_independent
(hind : CompleteLattice.Independent fun i => (ϕ i).range)
@@ -271,9 +244,6 @@ variable (hcomm)
omit hfin
-/- warning: monoid_hom.independent_range_of_coprime_order -> MonoidHom.independent_range_of_coprime_order is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.independent_range_of_coprime_order MonoidHom.independent_range_of_coprime_orderₓ'. -/
@[to_additive]
theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
(hcoprime : ∀ i j, i ≠ j → Nat.coprime (Fintype.card (H i)) (Fintype.card (H j))) :
@@ -326,9 +296,6 @@ variable (hcomm : ∀ i j : ι, i ≠ j → ∀ x y : G, x ∈ H i → y ∈ H j
include hcomm
-/- warning: subgroup.commute_subtype_of_commute -> Subgroup.commute_subtype_of_commute is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup.commute_subtype_of_commute Subgroup.commute_subtype_of_commuteₓ'. -/
@[to_additive]
theorem commute_subtype_of_commute (i j : ι) (hne : i ≠ j) :
∀ (x : H i) (y : H j), Commute ((H i).Subtype x) ((H j).Subtype y) := by rintro ⟨x, hx⟩ ⟨y, hy⟩;
@@ -338,12 +305,6 @@ theorem commute_subtype_of_commute (i j : ι) (hne : i ≠ j) :
include hfin
-/- warning: subgroup.noncomm_pi_coprod -> Subgroup.noncommPiCoprod is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Subgroup.toGroup.{u1} G _inst_1 (H i)))))) (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] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))
-Case conversion may be inaccurate. Consider using '#align subgroup.noncomm_pi_coprod Subgroup.noncommPiCoprodₓ'. -/
/-- The canonical homomorphism from a family of subgroups where elements from different subgroups
commute -/
@[to_additive
@@ -357,9 +318,6 @@ variable {hcomm}
include hdec
-/- warning: subgroup.noncomm_pi_coprod_mul_single -> Subgroup.noncommPiCoprod_mulSingle is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup.noncomm_pi_coprod_mul_single Subgroup.noncommPiCoprod_mulSingleₓ'. -/
@[simp, to_additive]
theorem noncommPiCoprod_mulSingle (i : ι) (y : H i) :
noncommPiCoprod hcomm (Pi.mulSingle i y) = y := by apply MonoidHom.noncommPiCoprod_mulSingle
@@ -368,21 +326,12 @@ theorem noncommPiCoprod_mulSingle (i : ι) (y : H i) :
omit hdec
-/- warning: subgroup.noncomm_pi_coprod_range -> Subgroup.noncommPiCoprod_range is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))}, Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.range.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Pi.group.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (fun (i : ι) => Subgroup.toGroup.{u1} G _inst_1 (H i))) G _inst_1 (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm)) (iSup.{u1, succ u2} (Subgroup.{u1} G _inst_1) (ConditionallyCompleteLattice.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => H i))
-but is expected to have type
- forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u1}} [hfin : DecidableEq.{succ u1} ι] [H : Fintype.{u1} ι] {hcomm : ι -> (Subgroup.{u2} G _inst_1)} {hcomm_1 : forall (i : ι) (j : ι), (Ne.{succ u1} ι i j) -> (forall (x : G) (y : G), (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (hcomm i)) -> (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) y (hcomm j)) -> (Commute.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) x y))}, Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.range.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (hcomm i))) (Pi.group.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (hcomm i))) (fun (i : ι) => Subgroup.toGroup.{u2} G _inst_1 (hcomm i))) G _inst_1 (Subgroup.noncommPiCoprod.{u2, u1} G _inst_1 ι H (fun (i : ι) => hcomm i) hcomm_1)) (iSup.{u2, succ u1} (Subgroup.{u2} G _inst_1) (ConditionallyCompleteLattice.toSupSet.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))) ι (fun (i : ι) => hcomm i))
-Case conversion may be inaccurate. Consider using '#align subgroup.noncomm_pi_coprod_range Subgroup.noncommPiCoprod_rangeₓ'. -/
@[to_additive]
theorem noncommPiCoprod_range : (noncommPiCoprod hcomm).range = ⨆ i : ι, H i := by
simp [noncomm_pi_coprod, MonoidHom.noncommPiCoprod_range]
#align subgroup.noncomm_pi_coprod_range Subgroup.noncommPiCoprod_range
#align add_subgroup.noncomm_pi_coprod_range AddSubgroup.noncommPiCoprod_range
-/- warning: subgroup.injective_noncomm_pi_coprod_of_independent -> Subgroup.injective_noncommPiCoprod_of_independent is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup.injective_noncomm_pi_coprod_of_independent Subgroup.injective_noncommPiCoprod_of_independentₓ'. -/
@[to_additive]
theorem injective_noncommPiCoprod_of_independent (hind : CompleteLattice.Independent H) :
Function.Injective (noncommPiCoprod hcomm) :=
@@ -397,12 +346,6 @@ variable (hcomm)
omit hfin
-/- warning: subgroup.independent_of_coprime_order -> Subgroup.independent_of_coprime_order is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (forall [_inst_2 : Finite.{succ u2} ι] [_inst_3 : forall (i : ι), Fintype.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i))], (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (Nat.coprime (Fintype.card.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (_inst_3 i)) (Fintype.card.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (_inst_3 j)))) -> (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) H))
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [H : DecidableEq.{succ u2} ι] {hcomm : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 (hcomm 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)) y (hcomm j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (forall [_inst_3 : Finite.{succ u2} ι] [hcoprime : forall (i : ι), Fintype.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (hcomm i)))], (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (Nat.coprime (Fintype.card.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (hcomm i))) (hcoprime i)) (Fintype.card.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (hcomm j))) (hcoprime j)))) -> (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) hcomm))
-Case conversion may be inaccurate. Consider using '#align subgroup.independent_of_coprime_order Subgroup.independent_of_coprime_orderₓ'. -/
@[to_additive]
theorem independent_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
(hcoprime : ∀ i j, i ≠ j → Nat.coprime (Fintype.card (H i)) (Fintype.card (H j))) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -131,16 +131,12 @@ Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_
def noncommPiCoprod : (∀ i : ι, N i) →* M
where
toFun f := Finset.univ.noncommProd (fun i => ϕ i (f i)) fun i _ j _ h => hcomm h _ _
- map_one' := by
- apply (Finset.noncommProd_eq_pow_card _ _ _ _ _).trans (one_pow _)
- simp
+ map_one' := by apply (Finset.noncommProd_eq_pow_card _ _ _ _ _).trans (one_pow _); simp
map_mul' f g := by
classical
convert@Finset.noncommProd_mul_distrib _ _ _ _ (fun i => ϕ i (f i)) (fun i => ϕ i (g i)) _ _ _
- · ext i
- exact map_mul (ϕ i) (f i) (g i)
- · rintro i - j - h
- exact hcomm h _ _
+ · ext i; exact map_mul (ϕ i) (f i) (g i)
+ · rintro i - j - h; exact hcomm h _ _
#align monoid_hom.noncomm_pi_coprod MonoidHom.noncommPiCoprod
#align add_monoid_hom.noncomm_pi_coprod AddMonoidHom.noncommPiCoprod
@@ -160,11 +156,8 @@ theorem noncommPiCoprod_mulSingle (i : ι) (y : N i) :
rw [Finset.noncommProd_insert_of_not_mem _ _ _ _ (Finset.not_mem_erase i _)]
rw [Pi.mulSingle_eq_same]
rw [Finset.noncommProd_eq_pow_card]
- · rw [one_pow]
- exact mul_one _
- · intro j hj
- simp only [Finset.mem_erase] at hj
- simp [hj]
+ · rw [one_pow]; exact mul_one _
+ · intro j hj; simp only [Finset.mem_erase] at hj; simp [hj]
#align monoid_hom.noncomm_pi_coprod_mul_single MonoidHom.noncommPiCoprod_mulSingle
#align add_monoid_hom.noncomm_pi_coprod_single AddMonoidHom.noncommPiCoprod_single
@@ -182,9 +175,7 @@ def noncommPiCoprodEquiv :
invFun f :=
⟨fun i => f.comp (MonoidHom.single N i), fun i j hij x y =>
Commute.map (Pi.mulSingle_commute hij x y) f⟩
- left_inv ϕ := by
- ext
- simp
+ left_inv ϕ := by ext; simp
right_inv f := pi_ext fun i x => by simp
#align monoid_hom.noncomm_pi_coprod_equiv MonoidHom.noncommPiCoprodEquiv
#align add_monoid_hom.noncomm_pi_coprod_equiv AddMonoidHom.noncommPiCoprodEquiv
@@ -203,8 +194,7 @@ theorem noncommPiCoprod_mrange : (noncommPiCoprod ϕ hcomm).mrange = ⨆ i : ι,
· rintro x ⟨f, rfl⟩
refine' Submonoid.noncommProd_mem _ _ _ _ _
intro i hi
- apply Submonoid.mem_sSup_of_mem
- · use i
+ apply Submonoid.mem_sSup_of_mem; · use i
simp
· refine' iSup_le _
rintro i x ⟨y, rfl⟩
@@ -248,8 +238,7 @@ theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (
· rintro x ⟨f, rfl⟩
refine' Subgroup.noncommProd_mem _ _ _
intro i hi
- apply Subgroup.mem_sSup_of_mem
- · use i
+ apply Subgroup.mem_sSup_of_mem; · use i
simp
· refine' iSup_le _
rintro i x ⟨y, rfl⟩
@@ -298,19 +287,13 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
dsimp at hxi hxp
rw [iSup_subtype', ← noncomm_pi_coprod_range] at hxp
rotate_left
- · intro _ _ hj
- apply hcomm
- exact hj ∘ Subtype.ext
+ · intro _ _ hj; apply hcomm; exact hj ∘ Subtype.ext
cases' hxp with g hgf
cases' hxi with g' hg'f
- have hxi : orderOf f ∣ Fintype.card (H i) :=
- by
- rw [← hg'f]
- exact (orderOf_map_dvd _ _).trans orderOf_dvd_card_univ
- have hxp : orderOf f ∣ ∏ j : { j // j ≠ i }, Fintype.card (H j) :=
- by
- rw [← hgf, ← Fintype.card_pi]
+ have hxi : orderOf f ∣ Fintype.card (H i) := by rw [← hg'f];
exact (orderOf_map_dvd _ _).trans orderOf_dvd_card_univ
+ have hxp : orderOf f ∣ ∏ j : { j // j ≠ i }, Fintype.card (H j) := by
+ rw [← hgf, ← Fintype.card_pi]; exact (orderOf_map_dvd _ _).trans orderOf_dvd_card_univ
change f = 1
rw [← pow_one f, ← orderOf_dvd_iff_pow_eq_one]
convert← Nat.dvd_gcd hxp hxi
@@ -348,9 +331,7 @@ include hcomm
Case conversion may be inaccurate. Consider using '#align subgroup.commute_subtype_of_commute Subgroup.commute_subtype_of_commuteₓ'. -/
@[to_additive]
theorem commute_subtype_of_commute (i j : ι) (hne : i ≠ j) :
- ∀ (x : H i) (y : H j), Commute ((H i).Subtype x) ((H j).Subtype y) :=
- by
- rintro ⟨x, hx⟩ ⟨y, hy⟩
+ ∀ (x : H i) (y : H j), Commute ((H i).Subtype x) ((H j).Subtype y) := by rintro ⟨x, hx⟩ ⟨y, hy⟩;
exact hcomm i j hne x y hx hy
#align subgroup.commute_subtype_of_commute Subgroup.commute_subtype_of_commute
#align add_subgroup.commute_subtype_of_commute AddSubgroup.commute_subtype_of_commute
@@ -408,8 +389,7 @@ theorem injective_noncommPiCoprod_of_independent (hind : CompleteLattice.Indepen
by
apply MonoidHom.injective_noncommPiCoprod_of_independent
· simpa using hind
- · intro i
- exact Subtype.coe_injective
+ · intro i; exact Subtype.coe_injective
#align subgroup.injective_noncomm_pi_coprod_of_independent Subgroup.injective_noncommPiCoprod_of_independent
#align add_subgroup.injective_noncomm_pi_coprod_of_independent AddSubgroup.injective_noncommPiCoprod_of_independent
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -149,10 +149,7 @@ variable {hcomm}
include hdec
/- warning: monoid_hom.noncomm_pi_coprod_mul_single -> MonoidHom.noncommPiCoprod_mulSingle is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y))} (i : ι) (y : N i), Eq.{succ u1} M (coeFn.{max (succ u1) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u1)} (MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => N i) i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) ((fun (i : ι) => _inst_3 i) i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => N i) i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) ((fun (i : ι) => _inst_3 i) i))) (Monoid.toMulOneClass.{u1} M _inst_1)) => (forall (i : ι), (fun (i : ι) => N i) i) -> M) (MonoidHom.hasCoeToFun.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => N i) i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) ((fun (i : ι) => _inst_3 i) i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.noncommPiCoprod.{u1, u2, u3} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm) (Pi.mulSingle.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => MulOneClass.toHasOne.{u3} ((fun (i : ι) => N i) i) (Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) (_inst_3 i))) i y)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) y)
-but is expected to have type
- forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u1}} [_inst_3 : forall (i : ι), Monoid.{u1} (N i)] (ϕ : forall (i : ι), MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (MulOneClass.toMul.{u1} (N i) (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N j) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) M (MulOneClass.toMul.{u1} (N j) (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ j) y))} (i : ι) (y : N i), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : forall (i : ι), N i) => M) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => N i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Monoid.toOne.{u1} (N i) (_inst_3 i)) i y)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u2) (succ u1), succ u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) (fun (_x : forall (i : ι), N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : forall (i : ι), N i) => M) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, max u2 u1, u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) M (MulOneClass.toMul.{max u2 u1} (forall (i : ι), N i) (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max (max u3 u2) u1, max u2 u1, u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => N i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Monoid.toOne.{u1} (N i) (_inst_3 i)) i y)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (MulOneClass.toMul.{u1} (N i) (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ i) y)
+<too large>
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_mul_single MonoidHom.noncommPiCoprod_mulSingleₓ'. -/
@[simp, to_additive]
theorem noncommPiCoprod_mulSingle (i : ι) (y : N i) :
@@ -174,10 +171,7 @@ theorem noncommPiCoprod_mulSingle (i : ι) (y : N i) :
omit hcomm
/- warning: monoid_hom.noncomm_pi_coprod_equiv -> MonoidHom.noncommPiCoprodEquiv is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)], Equiv.{max 1 (succ u2) (succ u1) (succ u3), max (succ u1) (succ (max u2 u3))} (Subtype.{max (succ u2) (succ u1) (succ u3)} (forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y)))) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)], Equiv.{max 1 (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ (max u2 u3))} (Subtype.{max (max (succ u1) (succ u2)) (succ u3)} (forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (MulOneClass.toMul.{u3} (N i) (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N j) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (MulOneClass.toMul.{u3} (N j) (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ j) y)))) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
+<too large>
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_equiv MonoidHom.noncommPiCoprodEquivₓ'. -/
/-- The universal property of `noncomm_pi_coprod` -/
@[to_additive "The universal property of `noncomm_pi_coprod`"]
@@ -200,10 +194,7 @@ omit hdec
include hcomm
/- warning: monoid_hom.noncomm_pi_coprod_mrange -> MonoidHom.noncommPiCoprod_mrange is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y))}, Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.mrange.{max u2 u3, u1, max u1 u2 u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.noncommPiCoprod.{u1, u2, u3} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm)) (iSup.{u1, succ u2} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (ConditionallyCompleteLattice.toHasSup.{u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (Submonoid.completeLattice.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)))) ι (fun (i : ι) => MonoidHom.mrange.{u3, u1, max u1 u3} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i)))
-but is expected to have type
- forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [_inst_2 : DecidableEq.{succ u2} ι] [N : Fintype.{u2} ι] {_inst_3 : ι -> Type.{u1}} [ϕ : forall (i : ι), Monoid.{u1} (_inst_3 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm_1 : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : _inst_3 i) (y : _inst_3 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_3 i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_3 i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_3 i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) (fun (a : _inst_3 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_3 i) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (MulOneClass.toMul.{u1} (_inst_3 i) (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) (fun (a : _inst_3 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_3 j) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (MulOneClass.toMul.{u1} (_inst_3 j) (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm j) y))}, Eq.{succ u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.mrange.{max u2 u1, u3, max (max u1 u2) u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι N (fun (i : ι) => _inst_3 i) (fun (i : ι) => ϕ i) hcomm hcomm_1)) (iSup.{u3, succ u2} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (ConditionallyCompleteLattice.toSupSet.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (Submonoid.instCompleteLatticeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)))) ι (fun (i : ι) => MonoidHom.mrange.{u1, u3, max u3 u1} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (hcomm i)))
+<too large>
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_mrange MonoidHom.noncommPiCoprod_mrangeₓ'. -/
@[to_additive]
theorem noncommPiCoprod_mrange : (noncommPiCoprod ϕ hcomm).mrange = ⨆ i : ι, (ϕ i).mrange := by
@@ -247,10 +238,7 @@ include hfin
namespace MonoidHom
/- warning: monoid_hom.noncomm_pi_coprod_range -> MonoidHom.noncommPiCoprod_range is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> Type.{u3}} [_inst_2 : forall (i : ι), Group.{u3} (H i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : H i) (y : H j), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H j) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ j) y))}, Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.range.{max u2 u3, u1} (forall (i : ι), H i) (Pi.group.{u2, u3} ι (fun (i : ι) => H i) (fun (i : ι) => _inst_2 i)) G _inst_1 (MonoidHom.noncommPiCoprod.{u1, u2, u3} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) ϕ hcomm)) (iSup.{u1, succ u2} (Subgroup.{u1} G _inst_1) (ConditionallyCompleteLattice.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => MonoidHom.range.{u3, u1} (H i) (_inst_2 i) G _inst_1 (ϕ i)))
-but is expected to have type
- forall {G : Type.{u3}} [_inst_1 : Group.{u3} G] {ι : Type.{u2}} [hfin : DecidableEq.{succ u2} ι] [H : Fintype.{u2} ι] {_inst_2 : ι -> Type.{u1}} [ϕ : forall (i : ι), Group.{u1} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) {hcomm_1 : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u1} (_inst_2 i) (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u1} (_inst_2 j) (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm j) y))}, Eq.{succ u3} (Subgroup.{u3} G _inst_1) (MonoidHom.range.{max u2 u1, u3} (forall (i : ι), _inst_2 i) (Pi.group.{u2, u1} ι (fun (i : ι) => _inst_2 i) (fun (i : ι) => ϕ i)) G _inst_1 (MonoidHom.noncommPiCoprod.{u3, u2, u1} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) ι H (fun (i : ι) => _inst_2 i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))) hcomm hcomm_1)) (iSup.{u3, succ u2} (Subgroup.{u3} G _inst_1) (ConditionallyCompleteLattice.toSupSet.{u3} (Subgroup.{u3} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Subgroup.{u3} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u3} G _inst_1))) ι (fun (i : ι) => MonoidHom.range.{u1, u3} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i)))
+<too large>
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_range MonoidHom.noncommPiCoprod_rangeₓ'. -/
-- The subgroup version of `noncomm_pi_coprod_mrange`
@[to_additive]
@@ -270,10 +258,7 @@ theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (
#align add_monoid_hom.noncomm_pi_coprod_range AddMonoidHom.noncommPiCoprod_range
/- warning: monoid_hom.injective_noncomm_pi_coprod_of_independent -> MonoidHom.injective_noncommPiCoprod_of_independent is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> Type.{u3}} [_inst_2 : forall (i : ι), Group.{u3} (H i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : H i) (y : H j), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H j) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ j) y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u3, u1} (H i) (_inst_2 i) G _inst_1 (ϕ i))) -> (forall (i : ι), Function.Injective.{succ u3, succ u1} (H i) G (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i))) -> (Function.Injective.{max (succ u2) (succ u3), succ u1} (forall (i : ι), (fun (i : ι) => H i) i) G (coeFn.{max (succ u1) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u1)} (MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => H i) i) G (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => H i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => H i) i) ((fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => H i) i) G (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => H i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => H i) i) ((fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (forall (i : ι), (fun (i : ι) => H i) i) -> G) (MonoidHom.hasCoeToFun.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => H i) i) G (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => H i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => H i) i) ((fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHom.noncommPiCoprod.{u1, u2, u3} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) ϕ hcomm)))
-but is expected to have type
- forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u3}} [hfin : Fintype.{u3} ι] {H : ι -> Type.{u1}} [_inst_2 : forall (i : ι), Group.{u1} (H i)] (ϕ : forall (i : ι), MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (forall (x : H i) (y : H j), Commute.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : H i) => G) x) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : H i) => G) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : H i) => G) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : H i) => G) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : H i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) (fun (_x : H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : H i) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (MulOneClass.toMul.{u1} (H i) (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (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} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ i) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) (fun (_x : H j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : H j) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) G (MulOneClass.toMul.{u1} (H j) (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j))))) (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} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ j) y))}, (CompleteLattice.Independent.{succ u3, u2} ι (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1) (fun (i : ι) => MonoidHom.range.{u1, u2} (H i) (_inst_2 i) G _inst_1 (ϕ i))) -> (forall (i : ι), Function.Injective.{succ u1, succ u2} (H i) G (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) (fun (_x : H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : H i) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (MulOneClass.toMul.{u1} (H i) (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (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} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ i))) -> (Function.Injective.{max (succ u3) (succ u1), succ u2} (forall (i : ι), H i) G (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u3) (succ u1), succ u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) (fun (_x : forall (i : ι), H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : forall (i : ι), H i) => G) _x) (MulHomClass.toFunLike.{max (max u2 u3) u1, max u3 u1, u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) G (MulOneClass.toMul.{max u3 u1} (forall (i : ι), H i) (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max (max u2 u3) u1, max u3 u1, u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (MonoidHom.noncommPiCoprod.{u2, u3, u1} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))) ϕ hcomm)))
+<too large>
Case conversion may be inaccurate. Consider using '#align monoid_hom.injective_noncomm_pi_coprod_of_independent MonoidHom.injective_noncommPiCoprod_of_independentₓ'. -/
@[to_additive]
theorem injective_noncommPiCoprod_of_independent
@@ -298,10 +283,7 @@ variable (hcomm)
omit hfin
/- warning: monoid_hom.independent_range_of_coprime_order -> MonoidHom.independent_range_of_coprime_order is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> Type.{u3}} [_inst_2 : forall (i : ι), Group.{u3} (H i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : H i) (y : H j), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H j) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ j) y))) -> (forall [_inst_3 : Finite.{succ u2} ι] [_inst_4 : forall (i : ι), Fintype.{u3} (H i)], (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (Nat.coprime (Fintype.card.{u3} (H i) (_inst_4 i)) (Fintype.card.{u3} (H j) (_inst_4 j)))) -> (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u3, u1} (H i) (_inst_2 i) G _inst_1 (ϕ i))))
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u3}} [H : DecidableEq.{succ u3} ι] {_inst_2 : ι -> Type.{u2}} [ϕ : forall (i : ι), Group.{u2} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), (forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u2} (_inst_2 i) (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i))))) (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} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u2} (_inst_2 j) (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j))))) (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} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (hcomm j) y))) -> (forall [_inst_4 : Finite.{succ u3} ι] [hcoprime : forall (i : ι), Fintype.{u2} (_inst_2 i)], (forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (Nat.coprime (Fintype.card.{u2} (_inst_2 i) (hcoprime i)) (Fintype.card.{u2} (_inst_2 j) (hcoprime j)))) -> (CompleteLattice.Independent.{succ u3, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u2, u1} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i))))
+<too large>
Case conversion may be inaccurate. Consider using '#align monoid_hom.independent_range_of_coprime_order MonoidHom.independent_range_of_coprime_orderₓ'. -/
@[to_additive]
theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
@@ -362,10 +344,7 @@ variable (hcomm : ∀ i j : ι, i ≠ j → ∀ x y : G, x ∈ H i → y ∈ H j
include hcomm
/- warning: subgroup.commute_subtype_of_commute -> Subgroup.commute_subtype_of_commute is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (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 i)) (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 j)), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (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 i)) 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 i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Subgroup.toGroup.{u1} G _inst_1 (H i))))) (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 i)) 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 i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Subgroup.toGroup.{u1} G _inst_1 (H i))))) (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 i)) -> 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 i)) 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 i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Subgroup.toGroup.{u1} G _inst_1 (H i))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (H i)) x) (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 j)) 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 j)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Subgroup.toGroup.{u1} G _inst_1 (H j))))) (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 j)) 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 j)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Subgroup.toGroup.{u1} G _inst_1 (H j))))) (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 j)) -> 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 j)) 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 j)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Subgroup.toGroup.{u1} G _inst_1 (H j))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (H j)) y)))
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (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 i))) (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 j))), Commute.{u1} ((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 i))) => G) x) (MulOneClass.toMul.{u1} ((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 i))) => G) x) (Monoid.toMulOneClass.{u1} ((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 i))) => G) x) (DivInvMonoid.toMonoid.{u1} ((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 i))) => G) x) (Group.toDivInvMonoid.{u1} ((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 i))) => G) x) _inst_1)))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) (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 i))) => (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 i))) => 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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) 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 i))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (H i)) x) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) (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 j))) => (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 j))) => 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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) 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 j))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j)))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (H j)) y)))
+<too large>
Case conversion may be inaccurate. Consider using '#align subgroup.commute_subtype_of_commute Subgroup.commute_subtype_of_commuteₓ'. -/
@[to_additive]
theorem commute_subtype_of_commute (i j : ι) (hne : i ≠ j) :
@@ -398,10 +377,7 @@ variable {hcomm}
include hdec
/- warning: subgroup.noncomm_pi_coprod_mul_single -> Subgroup.noncommPiCoprod_mulSingle is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))} (i : ι) (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 i)), Eq.{succ u1} G (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ (max u2 u1)) (succ u1)} (MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) -> G) (MonoidHom.hasCoeToFun.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u1} G _inst_1 ((fun (i : ι) => H i) i)) i 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} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) 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 i)) 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 i)) 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 i)) 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 i)))))) y)
-but is expected to have type
- forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u1}} [hdec : DecidableEq.{succ u1} ι] [hfin : Fintype.{u1} ι] {H : ι -> (Subgroup.{u2} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u1} ι i j) -> (forall (x : G) (y : G), (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i)) -> (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) y (H j)) -> (Commute.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) x y))} (i : ι) (y : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => G) (Pi.mulSingle.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u2} G _inst_1 (H i)) i y)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), succ u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (_x : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => G) _x) (MulHomClass.toFunLike.{max u2 u1, max u2 u1, u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (MulOneClass.toMul.{max u2 u1} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, max u2 u1, u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (Subgroup.noncommPiCoprod.{u2, u1} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm) (Pi.mulSingle.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u2} G _inst_1 (H i)) i y)) (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 i))) y)
+<too large>
Case conversion may be inaccurate. Consider using '#align subgroup.noncomm_pi_coprod_mul_single Subgroup.noncommPiCoprod_mulSingleₓ'. -/
@[simp, to_additive]
theorem noncommPiCoprod_mulSingle (i : ι) (y : H i) :
@@ -424,10 +400,7 @@ theorem noncommPiCoprod_range : (noncommPiCoprod hcomm).range = ⨆ i : ι, H i
#align add_subgroup.noncomm_pi_coprod_range AddSubgroup.noncommPiCoprod_range
/- warning: subgroup.injective_noncomm_pi_coprod_of_independent -> Subgroup.injective_noncommPiCoprod_of_independent is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) H) -> (Function.Injective.{max (succ u2) (succ u1), succ u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ (max u2 u1)) (succ u1)} (MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) -> G) (MonoidHom.hasCoeToFun.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm)))
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) H) -> (Function.Injective.{max (succ u1) (succ u2), succ u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), succ u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (_x : forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) => G) _x) (MulHomClass.toFunLike.{max u1 u2, max u1 u2, u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (MulOneClass.toMul.{max u1 u2} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, max u1 u2, u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm)))
+<too large>
Case conversion may be inaccurate. Consider using '#align subgroup.injective_noncomm_pi_coprod_of_independent Subgroup.injective_noncommPiCoprod_of_independentₓ'. -/
@[to_additive]
theorem injective_noncommPiCoprod_of_independent (hind : CompleteLattice.Independent H) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -123,7 +123,7 @@ namespace MonoidHom
lean 3 declaration is
forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)), (Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y))) -> (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)), (Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (MulOneClass.toMul.{u3} (N i) (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N j) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (MulOneClass.toMul.{u3} (N j) (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ j) y))) -> (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
+ forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)), (Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (MulOneClass.toMul.{u3} (N i) (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N j) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (MulOneClass.toMul.{u3} (N j) (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ j) y))) -> (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod MonoidHom.noncommPiCoprodₓ'. -/
/-- The canonical homomorphism from a family of monoids. -/
@[to_additive
@@ -152,7 +152,7 @@ include hdec
lean 3 declaration is
forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y))} (i : ι) (y : N i), Eq.{succ u1} M (coeFn.{max (succ u1) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u1)} (MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => N i) i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) ((fun (i : ι) => _inst_3 i) i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => N i) i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) ((fun (i : ι) => _inst_3 i) i))) (Monoid.toMulOneClass.{u1} M _inst_1)) => (forall (i : ι), (fun (i : ι) => N i) i) -> M) (MonoidHom.hasCoeToFun.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => N i) i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) ((fun (i : ι) => _inst_3 i) i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.noncommPiCoprod.{u1, u2, u3} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm) (Pi.mulSingle.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => MulOneClass.toHasOne.{u3} ((fun (i : ι) => N i) i) (Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) (_inst_3 i))) i y)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) y)
but is expected to have type
- forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u1}} [_inst_3 : forall (i : ι), Monoid.{u1} (N i)] (ϕ : forall (i : ι), MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (MulOneClass.toMul.{u1} (N i) (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N j) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) M (MulOneClass.toMul.{u1} (N j) (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ j) y))} (i : ι) (y : N i), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : forall (i : ι), N i) => M) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => N i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Monoid.toOne.{u1} (N i) (_inst_3 i)) i y)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u2) (succ u1), succ u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) (fun (_x : forall (i : ι), N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : forall (i : ι), N i) => M) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, max u2 u1, u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) M (MulOneClass.toMul.{max u2 u1} (forall (i : ι), N i) (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max (max u3 u2) u1, max u2 u1, u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => N i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Monoid.toOne.{u1} (N i) (_inst_3 i)) i y)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (MulOneClass.toMul.{u1} (N i) (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ i) y)
+ forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u1}} [_inst_3 : forall (i : ι), Monoid.{u1} (N i)] (ϕ : forall (i : ι), MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (MulOneClass.toMul.{u1} (N i) (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N j) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) M (MulOneClass.toMul.{u1} (N j) (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ j) y))} (i : ι) (y : N i), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : forall (i : ι), N i) => M) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => N i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Monoid.toOne.{u1} (N i) (_inst_3 i)) i y)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u2) (succ u1), succ u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) (fun (_x : forall (i : ι), N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : forall (i : ι), N i) => M) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, max u2 u1, u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) M (MulOneClass.toMul.{max u2 u1} (forall (i : ι), N i) (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max (max u3 u2) u1, max u2 u1, u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => N i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Monoid.toOne.{u1} (N i) (_inst_3 i)) i y)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (MulOneClass.toMul.{u1} (N i) (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ i) y)
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_mul_single MonoidHom.noncommPiCoprod_mulSingleₓ'. -/
@[simp, to_additive]
theorem noncommPiCoprod_mulSingle (i : ι) (y : N i) :
@@ -177,7 +177,7 @@ omit hcomm
lean 3 declaration is
forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)], Equiv.{max 1 (succ u2) (succ u1) (succ u3), max (succ u1) (succ (max u2 u3))} (Subtype.{max (succ u2) (succ u1) (succ u3)} (forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y)))) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)], Equiv.{max 1 (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ (max u2 u3))} (Subtype.{max (max (succ u1) (succ u2)) (succ u3)} (forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (MulOneClass.toMul.{u3} (N i) (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N j) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (MulOneClass.toMul.{u3} (N j) (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ j) y)))) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
+ forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)], Equiv.{max 1 (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ (max u2 u3))} (Subtype.{max (max (succ u1) (succ u2)) (succ u3)} (forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N i) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (MulOneClass.toMul.{u3} (N i) (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N j) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (MulOneClass.toMul.{u3} (N j) (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ j) y)))) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_equiv MonoidHom.noncommPiCoprodEquivₓ'. -/
/-- The universal property of `noncomm_pi_coprod` -/
@[to_additive "The universal property of `noncomm_pi_coprod`"]
@@ -203,7 +203,7 @@ include hcomm
lean 3 declaration is
forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y))}, Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.mrange.{max u2 u3, u1, max u1 u2 u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.noncommPiCoprod.{u1, u2, u3} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm)) (iSup.{u1, succ u2} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (ConditionallyCompleteLattice.toHasSup.{u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (Submonoid.completeLattice.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)))) ι (fun (i : ι) => MonoidHom.mrange.{u3, u1, max u1 u3} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i)))
but is expected to have type
- forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [_inst_2 : DecidableEq.{succ u2} ι] [N : Fintype.{u2} ι] {_inst_3 : ι -> Type.{u1}} [ϕ : forall (i : ι), Monoid.{u1} (_inst_3 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm_1 : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : _inst_3 i) (y : _inst_3 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) (fun (a : _inst_3 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 i) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (MulOneClass.toMul.{u1} (_inst_3 i) (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) (fun (a : _inst_3 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 j) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (MulOneClass.toMul.{u1} (_inst_3 j) (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm j) y))}, Eq.{succ u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.mrange.{max u2 u1, u3, max (max u1 u2) u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι N (fun (i : ι) => _inst_3 i) (fun (i : ι) => ϕ i) hcomm hcomm_1)) (iSup.{u3, succ u2} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (ConditionallyCompleteLattice.toSupSet.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (Submonoid.instCompleteLatticeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)))) ι (fun (i : ι) => MonoidHom.mrange.{u1, u3, max u3 u1} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (hcomm i)))
+ forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [_inst_2 : DecidableEq.{succ u2} ι] [N : Fintype.{u2} ι] {_inst_3 : ι -> Type.{u1}} [ϕ : forall (i : ι), Monoid.{u1} (_inst_3 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm_1 : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : _inst_3 i) (y : _inst_3 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_3 i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_3 i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_3 i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) (fun (a : _inst_3 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_3 i) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (MulOneClass.toMul.{u1} (_inst_3 i) (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) (fun (a : _inst_3 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_3 j) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (MulOneClass.toMul.{u1} (_inst_3 j) (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm j) y))}, Eq.{succ u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.mrange.{max u2 u1, u3, max (max u1 u2) u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι N (fun (i : ι) => _inst_3 i) (fun (i : ι) => ϕ i) hcomm hcomm_1)) (iSup.{u3, succ u2} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (ConditionallyCompleteLattice.toSupSet.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (Submonoid.instCompleteLatticeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)))) ι (fun (i : ι) => MonoidHom.mrange.{u1, u3, max u3 u1} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (hcomm i)))
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_mrange MonoidHom.noncommPiCoprod_mrangeₓ'. -/
@[to_additive]
theorem noncommPiCoprod_mrange : (noncommPiCoprod ϕ hcomm).mrange = ⨆ i : ι, (ϕ i).mrange := by
@@ -250,7 +250,7 @@ namespace MonoidHom
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> Type.{u3}} [_inst_2 : forall (i : ι), Group.{u3} (H i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : H i) (y : H j), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H j) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ j) y))}, Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.range.{max u2 u3, u1} (forall (i : ι), H i) (Pi.group.{u2, u3} ι (fun (i : ι) => H i) (fun (i : ι) => _inst_2 i)) G _inst_1 (MonoidHom.noncommPiCoprod.{u1, u2, u3} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) ϕ hcomm)) (iSup.{u1, succ u2} (Subgroup.{u1} G _inst_1) (ConditionallyCompleteLattice.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => MonoidHom.range.{u3, u1} (H i) (_inst_2 i) G _inst_1 (ϕ i)))
but is expected to have type
- forall {G : Type.{u3}} [_inst_1 : Group.{u3} G] {ι : Type.{u2}} [hfin : DecidableEq.{succ u2} ι] [H : Fintype.{u2} ι] {_inst_2 : ι -> Type.{u1}} [ϕ : forall (i : ι), Group.{u1} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) {hcomm_1 : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u1} (_inst_2 i) (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u1} (_inst_2 j) (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm j) y))}, Eq.{succ u3} (Subgroup.{u3} G _inst_1) (MonoidHom.range.{max u2 u1, u3} (forall (i : ι), _inst_2 i) (Pi.group.{u2, u1} ι (fun (i : ι) => _inst_2 i) (fun (i : ι) => ϕ i)) G _inst_1 (MonoidHom.noncommPiCoprod.{u3, u2, u1} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) ι H (fun (i : ι) => _inst_2 i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))) hcomm hcomm_1)) (iSup.{u3, succ u2} (Subgroup.{u3} G _inst_1) (ConditionallyCompleteLattice.toSupSet.{u3} (Subgroup.{u3} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Subgroup.{u3} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u3} G _inst_1))) ι (fun (i : ι) => MonoidHom.range.{u1, u3} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i)))
+ forall {G : Type.{u3}} [_inst_1 : Group.{u3} G] {ι : Type.{u2}} [hfin : DecidableEq.{succ u2} ι] [H : Fintype.{u2} ι] {_inst_2 : ι -> Type.{u1}} [ϕ : forall (i : ι), Group.{u1} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) {hcomm_1 : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u1} (_inst_2 i) (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u1} (_inst_2 j) (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm j) y))}, Eq.{succ u3} (Subgroup.{u3} G _inst_1) (MonoidHom.range.{max u2 u1, u3} (forall (i : ι), _inst_2 i) (Pi.group.{u2, u1} ι (fun (i : ι) => _inst_2 i) (fun (i : ι) => ϕ i)) G _inst_1 (MonoidHom.noncommPiCoprod.{u3, u2, u1} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) ι H (fun (i : ι) => _inst_2 i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))) hcomm hcomm_1)) (iSup.{u3, succ u2} (Subgroup.{u3} G _inst_1) (ConditionallyCompleteLattice.toSupSet.{u3} (Subgroup.{u3} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Subgroup.{u3} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u3} G _inst_1))) ι (fun (i : ι) => MonoidHom.range.{u1, u3} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i)))
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_range MonoidHom.noncommPiCoprod_rangeₓ'. -/
-- The subgroup version of `noncomm_pi_coprod_mrange`
@[to_additive]
@@ -273,7 +273,7 @@ theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> Type.{u3}} [_inst_2 : forall (i : ι), Group.{u3} (H i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : H i) (y : H j), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H j) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ j) y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u3, u1} (H i) (_inst_2 i) G _inst_1 (ϕ i))) -> (forall (i : ι), Function.Injective.{succ u3, succ u1} (H i) G (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i))) -> (Function.Injective.{max (succ u2) (succ u3), succ u1} (forall (i : ι), (fun (i : ι) => H i) i) G (coeFn.{max (succ u1) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u1)} (MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => H i) i) G (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => H i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => H i) i) ((fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => H i) i) G (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => H i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => H i) i) ((fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (forall (i : ι), (fun (i : ι) => H i) i) -> G) (MonoidHom.hasCoeToFun.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => H i) i) G (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => H i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => H i) i) ((fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHom.noncommPiCoprod.{u1, u2, u3} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) ϕ hcomm)))
but is expected to have type
- forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u3}} [hfin : Fintype.{u3} ι] {H : ι -> Type.{u1}} [_inst_2 : forall (i : ι), Group.{u1} (H i)] (ϕ : forall (i : ι), MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (forall (x : H i) (y : H j), Commute.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : H i) => G) x) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : H i) => G) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : H i) => G) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : H i) => G) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : H i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) (fun (_x : H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : H i) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (MulOneClass.toMul.{u1} (H i) (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (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} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ i) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) (fun (_x : H j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : H j) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) G (MulOneClass.toMul.{u1} (H j) (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j))))) (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} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ j) y))}, (CompleteLattice.Independent.{succ u3, u2} ι (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1) (fun (i : ι) => MonoidHom.range.{u1, u2} (H i) (_inst_2 i) G _inst_1 (ϕ i))) -> (forall (i : ι), Function.Injective.{succ u1, succ u2} (H i) G (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) (fun (_x : H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : H i) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (MulOneClass.toMul.{u1} (H i) (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (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} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ i))) -> (Function.Injective.{max (succ u3) (succ u1), succ u2} (forall (i : ι), H i) G (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u3) (succ u1), succ u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) (fun (_x : forall (i : ι), H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : forall (i : ι), H i) => G) _x) (MulHomClass.toFunLike.{max (max u2 u3) u1, max u3 u1, u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) G (MulOneClass.toMul.{max u3 u1} (forall (i : ι), H i) (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max (max u2 u3) u1, max u3 u1, u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (MonoidHom.noncommPiCoprod.{u2, u3, u1} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))) ϕ hcomm)))
+ forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u3}} [hfin : Fintype.{u3} ι] {H : ι -> Type.{u1}} [_inst_2 : forall (i : ι), Group.{u1} (H i)] (ϕ : forall (i : ι), MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (forall (x : H i) (y : H j), Commute.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : H i) => G) x) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : H i) => G) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : H i) => G) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : H i) => G) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : H i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) (fun (_x : H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : H i) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (MulOneClass.toMul.{u1} (H i) (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (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} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ i) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) (fun (_x : H j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : H j) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) G (MulOneClass.toMul.{u1} (H j) (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j))))) (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} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ j) y))}, (CompleteLattice.Independent.{succ u3, u2} ι (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1) (fun (i : ι) => MonoidHom.range.{u1, u2} (H i) (_inst_2 i) G _inst_1 (ϕ i))) -> (forall (i : ι), Function.Injective.{succ u1, succ u2} (H i) G (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) (fun (_x : H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : H i) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (MulOneClass.toMul.{u1} (H i) (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (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} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ i))) -> (Function.Injective.{max (succ u3) (succ u1), succ u2} (forall (i : ι), H i) G (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u3) (succ u1), succ u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) (fun (_x : forall (i : ι), H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : forall (i : ι), H i) => G) _x) (MulHomClass.toFunLike.{max (max u2 u3) u1, max u3 u1, u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) G (MulOneClass.toMul.{max u3 u1} (forall (i : ι), H i) (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max (max u2 u3) u1, max u3 u1, u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (MonoidHom.noncommPiCoprod.{u2, u3, u1} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))) ϕ hcomm)))
Case conversion may be inaccurate. Consider using '#align monoid_hom.injective_noncomm_pi_coprod_of_independent MonoidHom.injective_noncommPiCoprod_of_independentₓ'. -/
@[to_additive]
theorem injective_noncommPiCoprod_of_independent
@@ -301,7 +301,7 @@ omit hfin
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> Type.{u3}} [_inst_2 : forall (i : ι), Group.{u3} (H i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : H i) (y : H j), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H j) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ j) y))) -> (forall [_inst_3 : Finite.{succ u2} ι] [_inst_4 : forall (i : ι), Fintype.{u3} (H i)], (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (Nat.coprime (Fintype.card.{u3} (H i) (_inst_4 i)) (Fintype.card.{u3} (H j) (_inst_4 j)))) -> (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u3, u1} (H i) (_inst_2 i) G _inst_1 (ϕ i))))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u3}} [H : DecidableEq.{succ u3} ι] {_inst_2 : ι -> Type.{u2}} [ϕ : forall (i : ι), Group.{u2} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), (forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u2} (_inst_2 i) (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i))))) (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} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u2} (_inst_2 j) (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j))))) (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} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (hcomm j) y))) -> (forall [_inst_4 : Finite.{succ u3} ι] [hcoprime : forall (i : ι), Fintype.{u2} (_inst_2 i)], (forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (Nat.coprime (Fintype.card.{u2} (_inst_2 i) (hcoprime i)) (Fintype.card.{u2} (_inst_2 j) (hcoprime j)))) -> (CompleteLattice.Independent.{succ u3, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u2, u1} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i))))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u3}} [H : DecidableEq.{succ u3} ι] {_inst_2 : ι -> Type.{u2}} [ϕ : forall (i : ι), Group.{u2} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), (forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u2} (_inst_2 i) (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i))))) (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} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u2} (_inst_2 j) (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j))))) (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} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (hcomm j) y))) -> (forall [_inst_4 : Finite.{succ u3} ι] [hcoprime : forall (i : ι), Fintype.{u2} (_inst_2 i)], (forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (Nat.coprime (Fintype.card.{u2} (_inst_2 i) (hcoprime i)) (Fintype.card.{u2} (_inst_2 j) (hcoprime j)))) -> (CompleteLattice.Independent.{succ u3, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u2, u1} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i))))
Case conversion may be inaccurate. Consider using '#align monoid_hom.independent_range_of_coprime_order MonoidHom.independent_range_of_coprime_orderₓ'. -/
@[to_additive]
theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
@@ -365,7 +365,7 @@ include hcomm
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (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 i)) (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 j)), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (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 i)) 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 i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Subgroup.toGroup.{u1} G _inst_1 (H i))))) (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 i)) 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 i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Subgroup.toGroup.{u1} G _inst_1 (H i))))) (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 i)) -> 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 i)) 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 i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Subgroup.toGroup.{u1} G _inst_1 (H i))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (H i)) x) (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 j)) 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 j)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Subgroup.toGroup.{u1} G _inst_1 (H j))))) (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 j)) 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 j)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Subgroup.toGroup.{u1} G _inst_1 (H j))))) (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 j)) -> 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 j)) 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 j)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Subgroup.toGroup.{u1} G _inst_1 (H j))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (H j)) y)))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (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 i))) (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 j))), Commute.{u1} ((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 i))) => G) x) (MulOneClass.toMul.{u1} ((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 i))) => G) x) (Monoid.toMulOneClass.{u1} ((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 i))) => G) x) (DivInvMonoid.toMonoid.{u1} ((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 i))) => G) x) (Group.toDivInvMonoid.{u1} ((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 i))) => G) x) _inst_1)))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) (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 i))) => (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 i))) => 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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) 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 i))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (H i)) x) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) (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 j))) => (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 j))) => 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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) 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 j))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j)))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (H j)) y)))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (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 i))) (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 j))), Commute.{u1} ((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 i))) => G) x) (MulOneClass.toMul.{u1} ((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 i))) => G) x) (Monoid.toMulOneClass.{u1} ((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 i))) => G) x) (DivInvMonoid.toMonoid.{u1} ((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 i))) => G) x) (Group.toDivInvMonoid.{u1} ((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 i))) => G) x) _inst_1)))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) (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 i))) => (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 i))) => 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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) 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 i))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (H i)) x) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) (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 j))) => (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 j))) => 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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) 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 j))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j)))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (H j)) y)))
Case conversion may be inaccurate. Consider using '#align subgroup.commute_subtype_of_commute Subgroup.commute_subtype_of_commuteₓ'. -/
@[to_additive]
theorem commute_subtype_of_commute (i j : ι) (hne : i ≠ j) :
@@ -401,7 +401,7 @@ include hdec
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))} (i : ι) (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 i)), Eq.{succ u1} G (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ (max u2 u1)) (succ u1)} (MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) -> G) (MonoidHom.hasCoeToFun.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u1} G _inst_1 ((fun (i : ι) => H i) i)) i 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} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) 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 i)) 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 i)) 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 i)) 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 i)))))) y)
but is expected to have type
- forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u1}} [hdec : DecidableEq.{succ u1} ι] [hfin : Fintype.{u1} ι] {H : ι -> (Subgroup.{u2} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u1} ι i j) -> (forall (x : G) (y : G), (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i)) -> (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) y (H j)) -> (Commute.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) x y))} (i : ι) (y : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => G) (Pi.mulSingle.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u2} G _inst_1 (H i)) i y)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), succ u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (_x : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => G) _x) (MulHomClass.toFunLike.{max u2 u1, max u2 u1, u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (MulOneClass.toMul.{max u2 u1} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, max u2 u1, u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (Subgroup.noncommPiCoprod.{u2, u1} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm) (Pi.mulSingle.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u2} G _inst_1 (H i)) i y)) (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 i))) y)
+ forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u1}} [hdec : DecidableEq.{succ u1} ι] [hfin : Fintype.{u1} ι] {H : ι -> (Subgroup.{u2} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u1} ι i j) -> (forall (x : G) (y : G), (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i)) -> (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) y (H j)) -> (Commute.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) x y))} (i : ι) (y : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => G) (Pi.mulSingle.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u2} G _inst_1 (H i)) i y)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), succ u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (_x : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => G) _x) (MulHomClass.toFunLike.{max u2 u1, max u2 u1, u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (MulOneClass.toMul.{max u2 u1} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, max u2 u1, u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (Subgroup.noncommPiCoprod.{u2, u1} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm) (Pi.mulSingle.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u2} G _inst_1 (H i)) i y)) (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 i))) y)
Case conversion may be inaccurate. Consider using '#align subgroup.noncomm_pi_coprod_mul_single Subgroup.noncommPiCoprod_mulSingleₓ'. -/
@[simp, to_additive]
theorem noncommPiCoprod_mulSingle (i : ι) (y : H i) :
@@ -427,7 +427,7 @@ theorem noncommPiCoprod_range : (noncommPiCoprod hcomm).range = ⨆ i : ι, H i
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) H) -> (Function.Injective.{max (succ u2) (succ u1), succ u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ (max u2 u1)) (succ u1)} (MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) -> G) (MonoidHom.hasCoeToFun.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm)))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) H) -> (Function.Injective.{max (succ u1) (succ u2), succ u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), succ u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (_x : forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) => G) _x) (MulHomClass.toFunLike.{max u1 u2, max u1 u2, u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (MulOneClass.toMul.{max u1 u2} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, max u1 u2, u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm)))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) H) -> (Function.Injective.{max (succ u1) (succ u2), succ u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), succ u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (_x : forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) => G) _x) (MulHomClass.toFunLike.{max u1 u2, max u1 u2, u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (MulOneClass.toMul.{max u1 u2} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, max u1 u2, u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm)))
Case conversion may be inaccurate. Consider using '#align subgroup.injective_noncomm_pi_coprod_of_independent Subgroup.injective_noncommPiCoprod_of_independentₓ'. -/
@[to_additive]
theorem injective_noncommPiCoprod_of_independent (hind : CompleteLattice.Independent H) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -79,7 +79,7 @@ theorem eq_one_of_noncommProd_eq_one_of_independent {ι : Type _} (s : Finset ι
by
refine' Subgroup.noncommProd_mem _ _ _
intro x hx
- have : K x ≤ ⨆ i ∈ (s : Set ι), K i := le_supᵢ₂ x hx
+ have : K x ≤ ⨆ i ∈ (s : Set ι), K i := le_iSup₂ x hx
exact this (hmem.2 x hx)
intro heq1
rw [Finset.noncommProd_insert_of_not_mem _ _ _ _ hnmem] at heq1
@@ -201,9 +201,9 @@ include hcomm
/- warning: monoid_hom.noncomm_pi_coprod_mrange -> MonoidHom.noncommPiCoprod_mrange is a dubious translation:
lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y))}, Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.mrange.{max u2 u3, u1, max u1 u2 u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.noncommPiCoprod.{u1, u2, u3} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm)) (supᵢ.{u1, succ u2} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (ConditionallyCompleteLattice.toHasSup.{u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (Submonoid.completeLattice.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)))) ι (fun (i : ι) => MonoidHom.mrange.{u3, u1, max u1 u3} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i)))
+ forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y))}, Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.mrange.{max u2 u3, u1, max u1 u2 u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.noncommPiCoprod.{u1, u2, u3} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm)) (iSup.{u1, succ u2} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (ConditionallyCompleteLattice.toHasSup.{u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (Submonoid.completeLattice.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)))) ι (fun (i : ι) => MonoidHom.mrange.{u3, u1, max u1 u3} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i)))
but is expected to have type
- forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [_inst_2 : DecidableEq.{succ u2} ι] [N : Fintype.{u2} ι] {_inst_3 : ι -> Type.{u1}} [ϕ : forall (i : ι), Monoid.{u1} (_inst_3 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm_1 : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : _inst_3 i) (y : _inst_3 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) (fun (a : _inst_3 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 i) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (MulOneClass.toMul.{u1} (_inst_3 i) (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) (fun (a : _inst_3 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 j) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (MulOneClass.toMul.{u1} (_inst_3 j) (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm j) y))}, Eq.{succ u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.mrange.{max u2 u1, u3, max (max u1 u2) u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι N (fun (i : ι) => _inst_3 i) (fun (i : ι) => ϕ i) hcomm hcomm_1)) (supᵢ.{u3, succ u2} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (ConditionallyCompleteLattice.toSupSet.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (Submonoid.instCompleteLatticeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)))) ι (fun (i : ι) => MonoidHom.mrange.{u1, u3, max u3 u1} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (hcomm i)))
+ forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [_inst_2 : DecidableEq.{succ u2} ι] [N : Fintype.{u2} ι] {_inst_3 : ι -> Type.{u1}} [ϕ : forall (i : ι), Monoid.{u1} (_inst_3 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm_1 : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : _inst_3 i) (y : _inst_3 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) (fun (a : _inst_3 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 i) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (MulOneClass.toMul.{u1} (_inst_3 i) (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) (fun (a : _inst_3 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 j) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (MulOneClass.toMul.{u1} (_inst_3 j) (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm j) y))}, Eq.{succ u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.mrange.{max u2 u1, u3, max (max u1 u2) u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι N (fun (i : ι) => _inst_3 i) (fun (i : ι) => ϕ i) hcomm hcomm_1)) (iSup.{u3, succ u2} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (ConditionallyCompleteLattice.toSupSet.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (Submonoid.instCompleteLatticeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)))) ι (fun (i : ι) => MonoidHom.mrange.{u1, u3, max u3 u1} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (hcomm i)))
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_mrange MonoidHom.noncommPiCoprod_mrangeₓ'. -/
@[to_additive]
theorem noncommPiCoprod_mrange : (noncommPiCoprod ϕ hcomm).mrange = ⨆ i : ι, (ϕ i).mrange := by
@@ -212,10 +212,10 @@ theorem noncommPiCoprod_mrange : (noncommPiCoprod ϕ hcomm).mrange = ⨆ i : ι,
· rintro x ⟨f, rfl⟩
refine' Submonoid.noncommProd_mem _ _ _ _ _
intro i hi
- apply Submonoid.mem_supₛ_of_mem
+ apply Submonoid.mem_sSup_of_mem
· use i
simp
- · refine' supᵢ_le _
+ · refine' iSup_le _
rintro i x ⟨y, rfl⟩
refine' ⟨Pi.mulSingle i y, noncomm_pi_coprod_mul_single _ _ _⟩
#align monoid_hom.noncomm_pi_coprod_mrange MonoidHom.noncommPiCoprod_mrange
@@ -248,9 +248,9 @@ namespace MonoidHom
/- warning: monoid_hom.noncomm_pi_coprod_range -> MonoidHom.noncommPiCoprod_range is a dubious translation:
lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> Type.{u3}} [_inst_2 : forall (i : ι), Group.{u3} (H i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : H i) (y : H j), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H j) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ j) y))}, Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.range.{max u2 u3, u1} (forall (i : ι), H i) (Pi.group.{u2, u3} ι (fun (i : ι) => H i) (fun (i : ι) => _inst_2 i)) G _inst_1 (MonoidHom.noncommPiCoprod.{u1, u2, u3} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) ϕ hcomm)) (supᵢ.{u1, succ u2} (Subgroup.{u1} G _inst_1) (ConditionallyCompleteLattice.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => MonoidHom.range.{u3, u1} (H i) (_inst_2 i) G _inst_1 (ϕ i)))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> Type.{u3}} [_inst_2 : forall (i : ι), Group.{u3} (H i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : H i) (y : H j), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H j) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ j) y))}, Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.range.{max u2 u3, u1} (forall (i : ι), H i) (Pi.group.{u2, u3} ι (fun (i : ι) => H i) (fun (i : ι) => _inst_2 i)) G _inst_1 (MonoidHom.noncommPiCoprod.{u1, u2, u3} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) ϕ hcomm)) (iSup.{u1, succ u2} (Subgroup.{u1} G _inst_1) (ConditionallyCompleteLattice.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => MonoidHom.range.{u3, u1} (H i) (_inst_2 i) G _inst_1 (ϕ i)))
but is expected to have type
- forall {G : Type.{u3}} [_inst_1 : Group.{u3} G] {ι : Type.{u2}} [hfin : DecidableEq.{succ u2} ι] [H : Fintype.{u2} ι] {_inst_2 : ι -> Type.{u1}} [ϕ : forall (i : ι), Group.{u1} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) {hcomm_1 : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u1} (_inst_2 i) (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u1} (_inst_2 j) (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm j) y))}, Eq.{succ u3} (Subgroup.{u3} G _inst_1) (MonoidHom.range.{max u2 u1, u3} (forall (i : ι), _inst_2 i) (Pi.group.{u2, u1} ι (fun (i : ι) => _inst_2 i) (fun (i : ι) => ϕ i)) G _inst_1 (MonoidHom.noncommPiCoprod.{u3, u2, u1} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) ι H (fun (i : ι) => _inst_2 i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))) hcomm hcomm_1)) (supᵢ.{u3, succ u2} (Subgroup.{u3} G _inst_1) (ConditionallyCompleteLattice.toSupSet.{u3} (Subgroup.{u3} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Subgroup.{u3} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u3} G _inst_1))) ι (fun (i : ι) => MonoidHom.range.{u1, u3} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i)))
+ forall {G : Type.{u3}} [_inst_1 : Group.{u3} G] {ι : Type.{u2}} [hfin : DecidableEq.{succ u2} ι] [H : Fintype.{u2} ι] {_inst_2 : ι -> Type.{u1}} [ϕ : forall (i : ι), Group.{u1} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) {hcomm_1 : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u1} (_inst_2 i) (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u1} (_inst_2 j) (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm j) y))}, Eq.{succ u3} (Subgroup.{u3} G _inst_1) (MonoidHom.range.{max u2 u1, u3} (forall (i : ι), _inst_2 i) (Pi.group.{u2, u1} ι (fun (i : ι) => _inst_2 i) (fun (i : ι) => ϕ i)) G _inst_1 (MonoidHom.noncommPiCoprod.{u3, u2, u1} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) ι H (fun (i : ι) => _inst_2 i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))) hcomm hcomm_1)) (iSup.{u3, succ u2} (Subgroup.{u3} G _inst_1) (ConditionallyCompleteLattice.toSupSet.{u3} (Subgroup.{u3} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Subgroup.{u3} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u3} G _inst_1))) ι (fun (i : ι) => MonoidHom.range.{u1, u3} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i)))
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_range MonoidHom.noncommPiCoprod_rangeₓ'. -/
-- The subgroup version of `noncomm_pi_coprod_mrange`
@[to_additive]
@@ -260,10 +260,10 @@ theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (
· rintro x ⟨f, rfl⟩
refine' Subgroup.noncommProd_mem _ _ _
intro i hi
- apply Subgroup.mem_supₛ_of_mem
+ apply Subgroup.mem_sSup_of_mem
· use i
simp
- · refine' supᵢ_le _
+ · refine' iSup_le _
rintro i x ⟨y, rfl⟩
refine' ⟨Pi.mulSingle i y, noncomm_pi_coprod_mul_single _ _ _⟩
#align monoid_hom.noncomm_pi_coprod_range MonoidHom.noncommPiCoprod_range
@@ -314,7 +314,7 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
rw [disjoint_iff_inf_le]
rintro f ⟨hxi, hxp⟩
dsimp at hxi hxp
- rw [supᵢ_subtype', ← noncomm_pi_coprod_range] at hxp
+ rw [iSup_subtype', ← noncomm_pi_coprod_range] at hxp
rotate_left
· intro _ _ hj
apply hcomm
@@ -413,9 +413,9 @@ omit hdec
/- warning: subgroup.noncomm_pi_coprod_range -> Subgroup.noncommPiCoprod_range is a dubious translation:
lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))}, Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.range.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Pi.group.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (fun (i : ι) => Subgroup.toGroup.{u1} G _inst_1 (H i))) G _inst_1 (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm)) (supᵢ.{u1, succ u2} (Subgroup.{u1} G _inst_1) (ConditionallyCompleteLattice.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => H i))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))}, Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.range.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Pi.group.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (fun (i : ι) => Subgroup.toGroup.{u1} G _inst_1 (H i))) G _inst_1 (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm)) (iSup.{u1, succ u2} (Subgroup.{u1} G _inst_1) (ConditionallyCompleteLattice.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => H i))
but is expected to have type
- forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u1}} [hfin : DecidableEq.{succ u1} ι] [H : Fintype.{u1} ι] {hcomm : ι -> (Subgroup.{u2} G _inst_1)} {hcomm_1 : forall (i : ι) (j : ι), (Ne.{succ u1} ι i j) -> (forall (x : G) (y : G), (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (hcomm i)) -> (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) y (hcomm j)) -> (Commute.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) x y))}, Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.range.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (hcomm i))) (Pi.group.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (hcomm i))) (fun (i : ι) => Subgroup.toGroup.{u2} G _inst_1 (hcomm i))) G _inst_1 (Subgroup.noncommPiCoprod.{u2, u1} G _inst_1 ι H (fun (i : ι) => hcomm i) hcomm_1)) (supᵢ.{u2, succ u1} (Subgroup.{u2} G _inst_1) (ConditionallyCompleteLattice.toSupSet.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))) ι (fun (i : ι) => hcomm i))
+ forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u1}} [hfin : DecidableEq.{succ u1} ι] [H : Fintype.{u1} ι] {hcomm : ι -> (Subgroup.{u2} G _inst_1)} {hcomm_1 : forall (i : ι) (j : ι), (Ne.{succ u1} ι i j) -> (forall (x : G) (y : G), (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (hcomm i)) -> (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) y (hcomm j)) -> (Commute.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) x y))}, Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.range.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (hcomm i))) (Pi.group.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (hcomm i))) (fun (i : ι) => Subgroup.toGroup.{u2} G _inst_1 (hcomm i))) G _inst_1 (Subgroup.noncommPiCoprod.{u2, u1} G _inst_1 ι H (fun (i : ι) => hcomm i) hcomm_1)) (iSup.{u2, succ u1} (Subgroup.{u2} G _inst_1) (ConditionallyCompleteLattice.toSupSet.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))) ι (fun (i : ι) => hcomm i))
Case conversion may be inaccurate. Consider using '#align subgroup.noncomm_pi_coprod_range Subgroup.noncommPiCoprod_rangeₓ'. -/
@[to_additive]
theorem noncommPiCoprod_range : (noncommPiCoprod hcomm).range = ⨆ i : ι, H i := by
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -136,8 +136,7 @@ def noncommPiCoprod : (∀ i : ι, N i) →* M
simp
map_mul' f g := by
classical
- convert
- @Finset.noncommProd_mul_distrib _ _ _ _ (fun i => ϕ i (f i)) (fun i => ϕ i (g i)) _ _ _
+ convert@Finset.noncommProd_mul_distrib _ _ _ _ (fun i => ϕ i (f i)) (fun i => ϕ i (g i)) _ _ _
· ext i
exact map_mul (ϕ i) (f i) (g i)
· rintro i - j - h
@@ -332,7 +331,7 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
exact (orderOf_map_dvd _ _).trans orderOf_dvd_card_univ
change f = 1
rw [← pow_one f, ← orderOf_dvd_iff_pow_eq_one]
- convert ← Nat.dvd_gcd hxp hxi
+ convert← Nat.dvd_gcd hxp hxi
rw [← Nat.coprime_iff_gcd_eq_one]
apply Nat.coprime_prod_left
intro j _
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -123,7 +123,7 @@ namespace MonoidHom
lean 3 declaration is
forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)), (Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y))) -> (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)), (Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (MulOneClass.toMul.{u3} (N i) (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N j) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (MulOneClass.toMul.{u3} (N j) (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ j) y))) -> (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
+ forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)), (Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (MulOneClass.toMul.{u3} (N i) (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N j) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (MulOneClass.toMul.{u3} (N j) (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ j) y))) -> (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod MonoidHom.noncommPiCoprodₓ'. -/
/-- The canonical homomorphism from a family of monoids. -/
@[to_additive
@@ -153,7 +153,7 @@ include hdec
lean 3 declaration is
forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y))} (i : ι) (y : N i), Eq.{succ u1} M (coeFn.{max (succ u1) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u1)} (MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => N i) i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) ((fun (i : ι) => _inst_3 i) i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => N i) i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) ((fun (i : ι) => _inst_3 i) i))) (Monoid.toMulOneClass.{u1} M _inst_1)) => (forall (i : ι), (fun (i : ι) => N i) i) -> M) (MonoidHom.hasCoeToFun.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => N i) i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) ((fun (i : ι) => _inst_3 i) i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.noncommPiCoprod.{u1, u2, u3} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm) (Pi.mulSingle.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => MulOneClass.toHasOne.{u3} ((fun (i : ι) => N i) i) (Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) (_inst_3 i))) i y)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) y)
but is expected to have type
- forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u1}} [_inst_3 : forall (i : ι), Monoid.{u1} (N i)] (ϕ : forall (i : ι), MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (MulOneClass.toMul.{u1} (N i) (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N j) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) M (MulOneClass.toMul.{u1} (N j) (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ j) y))} (i : ι) (y : N i), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : forall (i : ι), N i) => M) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => N i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Monoid.toOne.{u1} (N i) (_inst_3 i)) i y)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u2) (succ u1), succ u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) (fun (_x : forall (i : ι), N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : forall (i : ι), N i) => M) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, max u2 u1, u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) M (MulOneClass.toMul.{max u2 u1} (forall (i : ι), N i) (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max (max u3 u2) u1, max u2 u1, u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => N i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Monoid.toOne.{u1} (N i) (_inst_3 i)) i y)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (MulOneClass.toMul.{u1} (N i) (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ i) y)
+ forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u1}} [_inst_3 : forall (i : ι), Monoid.{u1} (N i)] (ϕ : forall (i : ι), MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (MulOneClass.toMul.{u1} (N i) (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N j) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) M (MulOneClass.toMul.{u1} (N j) (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ j) y))} (i : ι) (y : N i), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : forall (i : ι), N i) => M) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => N i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Monoid.toOne.{u1} (N i) (_inst_3 i)) i y)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u2) (succ u1), succ u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) (fun (_x : forall (i : ι), N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : forall (i : ι), N i) => M) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, max u2 u1, u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) M (MulOneClass.toMul.{max u2 u1} (forall (i : ι), N i) (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max (max u3 u2) u1, max u2 u1, u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => N i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Monoid.toOne.{u1} (N i) (_inst_3 i)) i y)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (MulOneClass.toMul.{u1} (N i) (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ i) y)
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_mul_single MonoidHom.noncommPiCoprod_mulSingleₓ'. -/
@[simp, to_additive]
theorem noncommPiCoprod_mulSingle (i : ι) (y : N i) :
@@ -178,7 +178,7 @@ omit hcomm
lean 3 declaration is
forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)], Equiv.{max 1 (succ u2) (succ u1) (succ u3), max (succ u1) (succ (max u2 u3))} (Subtype.{max (succ u2) (succ u1) (succ u3)} (forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y)))) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)], Equiv.{max 1 (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ (max u2 u3))} (Subtype.{max (max (succ u1) (succ u2)) (succ u3)} (forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (MulOneClass.toMul.{u3} (N i) (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N j) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (MulOneClass.toMul.{u3} (N j) (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ j) y)))) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
+ forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)], Equiv.{max 1 (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ (max u2 u3))} (Subtype.{max (max (succ u1) (succ u2)) (succ u3)} (forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N i) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (MulOneClass.toMul.{u3} (N i) (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N j) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (MulOneClass.toMul.{u3} (N j) (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ j) y)))) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_equiv MonoidHom.noncommPiCoprodEquivₓ'. -/
/-- The universal property of `noncomm_pi_coprod` -/
@[to_additive "The universal property of `noncomm_pi_coprod`"]
@@ -204,7 +204,7 @@ include hcomm
lean 3 declaration is
forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y))}, Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.mrange.{max u2 u3, u1, max u1 u2 u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.noncommPiCoprod.{u1, u2, u3} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm)) (supᵢ.{u1, succ u2} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (ConditionallyCompleteLattice.toHasSup.{u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (Submonoid.completeLattice.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)))) ι (fun (i : ι) => MonoidHom.mrange.{u3, u1, max u1 u3} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i)))
but is expected to have type
- forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [_inst_2 : DecidableEq.{succ u2} ι] [N : Fintype.{u2} ι] {_inst_3 : ι -> Type.{u1}} [ϕ : forall (i : ι), Monoid.{u1} (_inst_3 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm_1 : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : _inst_3 i) (y : _inst_3 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_3 i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_3 i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_3 i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) (fun (a : _inst_3 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_3 i) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (MulOneClass.toMul.{u1} (_inst_3 i) (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) (fun (a : _inst_3 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_3 j) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (MulOneClass.toMul.{u1} (_inst_3 j) (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm j) y))}, Eq.{succ u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.mrange.{max u2 u1, u3, max (max u1 u2) u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι N (fun (i : ι) => _inst_3 i) (fun (i : ι) => ϕ i) hcomm hcomm_1)) (supᵢ.{u3, succ u2} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (ConditionallyCompleteLattice.toSupSet.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (Submonoid.instCompleteLatticeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)))) ι (fun (i : ι) => MonoidHom.mrange.{u1, u3, max u3 u1} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (hcomm i)))
+ forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [_inst_2 : DecidableEq.{succ u2} ι] [N : Fintype.{u2} ι] {_inst_3 : ι -> Type.{u1}} [ϕ : forall (i : ι), Monoid.{u1} (_inst_3 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm_1 : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : _inst_3 i) (y : _inst_3 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) (fun (a : _inst_3 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 i) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (MulOneClass.toMul.{u1} (_inst_3 i) (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) (fun (a : _inst_3 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_3 j) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (MulOneClass.toMul.{u1} (_inst_3 j) (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm j) y))}, Eq.{succ u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.mrange.{max u2 u1, u3, max (max u1 u2) u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι N (fun (i : ι) => _inst_3 i) (fun (i : ι) => ϕ i) hcomm hcomm_1)) (supᵢ.{u3, succ u2} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (ConditionallyCompleteLattice.toSupSet.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (Submonoid.instCompleteLatticeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)))) ι (fun (i : ι) => MonoidHom.mrange.{u1, u3, max u3 u1} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (hcomm i)))
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_mrange MonoidHom.noncommPiCoprod_mrangeₓ'. -/
@[to_additive]
theorem noncommPiCoprod_mrange : (noncommPiCoprod ϕ hcomm).mrange = ⨆ i : ι, (ϕ i).mrange := by
@@ -251,7 +251,7 @@ namespace MonoidHom
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> Type.{u3}} [_inst_2 : forall (i : ι), Group.{u3} (H i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : H i) (y : H j), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H j) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ j) y))}, Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.range.{max u2 u3, u1} (forall (i : ι), H i) (Pi.group.{u2, u3} ι (fun (i : ι) => H i) (fun (i : ι) => _inst_2 i)) G _inst_1 (MonoidHom.noncommPiCoprod.{u1, u2, u3} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) ϕ hcomm)) (supᵢ.{u1, succ u2} (Subgroup.{u1} G _inst_1) (ConditionallyCompleteLattice.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => MonoidHom.range.{u3, u1} (H i) (_inst_2 i) G _inst_1 (ϕ i)))
but is expected to have type
- forall {G : Type.{u3}} [_inst_1 : Group.{u3} G] {ι : Type.{u2}} [hfin : DecidableEq.{succ u2} ι] [H : Fintype.{u2} ι] {_inst_2 : ι -> Type.{u1}} [ϕ : forall (i : ι), Group.{u1} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) {hcomm_1 : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u1} (_inst_2 i) (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u1} (_inst_2 j) (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm j) y))}, Eq.{succ u3} (Subgroup.{u3} G _inst_1) (MonoidHom.range.{max u2 u1, u3} (forall (i : ι), _inst_2 i) (Pi.group.{u2, u1} ι (fun (i : ι) => _inst_2 i) (fun (i : ι) => ϕ i)) G _inst_1 (MonoidHom.noncommPiCoprod.{u3, u2, u1} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) ι H (fun (i : ι) => _inst_2 i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))) hcomm hcomm_1)) (supᵢ.{u3, succ u2} (Subgroup.{u3} G _inst_1) (ConditionallyCompleteLattice.toSupSet.{u3} (Subgroup.{u3} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Subgroup.{u3} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u3} G _inst_1))) ι (fun (i : ι) => MonoidHom.range.{u1, u3} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i)))
+ forall {G : Type.{u3}} [_inst_1 : Group.{u3} G] {ι : Type.{u2}} [hfin : DecidableEq.{succ u2} ι] [H : Fintype.{u2} ι] {_inst_2 : ι -> Type.{u1}} [ϕ : forall (i : ι), Group.{u1} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) {hcomm_1 : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u1} (_inst_2 i) (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u1} (_inst_2 j) (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm j) y))}, Eq.{succ u3} (Subgroup.{u3} G _inst_1) (MonoidHom.range.{max u2 u1, u3} (forall (i : ι), _inst_2 i) (Pi.group.{u2, u1} ι (fun (i : ι) => _inst_2 i) (fun (i : ι) => ϕ i)) G _inst_1 (MonoidHom.noncommPiCoprod.{u3, u2, u1} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) ι H (fun (i : ι) => _inst_2 i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))) hcomm hcomm_1)) (supᵢ.{u3, succ u2} (Subgroup.{u3} G _inst_1) (ConditionallyCompleteLattice.toSupSet.{u3} (Subgroup.{u3} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Subgroup.{u3} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u3} G _inst_1))) ι (fun (i : ι) => MonoidHom.range.{u1, u3} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i)))
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_range MonoidHom.noncommPiCoprod_rangeₓ'. -/
-- The subgroup version of `noncomm_pi_coprod_mrange`
@[to_additive]
@@ -274,7 +274,7 @@ theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> Type.{u3}} [_inst_2 : forall (i : ι), Group.{u3} (H i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : H i) (y : H j), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H j) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ j) y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u3, u1} (H i) (_inst_2 i) G _inst_1 (ϕ i))) -> (forall (i : ι), Function.Injective.{succ u3, succ u1} (H i) G (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i))) -> (Function.Injective.{max (succ u2) (succ u3), succ u1} (forall (i : ι), (fun (i : ι) => H i) i) G (coeFn.{max (succ u1) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u1)} (MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => H i) i) G (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => H i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => H i) i) ((fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => H i) i) G (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => H i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => H i) i) ((fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (forall (i : ι), (fun (i : ι) => H i) i) -> G) (MonoidHom.hasCoeToFun.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => H i) i) G (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => H i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => H i) i) ((fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHom.noncommPiCoprod.{u1, u2, u3} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) ϕ hcomm)))
but is expected to have type
- forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u3}} [hfin : Fintype.{u3} ι] {H : ι -> Type.{u1}} [_inst_2 : forall (i : ι), Group.{u1} (H i)] (ϕ : forall (i : ι), MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (forall (x : H i) (y : H j), Commute.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : H i) => G) x) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : H i) => G) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : H i) => G) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : H i) => G) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : H i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) (fun (_x : H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : H i) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (MulOneClass.toMul.{u1} (H i) (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (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} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ i) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) (fun (_x : H j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : H j) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) G (MulOneClass.toMul.{u1} (H j) (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j))))) (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} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ j) y))}, (CompleteLattice.Independent.{succ u3, u2} ι (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1) (fun (i : ι) => MonoidHom.range.{u1, u2} (H i) (_inst_2 i) G _inst_1 (ϕ i))) -> (forall (i : ι), Function.Injective.{succ u1, succ u2} (H i) G (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) (fun (_x : H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : H i) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (MulOneClass.toMul.{u1} (H i) (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (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} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ i))) -> (Function.Injective.{max (succ u3) (succ u1), succ u2} (forall (i : ι), H i) G (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u3) (succ u1), succ u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) (fun (_x : forall (i : ι), H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : forall (i : ι), H i) => G) _x) (MulHomClass.toFunLike.{max (max u2 u3) u1, max u3 u1, u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) G (MulOneClass.toMul.{max u3 u1} (forall (i : ι), H i) (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max (max u2 u3) u1, max u3 u1, u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (MonoidHom.noncommPiCoprod.{u2, u3, u1} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))) ϕ hcomm)))
+ forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u3}} [hfin : Fintype.{u3} ι] {H : ι -> Type.{u1}} [_inst_2 : forall (i : ι), Group.{u1} (H i)] (ϕ : forall (i : ι), MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (forall (x : H i) (y : H j), Commute.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : H i) => G) x) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : H i) => G) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : H i) => G) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : H i) => G) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : H i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) (fun (_x : H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : H i) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (MulOneClass.toMul.{u1} (H i) (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (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} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ i) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) (fun (_x : H j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : H j) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) G (MulOneClass.toMul.{u1} (H j) (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j))))) (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} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ j) y))}, (CompleteLattice.Independent.{succ u3, u2} ι (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1) (fun (i : ι) => MonoidHom.range.{u1, u2} (H i) (_inst_2 i) G _inst_1 (ϕ i))) -> (forall (i : ι), Function.Injective.{succ u1, succ u2} (H i) G (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) (fun (_x : H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : H i) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (MulOneClass.toMul.{u1} (H i) (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (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} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ i))) -> (Function.Injective.{max (succ u3) (succ u1), succ u2} (forall (i : ι), H i) G (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u3) (succ u1), succ u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) (fun (_x : forall (i : ι), H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : forall (i : ι), H i) => G) _x) (MulHomClass.toFunLike.{max (max u2 u3) u1, max u3 u1, u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) G (MulOneClass.toMul.{max u3 u1} (forall (i : ι), H i) (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max (max u2 u3) u1, max u3 u1, u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (MonoidHom.noncommPiCoprod.{u2, u3, u1} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))) ϕ hcomm)))
Case conversion may be inaccurate. Consider using '#align monoid_hom.injective_noncomm_pi_coprod_of_independent MonoidHom.injective_noncommPiCoprod_of_independentₓ'. -/
@[to_additive]
theorem injective_noncommPiCoprod_of_independent
@@ -302,7 +302,7 @@ omit hfin
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> Type.{u3}} [_inst_2 : forall (i : ι), Group.{u3} (H i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : H i) (y : H j), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H j) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ j) y))) -> (forall [_inst_3 : Finite.{succ u2} ι] [_inst_4 : forall (i : ι), Fintype.{u3} (H i)], (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (Nat.coprime (Fintype.card.{u3} (H i) (_inst_4 i)) (Fintype.card.{u3} (H j) (_inst_4 j)))) -> (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u3, u1} (H i) (_inst_2 i) G _inst_1 (ϕ i))))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u3}} [H : DecidableEq.{succ u3} ι] {_inst_2 : ι -> Type.{u2}} [ϕ : forall (i : ι), Group.{u2} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), (forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u2} (_inst_2 i) (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i))))) (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} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u2} (_inst_2 j) (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j))))) (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} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (hcomm j) y))) -> (forall [_inst_4 : Finite.{succ u3} ι] [hcoprime : forall (i : ι), Fintype.{u2} (_inst_2 i)], (forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (Nat.coprime (Fintype.card.{u2} (_inst_2 i) (hcoprime i)) (Fintype.card.{u2} (_inst_2 j) (hcoprime j)))) -> (CompleteLattice.Independent.{succ u3, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u2, u1} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i))))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u3}} [H : DecidableEq.{succ u3} ι] {_inst_2 : ι -> Type.{u2}} [ϕ : forall (i : ι), Group.{u2} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), (forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u2} (_inst_2 i) (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i))))) (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} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u2} (_inst_2 j) (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j))))) (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} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (hcomm j) y))) -> (forall [_inst_4 : Finite.{succ u3} ι] [hcoprime : forall (i : ι), Fintype.{u2} (_inst_2 i)], (forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (Nat.coprime (Fintype.card.{u2} (_inst_2 i) (hcoprime i)) (Fintype.card.{u2} (_inst_2 j) (hcoprime j)))) -> (CompleteLattice.Independent.{succ u3, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u2, u1} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i))))
Case conversion may be inaccurate. Consider using '#align monoid_hom.independent_range_of_coprime_order MonoidHom.independent_range_of_coprime_orderₓ'. -/
@[to_additive]
theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
@@ -366,7 +366,7 @@ include hcomm
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (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 i)) (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 j)), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (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 i)) 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 i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Subgroup.toGroup.{u1} G _inst_1 (H i))))) (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 i)) 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 i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Subgroup.toGroup.{u1} G _inst_1 (H i))))) (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 i)) -> 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 i)) 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 i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Subgroup.toGroup.{u1} G _inst_1 (H i))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (H i)) x) (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 j)) 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 j)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Subgroup.toGroup.{u1} G _inst_1 (H j))))) (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 j)) 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 j)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Subgroup.toGroup.{u1} G _inst_1 (H j))))) (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 j)) -> 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 j)) 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 j)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Subgroup.toGroup.{u1} G _inst_1 (H j))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (H j)) y)))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (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 i))) (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 j))), Commute.{u1} ((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 i))) => G) x) (MulOneClass.toMul.{u1} ((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 i))) => G) x) (Monoid.toMulOneClass.{u1} ((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 i))) => G) x) (DivInvMonoid.toMonoid.{u1} ((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 i))) => G) x) (Group.toDivInvMonoid.{u1} ((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 i))) => G) x) _inst_1)))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) (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 i))) => (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 i))) => 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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) 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 i))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (H i)) x) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) (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 j))) => (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 j))) => 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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) 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 j))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j)))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (H j)) y)))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (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 i))) (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 j))), Commute.{u1} ((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 i))) => G) x) (MulOneClass.toMul.{u1} ((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 i))) => G) x) (Monoid.toMulOneClass.{u1} ((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 i))) => G) x) (DivInvMonoid.toMonoid.{u1} ((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 i))) => G) x) (Group.toDivInvMonoid.{u1} ((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 i))) => G) x) _inst_1)))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) (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 i))) => (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 i))) => 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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) 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 i))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (H i)) x) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) (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 j))) => (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 j))) => 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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) 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 j))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j)))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (H j)) y)))
Case conversion may be inaccurate. Consider using '#align subgroup.commute_subtype_of_commute Subgroup.commute_subtype_of_commuteₓ'. -/
@[to_additive]
theorem commute_subtype_of_commute (i j : ι) (hne : i ≠ j) :
@@ -402,7 +402,7 @@ include hdec
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))} (i : ι) (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 i)), Eq.{succ u1} G (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ (max u2 u1)) (succ u1)} (MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) -> G) (MonoidHom.hasCoeToFun.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u1} G _inst_1 ((fun (i : ι) => H i) i)) i 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} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) 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 i)) 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 i)) 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 i)) 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 i)))))) y)
but is expected to have type
- forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u1}} [hdec : DecidableEq.{succ u1} ι] [hfin : Fintype.{u1} ι] {H : ι -> (Subgroup.{u2} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u1} ι i j) -> (forall (x : G) (y : G), (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i)) -> (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) y (H j)) -> (Commute.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) x y))} (i : ι) (y : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => G) (Pi.mulSingle.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u2} G _inst_1 (H i)) i y)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), succ u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (_x : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => G) _x) (MulHomClass.toFunLike.{max u2 u1, max u2 u1, u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (MulOneClass.toMul.{max u2 u1} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, max u2 u1, u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (Subgroup.noncommPiCoprod.{u2, u1} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm) (Pi.mulSingle.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u2} G _inst_1 (H i)) i y)) (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 i))) y)
+ forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u1}} [hdec : DecidableEq.{succ u1} ι] [hfin : Fintype.{u1} ι] {H : ι -> (Subgroup.{u2} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u1} ι i j) -> (forall (x : G) (y : G), (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i)) -> (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) y (H j)) -> (Commute.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) x y))} (i : ι) (y : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => G) (Pi.mulSingle.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u2} G _inst_1 (H i)) i y)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), succ u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (_x : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => G) _x) (MulHomClass.toFunLike.{max u2 u1, max u2 u1, u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (MulOneClass.toMul.{max u2 u1} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, max u2 u1, u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (Subgroup.noncommPiCoprod.{u2, u1} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm) (Pi.mulSingle.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u2} G _inst_1 (H i)) i y)) (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 i))) y)
Case conversion may be inaccurate. Consider using '#align subgroup.noncomm_pi_coprod_mul_single Subgroup.noncommPiCoprod_mulSingleₓ'. -/
@[simp, to_additive]
theorem noncommPiCoprod_mulSingle (i : ι) (y : H i) :
@@ -428,7 +428,7 @@ theorem noncommPiCoprod_range : (noncommPiCoprod hcomm).range = ⨆ i : ι, H i
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) H) -> (Function.Injective.{max (succ u2) (succ u1), succ u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ (max u2 u1)) (succ u1)} (MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) -> G) (MonoidHom.hasCoeToFun.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm)))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) H) -> (Function.Injective.{max (succ u1) (succ u2), succ u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), succ u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (_x : forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) => G) _x) (MulHomClass.toFunLike.{max u1 u2, max u1 u2, u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (MulOneClass.toMul.{max u1 u2} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, max u1 u2, u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm)))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) H) -> (Function.Injective.{max (succ u1) (succ u2), succ u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), succ u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (_x : forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) => G) _x) (MulHomClass.toFunLike.{max u1 u2, max u1 u2, u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (MulOneClass.toMul.{max u1 u2} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, max u1 u2, u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm)))
Case conversion may be inaccurate. Consider using '#align subgroup.injective_noncomm_pi_coprod_of_independent Subgroup.injective_noncommPiCoprod_of_independentₓ'. -/
@[to_additive]
theorem injective_noncommPiCoprod_of_independent (hind : CompleteLattice.Independent H) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -123,7 +123,7 @@ namespace MonoidHom
lean 3 declaration is
forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)), (Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y))) -> (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)), (Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (MulOneClass.toMul.{u3} (N i) (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N j) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (MulOneClass.toMul.{u3} (N j) (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ j) y))) -> (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
+ forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)), (Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (MulOneClass.toMul.{u3} (N i) (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N j) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (MulOneClass.toMul.{u3} (N j) (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ j) y))) -> (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod MonoidHom.noncommPiCoprodₓ'. -/
/-- The canonical homomorphism from a family of monoids. -/
@[to_additive
@@ -153,7 +153,7 @@ include hdec
lean 3 declaration is
forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y))} (i : ι) (y : N i), Eq.{succ u1} M (coeFn.{max (succ u1) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u1)} (MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => N i) i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) ((fun (i : ι) => _inst_3 i) i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => N i) i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) ((fun (i : ι) => _inst_3 i) i))) (Monoid.toMulOneClass.{u1} M _inst_1)) => (forall (i : ι), (fun (i : ι) => N i) i) -> M) (MonoidHom.hasCoeToFun.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => N i) i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) ((fun (i : ι) => _inst_3 i) i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.noncommPiCoprod.{u1, u2, u3} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm) (Pi.mulSingle.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => MulOneClass.toHasOne.{u3} ((fun (i : ι) => N i) i) (Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) (_inst_3 i))) i y)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) y)
but is expected to have type
- forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u1}} [_inst_3 : forall (i : ι), Monoid.{u1} (N i)] (ϕ : forall (i : ι), MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (MulOneClass.toMul.{u1} (N i) (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N j) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) M (MulOneClass.toMul.{u1} (N j) (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ j) y))} (i : ι) (y : N i), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : forall (i : ι), N i) => M) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => N i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Monoid.toOne.{u1} (N i) (_inst_3 i)) i y)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u2) (succ u1), succ u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) (fun (_x : forall (i : ι), N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : forall (i : ι), N i) => M) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, max u2 u1, u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) M (MulOneClass.toMul.{max u2 u1} (forall (i : ι), N i) (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max (max u3 u2) u1, max u2 u1, u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => N i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Monoid.toOne.{u1} (N i) (_inst_3 i)) i y)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (MulOneClass.toMul.{u1} (N i) (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ i) y)
+ forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u1}} [_inst_3 : forall (i : ι), Monoid.{u1} (N i)] (ϕ : forall (i : ι), MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (MulOneClass.toMul.{u1} (N i) (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N j) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) M (MulOneClass.toMul.{u1} (N j) (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ j) y))} (i : ι) (y : N i), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : forall (i : ι), N i) => M) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => N i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Monoid.toOne.{u1} (N i) (_inst_3 i)) i y)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u2) (succ u1), succ u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) (fun (_x : forall (i : ι), N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : forall (i : ι), N i) => M) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, max u2 u1, u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) M (MulOneClass.toMul.{max u2 u1} (forall (i : ι), N i) (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max (max u3 u2) u1, max u2 u1, u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => N i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Monoid.toOne.{u1} (N i) (_inst_3 i)) i y)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (MulOneClass.toMul.{u1} (N i) (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ i) y)
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_mul_single MonoidHom.noncommPiCoprod_mulSingleₓ'. -/
@[simp, to_additive]
theorem noncommPiCoprod_mulSingle (i : ι) (y : N i) :
@@ -178,7 +178,7 @@ omit hcomm
lean 3 declaration is
forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)], Equiv.{max 1 (succ u2) (succ u1) (succ u3), max (succ u1) (succ (max u2 u3))} (Subtype.{max (succ u2) (succ u1) (succ u3)} (forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y)))) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)], Equiv.{max 1 (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ (max u2 u3))} (Subtype.{max (max (succ u1) (succ u2)) (succ u3)} (forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (MulOneClass.toMul.{u3} (N i) (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N j) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (MulOneClass.toMul.{u3} (N j) (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ j) y)))) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
+ forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)], Equiv.{max 1 (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ (max u2 u3))} (Subtype.{max (max (succ u1) (succ u2)) (succ u3)} (forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N i) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (MulOneClass.toMul.{u3} (N i) (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N j) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (MulOneClass.toMul.{u3} (N j) (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ j) y)))) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_equiv MonoidHom.noncommPiCoprodEquivₓ'. -/
/-- The universal property of `noncomm_pi_coprod` -/
@[to_additive "The universal property of `noncomm_pi_coprod`"]
@@ -204,7 +204,7 @@ include hcomm
lean 3 declaration is
forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y))}, Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.mrange.{max u2 u3, u1, max u1 u2 u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.noncommPiCoprod.{u1, u2, u3} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm)) (supᵢ.{u1, succ u2} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (ConditionallyCompleteLattice.toHasSup.{u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (Submonoid.completeLattice.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)))) ι (fun (i : ι) => MonoidHom.mrange.{u3, u1, max u1 u3} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i)))
but is expected to have type
- forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [_inst_2 : DecidableEq.{succ u2} ι] [N : Fintype.{u2} ι] {_inst_3 : ι -> Type.{u1}} [ϕ : forall (i : ι), Monoid.{u1} (_inst_3 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm_1 : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : _inst_3 i) (y : _inst_3 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_3 i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_3 i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_3 i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) (fun (a : _inst_3 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_3 i) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (MulOneClass.toMul.{u1} (_inst_3 i) (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) (fun (a : _inst_3 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_3 j) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (MulOneClass.toMul.{u1} (_inst_3 j) (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm j) y))}, Eq.{succ u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.mrange.{max u2 u1, u3, max (max u1 u2) u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι N (fun (i : ι) => _inst_3 i) (fun (i : ι) => ϕ i) hcomm hcomm_1)) (supᵢ.{u3, succ u2} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (ConditionallyCompleteLattice.toSupSet.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (Submonoid.instCompleteLatticeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)))) ι (fun (i : ι) => MonoidHom.mrange.{u1, u3, max u3 u1} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (hcomm i)))
+ forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [_inst_2 : DecidableEq.{succ u2} ι] [N : Fintype.{u2} ι] {_inst_3 : ι -> Type.{u1}} [ϕ : forall (i : ι), Monoid.{u1} (_inst_3 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm_1 : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : _inst_3 i) (y : _inst_3 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_3 i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_3 i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_3 i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) (fun (a : _inst_3 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_3 i) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (MulOneClass.toMul.{u1} (_inst_3 i) (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) (fun (a : _inst_3 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_3 j) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (MulOneClass.toMul.{u1} (_inst_3 j) (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm j) y))}, Eq.{succ u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.mrange.{max u2 u1, u3, max (max u1 u2) u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι N (fun (i : ι) => _inst_3 i) (fun (i : ι) => ϕ i) hcomm hcomm_1)) (supᵢ.{u3, succ u2} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (ConditionallyCompleteLattice.toSupSet.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (Submonoid.instCompleteLatticeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)))) ι (fun (i : ι) => MonoidHom.mrange.{u1, u3, max u3 u1} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (hcomm i)))
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_mrange MonoidHom.noncommPiCoprod_mrangeₓ'. -/
@[to_additive]
theorem noncommPiCoprod_mrange : (noncommPiCoprod ϕ hcomm).mrange = ⨆ i : ι, (ϕ i).mrange := by
@@ -251,7 +251,7 @@ namespace MonoidHom
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> Type.{u3}} [_inst_2 : forall (i : ι), Group.{u3} (H i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : H i) (y : H j), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H j) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ j) y))}, Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.range.{max u2 u3, u1} (forall (i : ι), H i) (Pi.group.{u2, u3} ι (fun (i : ι) => H i) (fun (i : ι) => _inst_2 i)) G _inst_1 (MonoidHom.noncommPiCoprod.{u1, u2, u3} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) ϕ hcomm)) (supᵢ.{u1, succ u2} (Subgroup.{u1} G _inst_1) (ConditionallyCompleteLattice.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => MonoidHom.range.{u3, u1} (H i) (_inst_2 i) G _inst_1 (ϕ i)))
but is expected to have type
- forall {G : Type.{u3}} [_inst_1 : Group.{u3} G] {ι : Type.{u2}} [hfin : DecidableEq.{succ u2} ι] [H : Fintype.{u2} ι] {_inst_2 : ι -> Type.{u1}} [ϕ : forall (i : ι), Group.{u1} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) {hcomm_1 : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u1} (_inst_2 i) (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u1} (_inst_2 j) (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm j) y))}, Eq.{succ u3} (Subgroup.{u3} G _inst_1) (MonoidHom.range.{max u2 u1, u3} (forall (i : ι), _inst_2 i) (Pi.group.{u2, u1} ι (fun (i : ι) => _inst_2 i) (fun (i : ι) => ϕ i)) G _inst_1 (MonoidHom.noncommPiCoprod.{u3, u2, u1} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) ι H (fun (i : ι) => _inst_2 i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))) hcomm hcomm_1)) (supᵢ.{u3, succ u2} (Subgroup.{u3} G _inst_1) (ConditionallyCompleteLattice.toSupSet.{u3} (Subgroup.{u3} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Subgroup.{u3} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u3} G _inst_1))) ι (fun (i : ι) => MonoidHom.range.{u1, u3} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i)))
+ forall {G : Type.{u3}} [_inst_1 : Group.{u3} G] {ι : Type.{u2}} [hfin : DecidableEq.{succ u2} ι] [H : Fintype.{u2} ι] {_inst_2 : ι -> Type.{u1}} [ϕ : forall (i : ι), Group.{u1} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) {hcomm_1 : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u1} (_inst_2 i) (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u1} (_inst_2 j) (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm j) y))}, Eq.{succ u3} (Subgroup.{u3} G _inst_1) (MonoidHom.range.{max u2 u1, u3} (forall (i : ι), _inst_2 i) (Pi.group.{u2, u1} ι (fun (i : ι) => _inst_2 i) (fun (i : ι) => ϕ i)) G _inst_1 (MonoidHom.noncommPiCoprod.{u3, u2, u1} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) ι H (fun (i : ι) => _inst_2 i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))) hcomm hcomm_1)) (supᵢ.{u3, succ u2} (Subgroup.{u3} G _inst_1) (ConditionallyCompleteLattice.toSupSet.{u3} (Subgroup.{u3} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Subgroup.{u3} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u3} G _inst_1))) ι (fun (i : ι) => MonoidHom.range.{u1, u3} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i)))
Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_range MonoidHom.noncommPiCoprod_rangeₓ'. -/
-- The subgroup version of `noncomm_pi_coprod_mrange`
@[to_additive]
@@ -274,7 +274,7 @@ theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> Type.{u3}} [_inst_2 : forall (i : ι), Group.{u3} (H i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : H i) (y : H j), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H j) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ j) y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u3, u1} (H i) (_inst_2 i) G _inst_1 (ϕ i))) -> (forall (i : ι), Function.Injective.{succ u3, succ u1} (H i) G (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i))) -> (Function.Injective.{max (succ u2) (succ u3), succ u1} (forall (i : ι), (fun (i : ι) => H i) i) G (coeFn.{max (succ u1) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u1)} (MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => H i) i) G (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => H i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => H i) i) ((fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => H i) i) G (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => H i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => H i) i) ((fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (forall (i : ι), (fun (i : ι) => H i) i) -> G) (MonoidHom.hasCoeToFun.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => H i) i) G (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => H i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => H i) i) ((fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHom.noncommPiCoprod.{u1, u2, u3} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) ϕ hcomm)))
but is expected to have type
- forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u3}} [hfin : Fintype.{u3} ι] {H : ι -> Type.{u1}} [_inst_2 : forall (i : ι), Group.{u1} (H i)] (ϕ : forall (i : ι), MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (forall (x : H i) (y : H j), Commute.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : H i) => G) x) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : H i) => G) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : H i) => G) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : H i) => G) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : H i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) (fun (_x : H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : H i) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (MulOneClass.toMul.{u1} (H i) (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (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} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ i) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) (fun (_x : H j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : H j) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) G (MulOneClass.toMul.{u1} (H j) (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j))))) (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} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ j) y))}, (CompleteLattice.Independent.{succ u3, u2} ι (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1) (fun (i : ι) => MonoidHom.range.{u1, u2} (H i) (_inst_2 i) G _inst_1 (ϕ i))) -> (forall (i : ι), Function.Injective.{succ u1, succ u2} (H i) G (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) (fun (_x : H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : H i) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (MulOneClass.toMul.{u1} (H i) (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (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} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ i))) -> (Function.Injective.{max (succ u3) (succ u1), succ u2} (forall (i : ι), H i) G (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u3) (succ u1), succ u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) (fun (_x : forall (i : ι), H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : forall (i : ι), H i) => G) _x) (MulHomClass.toFunLike.{max (max u2 u3) u1, max u3 u1, u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) G (MulOneClass.toMul.{max u3 u1} (forall (i : ι), H i) (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max (max u2 u3) u1, max u3 u1, u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (MonoidHom.noncommPiCoprod.{u2, u3, u1} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))) ϕ hcomm)))
+ forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u3}} [hfin : Fintype.{u3} ι] {H : ι -> Type.{u1}} [_inst_2 : forall (i : ι), Group.{u1} (H i)] (ϕ : forall (i : ι), MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (forall (x : H i) (y : H j), Commute.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : H i) => G) x) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : H i) => G) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : H i) => G) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : H i) => G) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : H i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) (fun (_x : H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : H i) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (MulOneClass.toMul.{u1} (H i) (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (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} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ i) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) (fun (_x : H j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : H j) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) G (MulOneClass.toMul.{u1} (H j) (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j))))) (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} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ j) y))}, (CompleteLattice.Independent.{succ u3, u2} ι (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1) (fun (i : ι) => MonoidHom.range.{u1, u2} (H i) (_inst_2 i) G _inst_1 (ϕ i))) -> (forall (i : ι), Function.Injective.{succ u1, succ u2} (H i) G (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) (fun (_x : H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : H i) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (MulOneClass.toMul.{u1} (H i) (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (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} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ i))) -> (Function.Injective.{max (succ u3) (succ u1), succ u2} (forall (i : ι), H i) G (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u3) (succ u1), succ u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) (fun (_x : forall (i : ι), H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : forall (i : ι), H i) => G) _x) (MulHomClass.toFunLike.{max (max u2 u3) u1, max u3 u1, u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) G (MulOneClass.toMul.{max u3 u1} (forall (i : ι), H i) (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max (max u2 u3) u1, max u3 u1, u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (MonoidHom.noncommPiCoprod.{u2, u3, u1} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))) ϕ hcomm)))
Case conversion may be inaccurate. Consider using '#align monoid_hom.injective_noncomm_pi_coprod_of_independent MonoidHom.injective_noncommPiCoprod_of_independentₓ'. -/
@[to_additive]
theorem injective_noncommPiCoprod_of_independent
@@ -302,7 +302,7 @@ omit hfin
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> Type.{u3}} [_inst_2 : forall (i : ι), Group.{u3} (H i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : H i) (y : H j), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H j) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ j) y))) -> (forall [_inst_3 : Finite.{succ u2} ι] [_inst_4 : forall (i : ι), Fintype.{u3} (H i)], (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (Nat.coprime (Fintype.card.{u3} (H i) (_inst_4 i)) (Fintype.card.{u3} (H j) (_inst_4 j)))) -> (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u3, u1} (H i) (_inst_2 i) G _inst_1 (ϕ i))))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u3}} [H : DecidableEq.{succ u3} ι] {_inst_2 : ι -> Type.{u2}} [ϕ : forall (i : ι), Group.{u2} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), (forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u2} (_inst_2 i) (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i))))) (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} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u2} (_inst_2 j) (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j))))) (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} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (hcomm j) y))) -> (forall [_inst_4 : Finite.{succ u3} ι] [hcoprime : forall (i : ι), Fintype.{u2} (_inst_2 i)], (forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (Nat.coprime (Fintype.card.{u2} (_inst_2 i) (hcoprime i)) (Fintype.card.{u2} (_inst_2 j) (hcoprime j)))) -> (CompleteLattice.Independent.{succ u3, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u2, u1} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i))))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u3}} [H : DecidableEq.{succ u3} ι] {_inst_2 : ι -> Type.{u2}} [ϕ : forall (i : ι), Group.{u2} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), (forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u2} (_inst_2 i) (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i))))) (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} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u2} (_inst_2 j) (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j))))) (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} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (hcomm j) y))) -> (forall [_inst_4 : Finite.{succ u3} ι] [hcoprime : forall (i : ι), Fintype.{u2} (_inst_2 i)], (forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (Nat.coprime (Fintype.card.{u2} (_inst_2 i) (hcoprime i)) (Fintype.card.{u2} (_inst_2 j) (hcoprime j)))) -> (CompleteLattice.Independent.{succ u3, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u2, u1} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i))))
Case conversion may be inaccurate. Consider using '#align monoid_hom.independent_range_of_coprime_order MonoidHom.independent_range_of_coprime_orderₓ'. -/
@[to_additive]
theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
@@ -366,7 +366,7 @@ include hcomm
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (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 i)) (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 j)), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (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 i)) 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 i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Subgroup.toGroup.{u1} G _inst_1 (H i))))) (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 i)) 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 i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Subgroup.toGroup.{u1} G _inst_1 (H i))))) (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 i)) -> 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 i)) 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 i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Subgroup.toGroup.{u1} G _inst_1 (H i))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (H i)) x) (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 j)) 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 j)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Subgroup.toGroup.{u1} G _inst_1 (H j))))) (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 j)) 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 j)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Subgroup.toGroup.{u1} G _inst_1 (H j))))) (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 j)) -> 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 j)) 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 j)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Subgroup.toGroup.{u1} G _inst_1 (H j))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (H j)) y)))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (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 i))) (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 j))), Commute.{u1} ((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 i))) => G) x) (MulOneClass.toMul.{u1} ((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 i))) => G) x) (Monoid.toMulOneClass.{u1} ((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 i))) => G) x) (DivInvMonoid.toMonoid.{u1} ((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 i))) => G) x) (Group.toDivInvMonoid.{u1} ((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 i))) => G) x) _inst_1)))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) (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 i))) => (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 i))) => 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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) 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 i))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (H i)) x) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) (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 j))) => (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 j))) => 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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) 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 j))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j)))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (H j)) y)))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (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 i))) (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 j))), Commute.{u1} ((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 i))) => G) x) (MulOneClass.toMul.{u1} ((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 i))) => G) x) (Monoid.toMulOneClass.{u1} ((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 i))) => G) x) (DivInvMonoid.toMonoid.{u1} ((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 i))) => G) x) (Group.toDivInvMonoid.{u1} ((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 i))) => G) x) _inst_1)))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) (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 i))) => (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 i))) => 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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) 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 i))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (H i)) x) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) (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 j))) => (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 j))) => 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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) 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 j))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j)))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (H j)) y)))
Case conversion may be inaccurate. Consider using '#align subgroup.commute_subtype_of_commute Subgroup.commute_subtype_of_commuteₓ'. -/
@[to_additive]
theorem commute_subtype_of_commute (i j : ι) (hne : i ≠ j) :
@@ -402,7 +402,7 @@ include hdec
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))} (i : ι) (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 i)), Eq.{succ u1} G (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ (max u2 u1)) (succ u1)} (MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) -> G) (MonoidHom.hasCoeToFun.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u1} G _inst_1 ((fun (i : ι) => H i) i)) i 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} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) 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 i)) 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 i)) 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 i)) 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 i)))))) y)
but is expected to have type
- forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u1}} [hdec : DecidableEq.{succ u1} ι] [hfin : Fintype.{u1} ι] {H : ι -> (Subgroup.{u2} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u1} ι i j) -> (forall (x : G) (y : G), (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i)) -> (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) y (H j)) -> (Commute.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) x y))} (i : ι) (y : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => G) (Pi.mulSingle.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u2} G _inst_1 (H i)) i y)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), succ u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (_x : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => G) _x) (MulHomClass.toFunLike.{max u2 u1, max u2 u1, u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (MulOneClass.toMul.{max u2 u1} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, max u2 u1, u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (Subgroup.noncommPiCoprod.{u2, u1} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm) (Pi.mulSingle.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u2} G _inst_1 (H i)) i y)) (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 i))) y)
+ forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u1}} [hdec : DecidableEq.{succ u1} ι] [hfin : Fintype.{u1} ι] {H : ι -> (Subgroup.{u2} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u1} ι i j) -> (forall (x : G) (y : G), (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i)) -> (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) y (H j)) -> (Commute.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) x y))} (i : ι) (y : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => G) (Pi.mulSingle.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u2} G _inst_1 (H i)) i y)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), succ u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (_x : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => G) _x) (MulHomClass.toFunLike.{max u2 u1, max u2 u1, u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (MulOneClass.toMul.{max u2 u1} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, max u2 u1, u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (Subgroup.noncommPiCoprod.{u2, u1} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm) (Pi.mulSingle.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u2} G _inst_1 (H i)) i y)) (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 i))) y)
Case conversion may be inaccurate. Consider using '#align subgroup.noncomm_pi_coprod_mul_single Subgroup.noncommPiCoprod_mulSingleₓ'. -/
@[simp, to_additive]
theorem noncommPiCoprod_mulSingle (i : ι) (y : H i) :
@@ -428,7 +428,7 @@ theorem noncommPiCoprod_range : (noncommPiCoprod hcomm).range = ⨆ i : ι, H i
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) H) -> (Function.Injective.{max (succ u2) (succ u1), succ u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ (max u2 u1)) (succ u1)} (MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) -> G) (MonoidHom.hasCoeToFun.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm)))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) H) -> (Function.Injective.{max (succ u1) (succ u2), succ u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), succ u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (_x : forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) => G) _x) (MulHomClass.toFunLike.{max u1 u2, max u1 u2, u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (MulOneClass.toMul.{max u1 u2} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, max u1 u2, u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm)))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) H) -> (Function.Injective.{max (succ u1) (succ u2), succ u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), succ u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (_x : forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) => G) _x) (MulHomClass.toFunLike.{max u1 u2, max u1 u2, u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (MulOneClass.toMul.{max u1 u2} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, max u1 u2, u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm)))
Case conversion may be inaccurate. Consider using '#align subgroup.injective_noncomm_pi_coprod_of_independent Subgroup.injective_noncommPiCoprod_of_independentₓ'. -/
@[to_additive]
theorem injective_noncommPiCoprod_of_independent (hind : CompleteLattice.Independent H) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/271bf175e6c51b8d31d6c0107b7bb4a967c7277e
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joachim Breitner
! This file was ported from Lean 3 source module group_theory.noncomm_pi_coprod
-! leanprover-community/mathlib commit 6f9f36364eae3f42368b04858fd66d6d9ae730d8
+! leanprover-community/mathlib commit ef7acf407d265ad4081c8998687e994fa80ba70c
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -17,6 +17,9 @@ import Mathbin.Order.SupIndep
/-!
# Canonical homomorphism from a finite family of monoids
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file defines the construction of the canonical homomorphism from a family of monoids.
Given a family of morphisms `ϕ i : N i →* M` for each `i : ι` where elements in the
mathlib commit https://github.com/leanprover-community/mathlib/commit/3ade05ac9447ae31a22d2ea5423435e054131240
@@ -53,6 +53,12 @@ namespace Subgroup
variable {G : Type _} [Group G]
+/- warning: subgroup.eq_one_of_noncomm_prod_eq_one_of_independent -> Subgroup.eq_one_of_noncommProd_eq_one_of_independent is a dubious translation:
+lean 3 declaration is
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} (s : Finset.{u2} ι) (f : ι -> G) (comm : Set.Pairwise.{u2} ι ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} ι) (Set.{u2} ι) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} ι) (Set.{u2} ι) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} ι) (Set.{u2} ι) (Finset.Set.hasCoeT.{u2} ι))) s) (fun (a : ι) (b : ι) => Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (f a) (f b))) (K : ι -> (Subgroup.{u1} G _inst_1)), (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) K) -> (forall (x : ι), (Membership.Mem.{u2, u2} ι (Finset.{u2} ι) (Finset.hasMem.{u2} ι) 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)) (f x) (K x))) -> (Eq.{succ u1} G (Finset.noncommProd.{u2, u1} ι G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) s f comm) (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 (i : ι), (Membership.Mem.{u2, u2} ι (Finset.{u2} ι) (Finset.hasMem.{u2} ι) i s) -> (Eq.{succ u1} G (f i) (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] {ι : Type.{u2}} (s : Finset.{u2} ι) (f : ι -> G) (comm : Set.Pairwise.{u2} ι (Finset.toSet.{u2} ι s) (fun (a : ι) (b : ι) => Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (f a) (f b))) (K : ι -> (Subgroup.{u1} G _inst_1)), (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) K) -> (forall (x : ι), (Membership.mem.{u2, u2} ι (Finset.{u2} ι) (Finset.instMembershipFinset.{u2} ι) 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)) (f x) (K x))) -> (Eq.{succ u1} G (Finset.noncommProd.{u2, u1} ι G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) s f comm) (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 (i : ι), (Membership.mem.{u2, u2} ι (Finset.{u2} ι) (Finset.instMembershipFinset.{u2} ι) i s) -> (Eq.{succ u1} G (f i) (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_one_of_noncomm_prod_eq_one_of_independent Subgroup.eq_one_of_noncommProd_eq_one_of_independentₓ'. -/
/-- `finset.noncomm_prod` is “injective” in `f` if `f` maps into independent subgroups. This
generalizes (one direction of) `subgroup.disjoint_iff_mul_eq_one`. -/
@[to_additive
@@ -83,7 +89,7 @@ theorem eq_one_of_noncommProd_eq_one_of_independent {ι : Type _} (s : Finset ι
· exact heq1i
· exact ih hcomm hmem.2 heq1S _ h
#align subgroup.eq_one_of_noncomm_prod_eq_one_of_independent Subgroup.eq_one_of_noncommProd_eq_one_of_independent
-#align add_subgroup.eq_zero_of_noncomm_sum_eq_zero_of_independent AddSubgroup.eq_zero_of_noncomm_sum_eq_zero_of_independent
+#align add_subgroup.eq_zero_of_noncomm_sum_eq_zero_of_independent AddSubgroup.eq_zero_of_noncommSum_eq_zero_of_independent
end Subgroup
@@ -110,6 +116,12 @@ variable (f g : ∀ i : ι, N i)
namespace MonoidHom
+/- warning: monoid_hom.noncomm_pi_coprod -> MonoidHom.noncommPiCoprod is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)), (Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y))) -> (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)), (Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (MulOneClass.toMul.{u3} (N i) (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N j) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (MulOneClass.toMul.{u3} (N j) (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ j) y))) -> (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod MonoidHom.noncommPiCoprodₓ'. -/
/-- The canonical homomorphism from a family of monoids. -/
@[to_additive
"The canonical homomorphism from a family of additive monoids.\n\nSee also `linear_map.lsum` for a linear version without the commutativity assumption."]
@@ -134,6 +146,12 @@ variable {hcomm}
include hdec
+/- warning: monoid_hom.noncomm_pi_coprod_mul_single -> MonoidHom.noncommPiCoprod_mulSingle is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y))} (i : ι) (y : N i), Eq.{succ u1} M (coeFn.{max (succ u1) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u1)} (MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => N i) i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) ((fun (i : ι) => _inst_3 i) i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => N i) i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) ((fun (i : ι) => _inst_3 i) i))) (Monoid.toMulOneClass.{u1} M _inst_1)) => (forall (i : ι), (fun (i : ι) => N i) i) -> M) (MonoidHom.hasCoeToFun.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => N i) i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) ((fun (i : ι) => _inst_3 i) i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.noncommPiCoprod.{u1, u2, u3} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm) (Pi.mulSingle.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => N i) i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => MulOneClass.toHasOne.{u3} ((fun (i : ι) => N i) i) (Monoid.toMulOneClass.{u3} ((fun (i : ι) => N i) i) (_inst_3 i))) i y)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) y)
+but is expected to have type
+ forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u1}} [_inst_3 : forall (i : ι), Monoid.{u1} (N i)] (ϕ : forall (i : ι), MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (MulOneClass.toMul.{u1} (N i) (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N j) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) M (MulOneClass.toMul.{u1} (N j) (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N j) M (Monoid.toMulOneClass.{u1} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ j) y))} (i : ι) (y : N i), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : forall (i : ι), N i) => M) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => N i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Monoid.toOne.{u1} (N i) (_inst_3 i)) i y)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u2) (succ u1), succ u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) (fun (_x : forall (i : ι), N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : forall (i : ι), N i) => M) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, max u2 u1, u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) M (MulOneClass.toMul.{max u2 u1} (forall (i : ι), N i) (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max (max u3 u2) u1, max u2 u1, u3} (MonoidHom.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => N i) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Monoid.toOne.{u1} (N i) (_inst_3 i)) i y)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) _x) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (MulOneClass.toMul.{u1} (N i) (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (N i) M (Monoid.toMulOneClass.{u1} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (ϕ i) y)
+Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_mul_single MonoidHom.noncommPiCoprod_mulSingleₓ'. -/
@[simp, to_additive]
theorem noncommPiCoprod_mulSingle (i : ι) (y : N i) :
noncommPiCoprod ϕ hcomm (Pi.mulSingle i y) = ϕ i y :=
@@ -153,6 +171,12 @@ theorem noncommPiCoprod_mulSingle (i : ι) (y : N i) :
omit hcomm
+/- warning: monoid_hom.noncomm_pi_coprod_equiv -> MonoidHom.noncommPiCoprodEquiv is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)], Equiv.{max 1 (succ u2) (succ u1) (succ u3), max (succ u1) (succ (max u2 u3))} (Subtype.{max (succ u2) (succ u1) (succ u3)} (forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y)))) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)], Equiv.{max 1 (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ (max u2 u3))} (Subtype.{max (max (succ u1) (succ u2)) (succ u3)} (forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) x) _inst_1)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) (fun (_x : N i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N i) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (MulOneClass.toMul.{u3} (N i) (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ i) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) (fun (_x : N j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N j) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (MulOneClass.toMul.{u3} (N j) (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)))) (ϕ j) y)))) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_equiv MonoidHom.noncommPiCoprodEquivₓ'. -/
/-- The universal property of `noncomm_pi_coprod` -/
@[to_additive "The universal property of `noncomm_pi_coprod`"]
def noncommPiCoprodEquiv :
@@ -173,6 +197,12 @@ omit hdec
include hcomm
+/- warning: monoid_hom.noncomm_pi_coprod_mrange -> MonoidHom.noncommPiCoprod_mrange is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {ι : Type.{u2}} [_inst_2 : Fintype.{u2} ι] {N : ι -> Type.{u3}} [_inst_3 : forall (i : ι), Monoid.{u3} (N i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) {hcomm : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : N i) (y : N j), Commute.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N i) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) => (N j) -> M) (MonoidHom.hasCoeToFun.{u3, u1} (N j) M (Monoid.toMulOneClass.{u3} (N j) (_inst_3 j)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ j) y))}, Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.mrange.{max u2 u3, u1, max u1 u2 u3} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{max u2 u3, u1} (forall (i : ι), N i) M (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => N i) (fun (i : ι) => Monoid.toMulOneClass.{u3} (N i) (_inst_3 i))) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.noncommPiCoprod.{u1, u2, u3} M _inst_1 ι _inst_2 (fun (i : ι) => N i) (fun (i : ι) => _inst_3 i) ϕ hcomm)) (supᵢ.{u1, succ u2} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (ConditionallyCompleteLattice.toHasSup.{u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (Submonoid.completeLattice.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)))) ι (fun (i : ι) => MonoidHom.mrange.{u3, u1, max u1 u3} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{u3, u1} (N i) M (Monoid.toMulOneClass.{u3} (N i) (_inst_3 i)) (Monoid.toMulOneClass.{u1} M _inst_1)) (ϕ i)))
+but is expected to have type
+ forall {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {ι : Type.{u2}} [_inst_2 : DecidableEq.{succ u2} ι] [N : Fintype.{u2} ι] {_inst_3 : ι -> Type.{u1}} [ϕ : forall (i : ι), Monoid.{u1} (_inst_3 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) {hcomm_1 : Pairwise.{u2} ι (fun (i : ι) (j : ι) => forall (x : _inst_3 i) (y : _inst_3 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_3 i) => M) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_3 i) => M) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_3 i) => M) x) _inst_1)) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) (fun (a : _inst_3 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_3 i) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (MulOneClass.toMul.{u1} (_inst_3 i) (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) (fun (a : _inst_3 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_3 j) => M) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (MulOneClass.toMul.{u1} (_inst_3 j) (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)) (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 j) M (Monoid.toMulOneClass.{u1} (_inst_3 j) (ϕ j)) (Monoid.toMulOneClass.{u3} M _inst_1)))) (hcomm j) y))}, Eq.{succ u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.mrange.{max u2 u1, u3, max (max u1 u2) u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{max u2 u1, u3} (forall (i : ι), _inst_3 i) M (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => _inst_3 i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i))) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.noncommPiCoprod.{u3, u2, u1} M _inst_1 ι N (fun (i : ι) => _inst_3 i) (fun (i : ι) => ϕ i) hcomm hcomm_1)) (supᵢ.{u3, succ u2} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (ConditionallyCompleteLattice.toSupSet.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (Submonoid.instCompleteLatticeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)))) ι (fun (i : ι) => MonoidHom.mrange.{u1, u3, max u3 u1} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u3} (_inst_3 i) M (Monoid.toMulOneClass.{u1} (_inst_3 i) (ϕ i)) (Monoid.toMulOneClass.{u3} M _inst_1)) (hcomm i)))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_mrange MonoidHom.noncommPiCoprod_mrangeₓ'. -/
@[to_additive]
theorem noncommPiCoprod_mrange : (noncommPiCoprod ϕ hcomm).mrange = ⨆ i : ι, (ϕ i).mrange := by
classical
@@ -214,6 +244,12 @@ include hfin
namespace MonoidHom
+/- warning: monoid_hom.noncomm_pi_coprod_range -> MonoidHom.noncommPiCoprod_range is a dubious translation:
+lean 3 declaration is
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> Type.{u3}} [_inst_2 : forall (i : ι), Group.{u3} (H i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : H i) (y : H j), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H j) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ j) y))}, Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.range.{max u2 u3, u1} (forall (i : ι), H i) (Pi.group.{u2, u3} ι (fun (i : ι) => H i) (fun (i : ι) => _inst_2 i)) G _inst_1 (MonoidHom.noncommPiCoprod.{u1, u2, u3} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) ϕ hcomm)) (supᵢ.{u1, succ u2} (Subgroup.{u1} G _inst_1) (ConditionallyCompleteLattice.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => MonoidHom.range.{u3, u1} (H i) (_inst_2 i) G _inst_1 (ϕ i)))
+but is expected to have type
+ forall {G : Type.{u3}} [_inst_1 : Group.{u3} G] {ι : Type.{u2}} [hfin : DecidableEq.{succ u2} ι] [H : Fintype.{u2} ι] {_inst_2 : ι -> Type.{u1}} [ϕ : forall (i : ι), Group.{u1} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) {hcomm_1 : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u1} (_inst_2 i) (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 i) G (Monoid.toMulOneClass.{u1} (_inst_2 i) (DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u1} (_inst_2 j) (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j))))) (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u1, u3} (MonoidHom.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u3} (_inst_2 j) G (Monoid.toMulOneClass.{u1} (_inst_2 j) (DivInvMonoid.toMonoid.{u1} (_inst_2 j) (Group.toDivInvMonoid.{u1} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)))))) (hcomm j) y))}, Eq.{succ u3} (Subgroup.{u3} G _inst_1) (MonoidHom.range.{max u2 u1, u3} (forall (i : ι), _inst_2 i) (Pi.group.{u2, u1} ι (fun (i : ι) => _inst_2 i) (fun (i : ι) => ϕ i)) G _inst_1 (MonoidHom.noncommPiCoprod.{u3, u2, u1} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) ι H (fun (i : ι) => _inst_2 i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (_inst_2 i) (Group.toDivInvMonoid.{u1} (_inst_2 i) (ϕ i))) hcomm hcomm_1)) (supᵢ.{u3, succ u2} (Subgroup.{u3} G _inst_1) (ConditionallyCompleteLattice.toSupSet.{u3} (Subgroup.{u3} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Subgroup.{u3} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u3} G _inst_1))) ι (fun (i : ι) => MonoidHom.range.{u1, u3} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i)))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.noncomm_pi_coprod_range MonoidHom.noncommPiCoprod_rangeₓ'. -/
-- The subgroup version of `noncomm_pi_coprod_mrange`
@[to_additive]
theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (ϕ i).range := by
@@ -231,6 +267,12 @@ theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (
#align monoid_hom.noncomm_pi_coprod_range MonoidHom.noncommPiCoprod_range
#align add_monoid_hom.noncomm_pi_coprod_range AddMonoidHom.noncommPiCoprod_range
+/- warning: monoid_hom.injective_noncomm_pi_coprod_of_independent -> MonoidHom.injective_noncommPiCoprod_of_independent is a dubious translation:
+lean 3 declaration is
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> Type.{u3}} [_inst_2 : forall (i : ι), Group.{u3} (H i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : H i) (y : H j), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H j) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ j) y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u3, u1} (H i) (_inst_2 i) G _inst_1 (ϕ i))) -> (forall (i : ι), Function.Injective.{succ u3, succ u1} (H i) G (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i))) -> (Function.Injective.{max (succ u2) (succ u3), succ u1} (forall (i : ι), (fun (i : ι) => H i) i) G (coeFn.{max (succ u1) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u1)} (MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => H i) i) G (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => H i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => H i) i) ((fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => H i) i) G (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => H i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => H i) i) ((fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (forall (i : ι), (fun (i : ι) => H i) i) -> G) (MonoidHom.hasCoeToFun.{max u2 u3, u1} (forall (i : ι), (fun (i : ι) => H i) i) G (Pi.mulOneClass.{u2, u3} ι (fun (i : ι) => (fun (i : ι) => H i) i) (fun (i : ι) => Monoid.toMulOneClass.{u3} ((fun (i : ι) => H i) i) ((fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHom.noncommPiCoprod.{u1, u2, u3} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i))) ϕ hcomm)))
+but is expected to have type
+ forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u3}} [hfin : Fintype.{u3} ι] {H : ι -> Type.{u1}} [_inst_2 : forall (i : ι), Group.{u1} (H i)] (ϕ : forall (i : ι), MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) {hcomm : forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (forall (x : H i) (y : H j), Commute.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : H i) => G) x) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : H i) => G) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : H i) => G) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : H i) => G) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : H i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) (fun (_x : H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : H i) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (MulOneClass.toMul.{u1} (H i) (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (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} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ i) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) (fun (_x : H j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : H j) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) G (MulOneClass.toMul.{u1} (H j) (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j))))) (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} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H j) G (Monoid.toMulOneClass.{u1} (H j) (DivInvMonoid.toMonoid.{u1} (H j) (Group.toDivInvMonoid.{u1} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ j) y))}, (CompleteLattice.Independent.{succ u3, u2} ι (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1) (fun (i : ι) => MonoidHom.range.{u1, u2} (H i) (_inst_2 i) G _inst_1 (ϕ i))) -> (forall (i : ι), Function.Injective.{succ u1, succ u2} (H i) G (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) (fun (_x : H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : H i) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (MulOneClass.toMul.{u1} (H i) (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (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} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} (H i) G (Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (ϕ i))) -> (Function.Injective.{max (succ u3) (succ u1), succ u2} (forall (i : ι), H i) G (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u3) (succ u1), succ u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) (fun (_x : forall (i : ι), H i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : forall (i : ι), H i) => G) _x) (MulHomClass.toFunLike.{max (max u2 u3) u1, max u3 u1, u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) G (MulOneClass.toMul.{max u3 u1} (forall (i : ι), H i) (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i)))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max (max u2 u3) u1, max u3 u1, u2} (MonoidHom.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{max u3 u1, u2} (forall (i : ι), H i) G (Pi.mulOneClass.{u3, u1} ι (fun (i : ι) => H i) (fun (i : ι) => Monoid.toMulOneClass.{u1} (H i) (DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (MonoidHom.noncommPiCoprod.{u2, u3, u1} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)) ι hfin (fun (i : ι) => H i) (fun (i : ι) => DivInvMonoid.toMonoid.{u1} (H i) (Group.toDivInvMonoid.{u1} (H i) (_inst_2 i))) ϕ hcomm)))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.injective_noncomm_pi_coprod_of_independent MonoidHom.injective_noncommPiCoprod_of_independentₓ'. -/
@[to_additive]
theorem injective_noncommPiCoprod_of_independent
(hind : CompleteLattice.Independent fun i => (ϕ i).range)
@@ -253,6 +295,12 @@ variable (hcomm)
omit hfin
+/- warning: monoid_hom.independent_range_of_coprime_order -> MonoidHom.independent_range_of_coprime_order is a dubious translation:
+lean 3 declaration is
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> Type.{u3}} [_inst_2 : forall (i : ι), Group.{u3} (H i)] (ϕ : forall (i : ι), MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (x : H i) (y : H j), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H i) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H i) G (Monoid.toMulOneClass.{u3} (H i) (DivInvMonoid.toMonoid.{u3} (H i) (Group.toDivInvMonoid.{u3} (H i) (_inst_2 i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ i) x) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (H j) -> G) (MonoidHom.hasCoeToFun.{u3, u1} (H j) G (Monoid.toMulOneClass.{u3} (H j) (DivInvMonoid.toMonoid.{u3} (H j) (Group.toDivInvMonoid.{u3} (H j) (_inst_2 j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (ϕ j) y))) -> (forall [_inst_3 : Finite.{succ u2} ι] [_inst_4 : forall (i : ι), Fintype.{u3} (H i)], (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (Nat.coprime (Fintype.card.{u3} (H i) (_inst_4 i)) (Fintype.card.{u3} (H j) (_inst_4 j)))) -> (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u3, u1} (H i) (_inst_2 i) G _inst_1 (ϕ i))))
+but is expected to have type
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u3}} [H : DecidableEq.{succ u3} ι] {_inst_2 : ι -> Type.{u2}} [ϕ : forall (i : ι), Group.{u2} (_inst_2 i)] (hcomm : forall (i : ι), MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), (forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (forall (x : _inst_2 i) (y : _inst_2 j), Commute.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) (DivInvMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) (Group.toDivInvMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) x) _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) (fun (a : _inst_2 i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 i) => G) a) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) G (MulOneClass.toMul.{u2} (_inst_2 i) (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i))))) (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} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} (_inst_2 i) G (Monoid.toMulOneClass.{u2} (_inst_2 i) (DivInvMonoid.toMonoid.{u2} (_inst_2 i) (Group.toDivInvMonoid.{u2} (_inst_2 i) (ϕ i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (hcomm i) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) (fun (a : _inst_2 j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : _inst_2 j) => G) a) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) G (MulOneClass.toMul.{u2} (_inst_2 j) (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j))))) (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} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} (_inst_2 j) G (Monoid.toMulOneClass.{u2} (_inst_2 j) (DivInvMonoid.toMonoid.{u2} (_inst_2 j) (Group.toDivInvMonoid.{u2} (_inst_2 j) (ϕ j)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (hcomm j) y))) -> (forall [_inst_4 : Finite.{succ u3} ι] [hcoprime : forall (i : ι), Fintype.{u2} (_inst_2 i)], (forall (i : ι) (j : ι), (Ne.{succ u3} ι i j) -> (Nat.coprime (Fintype.card.{u2} (_inst_2 i) (hcoprime i)) (Fintype.card.{u2} (_inst_2 j) (hcoprime j)))) -> (CompleteLattice.Independent.{succ u3, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) (fun (i : ι) => MonoidHom.range.{u2, u1} (_inst_2 i) (ϕ i) G _inst_1 (hcomm i))))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.independent_range_of_coprime_order MonoidHom.independent_range_of_coprime_orderₓ'. -/
@[to_additive]
theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
(hcoprime : ∀ i j, i ≠ j → Nat.coprime (Fintype.card (H i)) (Fintype.card (H j))) :
@@ -311,6 +359,12 @@ variable (hcomm : ∀ i j : ι, i ≠ j → ∀ x y : G, x ∈ H i → y ∈ H j
include hcomm
+/- warning: subgroup.commute_subtype_of_commute -> Subgroup.commute_subtype_of_commute is a dubious translation:
+lean 3 declaration is
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (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 i)) (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 j)), Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (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 i)) 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 i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Subgroup.toGroup.{u1} G _inst_1 (H i))))) (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 i)) 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 i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Subgroup.toGroup.{u1} G _inst_1 (H i))))) (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 i)) -> 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 i)) 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 i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Subgroup.toGroup.{u1} G _inst_1 (H i))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (H i)) x) (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 j)) 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 j)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Subgroup.toGroup.{u1} G _inst_1 (H j))))) (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 j)) 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 j)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Subgroup.toGroup.{u1} G _inst_1 (H j))))) (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 j)) -> 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 j)) 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 j)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (Subgroup.toGroup.{u1} G _inst_1 (H j))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (H j)) y)))
+but is expected to have type
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (forall (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 i))) (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 j))), Commute.{u1} ((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 i))) => G) x) (MulOneClass.toMul.{u1} ((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 i))) => G) x) (Monoid.toMulOneClass.{u1} ((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 i))) => G) x) (DivInvMonoid.toMonoid.{u1} ((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 i))) => G) x) (Group.toDivInvMonoid.{u1} ((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 i))) => G) x) _inst_1)))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) (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 i))) => (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 i))) => 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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) 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 i))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (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 i))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (H i)) x) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) (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 j))) => (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 j))) => 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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) 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 j))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j)))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (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 j))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H j))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (H j)) y)))
+Case conversion may be inaccurate. Consider using '#align subgroup.commute_subtype_of_commute Subgroup.commute_subtype_of_commuteₓ'. -/
@[to_additive]
theorem commute_subtype_of_commute (i j : ι) (hne : i ≠ j) :
∀ (x : H i) (y : H j), Commute ((H i).Subtype x) ((H j).Subtype y) :=
@@ -322,6 +376,12 @@ theorem commute_subtype_of_commute (i j : ι) (hne : i ≠ j) :
include hfin
+/- warning: subgroup.noncomm_pi_coprod -> Subgroup.noncommPiCoprod is a dubious translation:
+lean 3 declaration is
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Subgroup.toGroup.{u1} G _inst_1 (H i)))))) (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] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))
+Case conversion may be inaccurate. Consider using '#align subgroup.noncomm_pi_coprod Subgroup.noncommPiCoprodₓ'. -/
/-- The canonical homomorphism from a family of subgroups where elements from different subgroups
commute -/
@[to_additive
@@ -335,20 +395,38 @@ variable {hcomm}
include hdec
+/- warning: subgroup.noncomm_pi_coprod_mul_single -> Subgroup.noncommPiCoprod_mulSingle is a dubious translation:
+lean 3 declaration is
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hdec : DecidableEq.{succ u2} ι] [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))} (i : ι) (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 i)), Eq.{succ u1} G (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ (max u2 u1)) (succ u1)} (MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) -> G) (MonoidHom.hasCoeToFun.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm) (Pi.mulSingle.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u1} G _inst_1 ((fun (i : ι) => H i) i)) i 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} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) 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 i)) 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 i)) 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 i)) 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 i)))))) y)
+but is expected to have type
+ forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u1}} [hdec : DecidableEq.{succ u1} ι] [hfin : Fintype.{u1} ι] {H : ι -> (Subgroup.{u2} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u1} ι i j) -> (forall (x : G) (y : G), (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i)) -> (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) y (H j)) -> (Commute.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) x y))} (i : ι) (y : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => G) (Pi.mulSingle.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u2} G _inst_1 (H i)) i y)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), succ u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (_x : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) => G) _x) (MulHomClass.toFunLike.{max u2 u1, max u2 u1, u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (MulOneClass.toMul.{max u2 u1} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, max u2 u1, u2} (MonoidHom.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (i : ι) => 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 i)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (Subgroup.noncommPiCoprod.{u2, u1} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm) (Pi.mulSingle.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (H i))) (fun (a : ι) (b : ι) => hdec a b) (fun (i : ι) => Subgroup.one.{u2} G _inst_1 (H i)) i y)) (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 i))) y)
+Case conversion may be inaccurate. Consider using '#align subgroup.noncomm_pi_coprod_mul_single Subgroup.noncommPiCoprod_mulSingleₓ'. -/
@[simp, to_additive]
theorem noncommPiCoprod_mulSingle (i : ι) (y : H i) :
noncommPiCoprod hcomm (Pi.mulSingle i y) = y := by apply MonoidHom.noncommPiCoprod_mulSingle
#align subgroup.noncomm_pi_coprod_mul_single Subgroup.noncommPiCoprod_mulSingle
-#align add_subgroup.noncomm_pi_coprod_single AddSubgroup.noncomm_pi_coprod_single
+#align add_subgroup.noncomm_pi_coprod_single AddSubgroup.noncommPiCoprod_single
omit hdec
+/- warning: subgroup.noncomm_pi_coprod_range -> Subgroup.noncommPiCoprod_range is a dubious translation:
+lean 3 declaration is
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))}, Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.range.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (Pi.group.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (fun (i : ι) => Subgroup.toGroup.{u1} G _inst_1 (H i))) G _inst_1 (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm)) (supᵢ.{u1, succ u2} (Subgroup.{u1} G _inst_1) (ConditionallyCompleteLattice.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => H i))
+but is expected to have type
+ forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {ι : Type.{u1}} [hfin : DecidableEq.{succ u1} ι] [H : Fintype.{u1} ι] {hcomm : ι -> (Subgroup.{u2} G _inst_1)} {hcomm_1 : forall (i : ι) (j : ι), (Ne.{succ u1} ι i j) -> (forall (x : G) (y : G), (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (hcomm i)) -> (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) y (hcomm j)) -> (Commute.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) x y))}, Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.range.{max u2 u1, u2} (forall (i : ι), Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (hcomm i))) (Pi.group.{u1, u2} ι (fun (i : ι) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (hcomm i))) (fun (i : ι) => Subgroup.toGroup.{u2} G _inst_1 (hcomm i))) G _inst_1 (Subgroup.noncommPiCoprod.{u2, u1} G _inst_1 ι H (fun (i : ι) => hcomm i) hcomm_1)) (supᵢ.{u2, succ u1} (Subgroup.{u2} G _inst_1) (ConditionallyCompleteLattice.toSupSet.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))) ι (fun (i : ι) => hcomm i))
+Case conversion may be inaccurate. Consider using '#align subgroup.noncomm_pi_coprod_range Subgroup.noncommPiCoprod_rangeₓ'. -/
@[to_additive]
theorem noncommPiCoprod_range : (noncommPiCoprod hcomm).range = ⨆ i : ι, H i := by
simp [noncomm_pi_coprod, MonoidHom.noncommPiCoprod_range]
#align subgroup.noncomm_pi_coprod_range Subgroup.noncommPiCoprod_range
-#align add_subgroup.noncomm_pi_coprod_range AddSubgroup.noncomm_pi_coprod_range
-
+#align add_subgroup.noncomm_pi_coprod_range AddSubgroup.noncommPiCoprod_range
+
+/- warning: subgroup.injective_noncomm_pi_coprod_of_independent -> Subgroup.injective_noncommPiCoprod_of_independent is a dubious translation:
+lean 3 declaration is
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) H) -> (Function.Injective.{max (succ u2) (succ u1), succ u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ (max u2 u1)) (succ u1)} (MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) -> G) (MonoidHom.hasCoeToFun.{max u2 u1, u1} (forall (i : ι), coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (fun (i : ι) => Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (i : ι) => H i) i)) (Subgroup.toGroup.{u1} G _inst_1 ((fun (i : ι) => H i) i)))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm)))
+but is expected to have type
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [hfin : Fintype.{u2} ι] {H : ι -> (Subgroup.{u1} G _inst_1)} {hcomm : forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))}, (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) H) -> (Function.Injective.{max (succ u1) (succ u2), succ u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), succ u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (_x : forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) => G) _x) (MulHomClass.toFunLike.{max u1 u2, max u1 u2, u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (MulOneClass.toMul.{max u1 u2} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i))))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, max u1 u2, u1} (MonoidHom.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{max u1 u2, u1} (forall (i : ι), Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) G (Pi.mulOneClass.{u2, u1} ι (fun (i : ι) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (H i))) (fun (i : ι) => Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (H i)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.noncommPiCoprod.{u1, u2} G _inst_1 ι hfin (fun (i : ι) => H i) hcomm)))
+Case conversion may be inaccurate. Consider using '#align subgroup.injective_noncomm_pi_coprod_of_independent Subgroup.injective_noncommPiCoprod_of_independentₓ'. -/
@[to_additive]
theorem injective_noncommPiCoprod_of_independent (hind : CompleteLattice.Independent H) :
Function.Injective (noncommPiCoprod hcomm) :=
@@ -358,12 +436,18 @@ theorem injective_noncommPiCoprod_of_independent (hind : CompleteLattice.Indepen
· intro i
exact Subtype.coe_injective
#align subgroup.injective_noncomm_pi_coprod_of_independent Subgroup.injective_noncommPiCoprod_of_independent
-#align add_subgroup.injective_noncomm_pi_coprod_of_independent AddSubgroup.injective_noncomm_pi_coprod_of_independent
+#align add_subgroup.injective_noncomm_pi_coprod_of_independent AddSubgroup.injective_noncommPiCoprod_of_independent
variable (hcomm)
omit hfin
+/- warning: subgroup.independent_of_coprime_order -> Subgroup.independent_of_coprime_order is a dubious translation:
+lean 3 declaration is
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} {H : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 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)) y (H j)) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (forall [_inst_2 : Finite.{succ u2} ι] [_inst_3 : forall (i : ι), Fintype.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i))], (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (Nat.coprime (Fintype.card.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H i)) (_inst_3 i)) (Fintype.card.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (H j)) (_inst_3 j)))) -> (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1) H))
+but is expected to have type
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Type.{u2}} [H : DecidableEq.{succ u2} ι] {hcomm : ι -> (Subgroup.{u1} G _inst_1)}, (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (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 (hcomm 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)) y (hcomm j)) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))) -> (forall [_inst_3 : Finite.{succ u2} ι] [hcoprime : forall (i : ι), Fintype.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (hcomm i)))], (forall (i : ι) (j : ι), (Ne.{succ u2} ι i j) -> (Nat.coprime (Fintype.card.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (hcomm i))) (hcoprime i)) (Fintype.card.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (hcomm j))) (hcoprime j)))) -> (CompleteLattice.Independent.{succ u2, u1} ι (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1) hcomm))
+Case conversion may be inaccurate. Consider using '#align subgroup.independent_of_coprime_order Subgroup.independent_of_coprime_orderₓ'. -/
@[to_additive]
theorem independent_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
(hcoprime : ∀ i j, i ≠ j → Nat.coprime (Fintype.card (H i)) (Fintype.card (H j))) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
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
).
@@ -148,13 +148,13 @@ def noncommPiCoprodEquiv :
where
toFun ϕ := noncommPiCoprod ϕ.1 ϕ.2
invFun f :=
- ⟨fun i => f.comp (MonoidHom.single N i), fun i j hij x y =>
+ ⟨fun i => f.comp (MonoidHom.mulSingle N i), fun i j hij x y =>
Commute.map (Pi.mulSingle_commute hij x y) f⟩
left_inv ϕ := by
ext
- simp only [coe_comp, Function.comp_apply, single_apply, noncommPiCoprod_mulSingle]
+ simp only [coe_comp, Function.comp_apply, mulSingle_apply, noncommPiCoprod_mulSingle]
right_inv f := pi_ext fun i x => by
- simp only [noncommPiCoprod_mulSingle, coe_comp, Function.comp_apply, single_apply]
+ simp only [noncommPiCoprod_mulSingle, coe_comp, Function.comp_apply, mulSingle_apply]
#align monoid_hom.noncomm_pi_coprod_equiv MonoidHom.noncommPiCoprodEquiv
#align add_monoid_hom.noncomm_pi_coprod_equiv AddMonoidHom.noncommPiCoprodEquiv
Generalize MulActionHom
so that it allows two different monoids acting, related by a morphism. This is inspired by the treatment of (semi)linear maps in mathlib, and allows to refactor them.
Let M
, N
, X
, Y
be types, with SMul M X
and SMul N Y
, and let φ : M → N
be a map.
MulActionHom φ X Y
, the type of equivariant functions from X
to Y
, consists of functions f : X → Y
such that f (m • x) = (φ m) • (f x)
for all m : M
and x : X
.Assume that we have Monoid M
, Monoid N
and that φ : M →* N
. For A
, B
by types with AddMonoid A
and AddMonoid B
, endowed with DistribMulAction M A
and DistribMulAction M B
:
DistribMulActionHom φ A B
is the type of equivariant additive monoid homomorphisms from A
to B
.Similarly, when R
and S
are types with Semiring R
, Semiring S
, MulSemiringAction M R
and MulSemiringAction N S
SMulSemiringHom φ R S
is the type of equivariant ring homomorphisms
from R
to S
.The above types have corresponding classes:
MulActionHomClass F φ X Y
states that F
is a type of bundled X → Y
homs which are φ
-equivariantDistribMulActionHomClass F φ A B
states that F
is a type of bundled A → B
homs preserving the additive monoid structure and φ
-equivariantSMulSemiringHomClass F φ R S
states that F
is a type of bundled R → S
homs preserving the ring structure and φ
-equivariantWe introduce the following notation to code equivariant maps
(the subscript index ₑ
is for equivariant) :
X →ₑ[φ] Y
is MulActionHom φ X Y
.A →ₑ+[φ] B
is DistribMulActionHom φ A B
.R →ₑ+*[φ] S
is MulSemiringActionHom φ R S
.When M = N
and φ = MonoidHom.id M
, we provide the backward compatible notation :
X →[M] Y
is MulActionHom ([@id](https://github.com/id) M) X Y
A →+[M] B
is DistribMulActionHom (MonoidHom.id M) A B
R →+*[M] S
is MulSemiringActionHom (MonoidHom.id M) R S
This more general definition is propagated all over mathlib, in particular to LinearMap
.
The treatment of composition of equivariant maps is inspired by that of semilinear maps. We provide classes CompTriple
and MonoidHom.CompTriple
of “composable triples`, and various instances for them.
@@ -152,8 +152,9 @@ def noncommPiCoprodEquiv :
Commute.map (Pi.mulSingle_commute hij x y) f⟩
left_inv ϕ := by
ext
- simp
- right_inv f := pi_ext fun i x => by simp
+ simp only [coe_comp, Function.comp_apply, single_apply, noncommPiCoprod_mulSingle]
+ right_inv f := pi_ext fun i x => by
+ simp only [noncommPiCoprod_mulSingle, coe_comp, Function.comp_apply, single_apply]
#align monoid_hom.noncomm_pi_coprod_equiv MonoidHom.noncommPiCoprodEquiv
#align add_monoid_hom.noncomm_pi_coprod_equiv AddMonoidHom.noncommPiCoprodEquiv
apply foo.mpr
by rw [foo]
(#11515)
Sometimes, that line can be golfed into the next line. Inspired by a comment of @loefflerd; any decisions are my own.
@@ -213,7 +213,7 @@ theorem injective_noncommPiCoprod_of_independent
(hinj : ∀ i, Function.Injective (ϕ i)) : Function.Injective (noncommPiCoprod ϕ hcomm) := by
classical
apply (MonoidHom.ker_eq_bot_iff _).mp
- apply eq_bot_iff.mpr
+ rw [eq_bot_iff]
intro f heq1
have : ∀ i, i ∈ Finset.univ → ϕ i (f i) = 1 :=
Subgroup.eq_one_of_noncommProd_eq_one_of_independent _ _ (fun _ _ _ _ h => hcomm h _ _)
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)
@@ -90,7 +90,6 @@ variable {M : Type*} [Monoid M]
-- We have a family of monoids
-- The fintype assumption is not always used, but declared here, to keep things in order
variable {ι : Type*} [DecidableEq ι] [Fintype ι]
-
variable {N : ι → Type*} [∀ i, Monoid (N i)]
-- And morphisms ϕ into G
@@ -181,13 +180,9 @@ end FamilyOfMonoids
section FamilyOfGroups
variable {G : Type*} [Group G]
-
variable {ι : Type*} [hdec : DecidableEq ι] [hfin : Fintype ι]
-
variable {H : ι → Type*} [∀ i, Group (H i)]
-
variable (ϕ : ∀ i : ι, H i →* G)
-
variable {hcomm : Pairwise fun i j : ι => ∀ (x : H i) (y : H j), Commute (ϕ i x) (ϕ j y)}
-- We use `f` and `g` to denote elements of `Π (i : ι), H i`
@@ -275,7 +270,6 @@ namespace Subgroup
-- We have a family of subgroups
variable {G : Type*} [Group G]
-
variable {ι : Type*} [hdec : DecidableEq ι] [hfin : Fintype ι] {H : ι → Subgroup G}
-- Elements of `Π (i : ι), H i` are called `f` and `g` here
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -256,7 +256,7 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
exact (orderOf_map_dvd _ _).trans orderOf_dvd_card
change f = 1
rw [← pow_one f, ← orderOf_dvd_iff_pow_eq_one]
- -- porting note: ouch, had to replace an ugly `convert`
+ -- Porting note: ouch, had to replace an ugly `convert`
obtain ⟨c, hc⟩ := Nat.dvd_gcd hxp hxi
use c
rw [← hc]
DecidableEq
assumptions (#10862)
Use letI := Classical.decEq ι
to make Lean use the classical instance
instead of the one in the variable
s.
@@ -89,7 +89,7 @@ variable {M : Type*} [Monoid M]
-- We have a family of monoids
-- The fintype assumption is not always used, but declared here, to keep things in order
-variable {ι : Type*} [hdec : DecidableEq ι] [Fintype ι]
+variable {ι : Type*} [DecidableEq ι] [Fintype ι]
variable {N : ι → Type*} [∀ i, Monoid (N i)]
@@ -161,16 +161,16 @@ def noncommPiCoprodEquiv :
@[to_additive]
theorem noncommPiCoprod_mrange :
MonoidHom.mrange (noncommPiCoprod ϕ hcomm) = ⨆ i : ι, MonoidHom.mrange (ϕ i) := by
- classical
- apply le_antisymm
- · rintro x ⟨f, rfl⟩
- refine Submonoid.noncommProd_mem _ _ _ (fun _ _ _ _ h => hcomm h _ _) (fun i _ => ?_)
- apply Submonoid.mem_sSup_of_mem
- · use i
- simp
- · refine' iSup_le _
- rintro i x ⟨y, rfl⟩
- exact ⟨Pi.mulSingle i y, noncommPiCoprod_mulSingle _ _ _⟩
+ letI := Classical.decEq ι
+ apply le_antisymm
+ · rintro x ⟨f, rfl⟩
+ refine Submonoid.noncommProd_mem _ _ _ (fun _ _ _ _ h => hcomm h _ _) (fun i _ => ?_)
+ apply Submonoid.mem_sSup_of_mem
+ · use i
+ simp
+ · refine' iSup_le _
+ rintro i x ⟨y, rfl⟩
+ exact ⟨Pi.mulSingle i y, noncommPiCoprod_mulSingle _ _ _⟩
#align monoid_hom.noncomm_pi_coprod_mrange MonoidHom.noncommPiCoprod_mrange
#align add_monoid_hom.noncomm_pi_coprod_mrange AddMonoidHom.noncommPiCoprod_mrange
@@ -198,17 +198,17 @@ namespace MonoidHom
-- The subgroup version of `MonoidHom.noncommPiCoprod_mrange`
@[to_additive]
theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (ϕ i).range := by
- classical
- apply le_antisymm
- · rintro x ⟨f, rfl⟩
- refine Subgroup.noncommProd_mem _ (fun _ _ _ _ h => hcomm h _ _) ?_
- intro i _hi
- apply Subgroup.mem_sSup_of_mem
- · use i
- simp
- · refine' iSup_le _
- rintro i x ⟨y, rfl⟩
- exact ⟨Pi.mulSingle i y, noncommPiCoprod_mulSingle _ _ _⟩
+ letI := Classical.decEq ι
+ apply le_antisymm
+ · rintro x ⟨f, rfl⟩
+ refine Subgroup.noncommProd_mem _ (fun _ _ _ _ h => hcomm h _ _) ?_
+ intro i _hi
+ apply Subgroup.mem_sSup_of_mem
+ · use i
+ simp
+ · refine' iSup_le _
+ rintro i x ⟨y, rfl⟩
+ exact ⟨Pi.mulSingle i y, noncommPiCoprod_mulSingle _ _ _⟩
#align monoid_hom.noncomm_pi_coprod_range MonoidHom.noncommPiCoprod_range
#align add_monoid_hom.noncomm_pi_coprod_range AddMonoidHom.noncommPiCoprod_range
@@ -236,34 +236,34 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
(hcoprime : Pairwise fun i j => Nat.Coprime (Fintype.card (H i)) (Fintype.card (H j))) :
CompleteLattice.Independent fun i => (ϕ i).range := by
cases nonempty_fintype ι
- classical
- rintro i
- rw [disjoint_iff_inf_le]
- rintro f ⟨hxi, hxp⟩
- dsimp at hxi hxp
- rw [iSup_subtype', ← noncommPiCoprod_range] at hxp
- rotate_left
- · intro _ _ hj
- apply hcomm
- exact hj ∘ Subtype.ext
- cases' hxp with g hgf
- cases' hxi with g' hg'f
- have hxi : orderOf f ∣ Fintype.card (H i) := by
- rw [← hg'f]
- exact (orderOf_map_dvd _ _).trans orderOf_dvd_card
- have hxp : orderOf f ∣ ∏ j : { j // j ≠ i }, Fintype.card (H j) := by
- rw [← hgf, ← Fintype.card_pi]
- exact (orderOf_map_dvd _ _).trans orderOf_dvd_card
- change f = 1
- rw [← pow_one f, ← orderOf_dvd_iff_pow_eq_one]
- -- porting note: ouch, had to replace an ugly `convert`
- obtain ⟨c, hc⟩ := Nat.dvd_gcd hxp hxi
- use c
- rw [← hc]
- symm
- rw [← Nat.coprime_iff_gcd_eq_one, Nat.coprime_fintype_prod_left_iff, Subtype.forall]
- intro j h
- exact hcoprime h
+ letI := Classical.decEq ι
+ rintro i
+ rw [disjoint_iff_inf_le]
+ rintro f ⟨hxi, hxp⟩
+ dsimp at hxi hxp
+ rw [iSup_subtype', ← noncommPiCoprod_range] at hxp
+ rotate_left
+ · intro _ _ hj
+ apply hcomm
+ exact hj ∘ Subtype.ext
+ cases' hxp with g hgf
+ cases' hxi with g' hg'f
+ have hxi : orderOf f ∣ Fintype.card (H i) := by
+ rw [← hg'f]
+ exact (orderOf_map_dvd _ _).trans orderOf_dvd_card
+ have hxp : orderOf f ∣ ∏ j : { j // j ≠ i }, Fintype.card (H j) := by
+ rw [← hgf, ← Fintype.card_pi]
+ exact (orderOf_map_dvd _ _).trans orderOf_dvd_card
+ change f = 1
+ rw [← pow_one f, ← orderOf_dvd_iff_pow_eq_one]
+ -- porting note: ouch, had to replace an ugly `convert`
+ obtain ⟨c, hc⟩ := Nat.dvd_gcd hxp hxi
+ use c
+ rw [← hc]
+ symm
+ rw [← Nat.coprime_iff_gcd_eq_one, Nat.coprime_fintype_prod_left_iff, Subtype.forall]
+ intro j h
+ exact hcoprime h
#align monoid_hom.independent_range_of_coprime_order MonoidHom.independent_range_of_coprime_order
#align add_monoid_hom.independent_range_of_coprime_order AddMonoidHom.independent_range_of_coprime_order
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.
@@ -170,7 +170,7 @@ theorem noncommPiCoprod_mrange :
simp
· refine' iSup_le _
rintro i x ⟨y, rfl⟩
- refine' ⟨Pi.mulSingle i y, noncommPiCoprod_mulSingle _ _ _⟩
+ exact ⟨Pi.mulSingle i y, noncommPiCoprod_mulSingle _ _ _⟩
#align monoid_hom.noncomm_pi_coprod_mrange MonoidHom.noncommPiCoprod_mrange
#align add_monoid_hom.noncomm_pi_coprod_mrange AddMonoidHom.noncommPiCoprod_mrange
@@ -208,7 +208,7 @@ theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (
simp
· refine' iSup_le _
rintro i x ⟨y, rfl⟩
- refine' ⟨Pi.mulSingle i y, noncommPiCoprod_mulSingle _ _ _⟩
+ exact ⟨Pi.mulSingle i y, noncommPiCoprod_mulSingle _ _ _⟩
#align monoid_hom.noncomm_pi_coprod_range MonoidHom.noncommPiCoprod_range
#align add_monoid_hom.noncomm_pi_coprod_range AddMonoidHom.noncommPiCoprod_range
Of the 18 uses of singlePass
, in 3 cases we can just use rw
, in 4 cases it isn't needed at all.
In the other 11 cases we are always use it as simp (config := {singlePass := true}) only [X]
(i.e. with just a single simp lemma), and that simp
call would loop forever (usually failing with a maxRecDepth error, sometimes with heartbeats). I've left these as is.
There's also one case where there was a missing only
.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -130,7 +130,7 @@ theorem noncommPiCoprod_mulSingle (i : ι) (y : N i) :
noncommPiCoprod ϕ hcomm (Pi.mulSingle i y) = ϕ i y := by
change Finset.univ.noncommProd (fun j => ϕ j (Pi.mulSingle i y j)) (fun _ _ _ _ h => hcomm h _ _)
= ϕ i y
- simp (config := { singlePass := true }) only [← Finset.insert_erase (Finset.mem_univ i)]
+ rw [← Finset.insert_erase (Finset.mem_univ i)]
rw [Finset.noncommProd_insert_of_not_mem _ _ _ _ (Finset.not_mem_erase i _)]
rw [Pi.mulSingle_eq_same]
rw [Finset.noncommProd_eq_pow_card]
Pairwise
wherever possible (#9236)
Performed with a regex search for ∀ (.) (.), \1 ≠ \2 →
, and a few variants to catch implicit binders and explicit types.
I have deliberately avoided trying to make the analogous Set.Pairwise
transformation (or any Pairwise (foo on bar)
transformations) in this PR, to keep the diff small.
Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>
@@ -188,7 +188,7 @@ variable {H : ι → Type*} [∀ i, Group (H i)]
variable (ϕ : ∀ i : ι, H i →* G)
-variable {hcomm : ∀ i j : ι, i ≠ j → ∀ (x : H i) (y : H j), Commute (ϕ i x) (ϕ j y)}
+variable {hcomm : Pairwise fun i j : ι => ∀ (x : H i) (y : H j), Commute (ϕ i x) (ϕ j y)}
-- We use `f` and `g` to denote elements of `Π (i : ι), H i`
variable (f g : ∀ i : ι, H i)
@@ -201,7 +201,7 @@ theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (
classical
apply le_antisymm
· rintro x ⟨f, rfl⟩
- refine Subgroup.noncommProd_mem _ (fun _ _ _ _ h => hcomm _ _ h _ _) ?_
+ refine Subgroup.noncommProd_mem _ (fun _ _ _ _ h => hcomm h _ _) ?_
intro i _hi
apply Subgroup.mem_sSup_of_mem
· use i
@@ -221,7 +221,7 @@ theorem injective_noncommPiCoprod_of_independent
apply eq_bot_iff.mpr
intro f heq1
have : ∀ i, i ∈ Finset.univ → ϕ i (f i) = 1 :=
- Subgroup.eq_one_of_noncommProd_eq_one_of_independent _ _ (fun _ _ _ _ h => hcomm _ _ h _ _)
+ Subgroup.eq_one_of_noncommProd_eq_one_of_independent _ _ (fun _ _ _ _ h => hcomm h _ _)
_ hind (by simp) heq1
ext i
apply hinj
@@ -233,7 +233,7 @@ variable (hcomm)
@[to_additive]
theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
- (hcoprime : ∀ i j, i ≠ j → Nat.Coprime (Fintype.card (H i)) (Fintype.card (H j))) :
+ (hcoprime : Pairwise fun i j => Nat.Coprime (Fintype.card (H i)) (Fintype.card (H j))) :
CompleteLattice.Independent fun i => (ϕ i).range := by
cases nonempty_fintype ι
classical
@@ -262,8 +262,8 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
rw [← hc]
symm
rw [← Nat.coprime_iff_gcd_eq_one, Nat.coprime_fintype_prod_left_iff, Subtype.forall]
- intro j
- exact hcoprime _ _
+ intro j h
+ exact hcoprime h
#align monoid_hom.independent_range_of_coprime_order MonoidHom.independent_range_of_coprime_order
#align add_monoid_hom.independent_range_of_coprime_order AddMonoidHom.independent_range_of_coprime_order
@@ -284,13 +284,13 @@ variable (f g : ∀ i : ι, H i)
section CommutingSubgroups
-- We assume that the elements of different subgroups commute
-variable (hcomm : ∀ i j : ι, i ≠ j → ∀ x y : G, x ∈ H i → y ∈ H j → Commute x y)
+variable (hcomm : Pairwise fun i j : ι => ∀ x y : G, x ∈ H i → y ∈ H j → Commute x y)
@[to_additive]
theorem commute_subtype_of_commute (i j : ι) (hne : i ≠ j) :
∀ (x : H i) (y : H j), Commute ((H i).subtype x) ((H j).subtype y) := by
rintro ⟨x, hx⟩ ⟨y, hy⟩
- exact hcomm i j hne x y hx hy
+ exact hcomm hne x y hx hy
#align subgroup.commute_subtype_of_commute Subgroup.commute_subtype_of_commute
#align add_subgroup.commute_subtype_of_commute AddSubgroup.addCommute_subtype_of_addCommute
@@ -331,7 +331,7 @@ variable (hcomm)
@[to_additive]
theorem independent_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
- (hcoprime : ∀ i j, i ≠ j → Nat.Coprime (Fintype.card (H i)) (Fintype.card (H j))) :
+ (hcoprime : Pairwise fun i j => Nat.Coprime (Fintype.card (H i)) (Fintype.card (H j))) :
CompleteLattice.Independent H := by
simpa using
MonoidHom.independent_range_of_coprime_order (fun i => (H i).subtype)
List.prod
, Multiset.prod
, Finset.prod
(#9005)
Add coprime_xxx_prod_left_iff
, coprime_xxx_prod_right_iff
lemma for List
, Multiset
, Finset
and Fintype
. This is a PR separated from #8887.
Co-authored-by: jeh <hodellurt@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
@@ -261,11 +261,9 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
use c
rw [← hc]
symm
- rw [← Nat.coprime_iff_gcd_eq_one]
- apply Nat.coprime_prod_left
- intro j _
- apply hcoprime
- exact j.2
+ rw [← Nat.coprime_iff_gcd_eq_one, Nat.coprime_fintype_prod_left_iff, Subtype.forall]
+ intro j
+ exact hcoprime _ _
#align monoid_hom.independent_range_of_coprime_order MonoidHom.independent_range_of_coprime_order
#align add_monoid_hom.independent_range_of_coprime_order AddMonoidHom.independent_range_of_coprime_order
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.
@@ -294,7 +294,7 @@ theorem commute_subtype_of_commute (i j : ι) (hne : i ≠ j) :
rintro ⟨x, hx⟩ ⟨y, hy⟩
exact hcomm i j hne x y hx hy
#align subgroup.commute_subtype_of_commute Subgroup.commute_subtype_of_commute
-#align add_subgroup.commute_subtype_of_commute AddSubgroup.commute_subtype_of_commute
+#align add_subgroup.commute_subtype_of_commute AddSubgroup.addCommute_subtype_of_addCommute
/-- The canonical homomorphism from a family of subgroups where elements from different subgroups
commute -/
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
@@ -250,10 +250,10 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
cases' hxi with g' hg'f
have hxi : orderOf f ∣ Fintype.card (H i) := by
rw [← hg'f]
- exact (orderOf_map_dvd _ _).trans orderOf_dvd_card_univ
+ exact (orderOf_map_dvd _ _).trans orderOf_dvd_card
have hxp : orderOf f ∣ ∏ j : { j // j ≠ i }, Fintype.card (H j) := by
rw [← hgf, ← Fintype.card_pi]
- exact (orderOf_map_dvd _ _).trans orderOf_dvd_card_univ
+ exact (orderOf_map_dvd _ _).trans orderOf_dvd_card
change f = 1
rw [← pow_one f, ← orderOf_dvd_iff_pow_eq_one]
-- porting note: ouch, had to replace an ugly `convert`
@@ -233,7 +233,7 @@ variable (hcomm)
@[to_additive]
theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
- (hcoprime : ∀ i j, i ≠ j → Nat.coprime (Fintype.card (H i)) (Fintype.card (H j))) :
+ (hcoprime : ∀ i j, i ≠ j → Nat.Coprime (Fintype.card (H i)) (Fintype.card (H j))) :
CompleteLattice.Independent fun i => (ϕ i).range := by
cases nonempty_fintype ι
classical
@@ -333,7 +333,7 @@ variable (hcomm)
@[to_additive]
theorem independent_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
- (hcoprime : ∀ i j, i ≠ j → Nat.coprime (Fintype.card (H i)) (Fintype.card (H j))) :
+ (hcoprime : ∀ i j, i ≠ j → Nat.Coprime (Fintype.card (H i)) (Fintype.card (H j))) :
CompleteLattice.Independent H := by
simpa using
MonoidHom.independent_range_of_coprime_order (fun i => (H i).subtype)
@@ -233,7 +233,7 @@ variable (hcomm)
@[to_additive]
theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
- (hcoprime : ∀ i j, i ≠ j → Nat.Coprime (Fintype.card (H i)) (Fintype.card (H j))) :
+ (hcoprime : ∀ i j, i ≠ j → Nat.coprime (Fintype.card (H i)) (Fintype.card (H j))) :
CompleteLattice.Independent fun i => (ϕ i).range := by
cases nonempty_fintype ι
classical
@@ -333,7 +333,7 @@ variable (hcomm)
@[to_additive]
theorem independent_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
- (hcoprime : ∀ i j, i ≠ j → Nat.Coprime (Fintype.card (H i)) (Fintype.card (H j))) :
+ (hcoprime : ∀ i j, i ≠ j → Nat.coprime (Fintype.card (H i)) (Fintype.card (H j))) :
CompleteLattice.Independent H := by
simpa using
MonoidHom.independent_range_of_coprime_order (fun i => (H i).subtype)
Some changes have already been review and delegated in #6910 and #7148.
The diff that needs looking at is https://github.com/leanprover-community/mathlib4/pull/7174/commits/64d6d07ee18163627c8f517eb31455411921c5ac
The std bump PR was insta-merged already!
Co-authored-by: leanprover-community-mathlib4-bot <leanprover-community-mathlib4-bot@users.noreply.github.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -233,7 +233,7 @@ variable (hcomm)
@[to_additive]
theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
- (hcoprime : ∀ i j, i ≠ j → Nat.coprime (Fintype.card (H i)) (Fintype.card (H j))) :
+ (hcoprime : ∀ i j, i ≠ j → Nat.Coprime (Fintype.card (H i)) (Fintype.card (H j))) :
CompleteLattice.Independent fun i => (ϕ i).range := by
cases nonempty_fintype ι
classical
@@ -333,7 +333,7 @@ variable (hcomm)
@[to_additive]
theorem independent_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
- (hcoprime : ∀ i j, i ≠ j → Nat.coprime (Fintype.card (H i)) (Fintype.card (H j))) :
+ (hcoprime : ∀ i j, i ≠ j → Nat.Coprime (Fintype.card (H i)) (Fintype.card (H j))) :
CompleteLattice.Independent H := by
simpa using
MonoidHom.independent_range_of_coprime_order (fun i => (H i).subtype)
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -48,13 +48,13 @@ open BigOperators
namespace Subgroup
-variable {G : Type _} [Group G]
+variable {G : Type*} [Group G]
/-- `Finset.noncommProd` is “injective” in `f` if `f` maps into independent subgroups. This
generalizes (one direction of) `Subgroup.disjoint_iff_mul_eq_one`. -/
@[to_additive "`Finset.noncommSum` is “injective” in `f` if `f` maps into independent subgroups.
This generalizes (one direction of) `AddSubgroup.disjoint_iff_add_eq_zero`. "]
-theorem eq_one_of_noncommProd_eq_one_of_independent {ι : Type _} (s : Finset ι) (f : ι → G) (comm)
+theorem eq_one_of_noncommProd_eq_one_of_independent {ι : Type*} (s : Finset ι) (f : ι → G) (comm)
(K : ι → Subgroup G) (hind : CompleteLattice.Independent K) (hmem : ∀ x ∈ s, f x ∈ K x)
(heq1 : s.noncommProd f comm = 1) : ∀ i ∈ s, f i = 1 := by
classical
@@ -85,13 +85,13 @@ end Subgroup
section FamilyOfMonoids
-variable {M : Type _} [Monoid M]
+variable {M : Type*} [Monoid M]
-- We have a family of monoids
-- The fintype assumption is not always used, but declared here, to keep things in order
-variable {ι : Type _} [hdec : DecidableEq ι] [Fintype ι]
+variable {ι : Type*} [hdec : DecidableEq ι] [Fintype ι]
-variable {N : ι → Type _} [∀ i, Monoid (N i)]
+variable {N : ι → Type*} [∀ i, Monoid (N i)]
-- And morphisms ϕ into G
variable (ϕ : ∀ i : ι, N i →* M)
@@ -180,11 +180,11 @@ end FamilyOfMonoids
section FamilyOfGroups
-variable {G : Type _} [Group G]
+variable {G : Type*} [Group G]
-variable {ι : Type _} [hdec : DecidableEq ι] [hfin : Fintype ι]
+variable {ι : Type*} [hdec : DecidableEq ι] [hfin : Fintype ι]
-variable {H : ι → Type _} [∀ i, Group (H i)]
+variable {H : ι → Type*} [∀ i, Group (H i)]
variable (ϕ : ∀ i : ι, H i →* G)
@@ -276,9 +276,9 @@ end FamilyOfGroups
namespace Subgroup
-- We have a family of subgroups
-variable {G : Type _} [Group G]
+variable {G : Type*} [Group G]
-variable {ι : Type _} [hdec : DecidableEq ι] [hfin : Fintype ι] {H : ι → Subgroup G}
+variable {ι : Type*} [hdec : DecidableEq ι] [hfin : Fintype ι] {H : ι → Subgroup G}
-- Elements of `Π (i : ι), H i` are called `f` and `g` here
variable (f g : ∀ i : ι, H i)
convert
infer instances from goal and allow tc failure (#6041)
Changes the way the term is elaborated so that typeclass inference is tolerated and so that instances are allowed to come from the goal without re-inferring them.
@@ -115,14 +115,11 @@ def noncommPiCoprod : (∀ i : ι, N i) →* M
simp
map_mul' f g := by
classical
- simp only
- have := @Finset.noncommProd_mul_distrib _ _ _ Finset.univ (fun i => ϕ i (f i))
- (fun i => ϕ i (g i)) ?_ ?_ ?_
- · convert this
- exact map_mul _ _ _
- · exact fun i _ j _ hij => hcomm hij _ _
- · exact fun i _ j _ hij => hcomm hij _ _
- · exact fun i _ j _ hij => hcomm hij _ _
+ simp only
+ convert @Finset.noncommProd_mul_distrib _ _ _ _ (fun i => ϕ i (f i)) (fun i => ϕ i (g i)) _ _ _
+ · exact map_mul _ _ _
+ · rintro i - j - h
+ exact hcomm h _ _
#align monoid_hom.noncomm_pi_coprod MonoidHom.noncommPiCoprod
#align add_monoid_hom.noncomm_pi_coprod AddMonoidHom.noncommPiCoprod
@@ -2,11 +2,6 @@
Copyright (c) 2022 Joachim Breitner. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joachim Breitner
-
-! This file was ported from Lean 3 source module group_theory.noncomm_pi_coprod
-! leanprover-community/mathlib commit 6f9f36364eae3f42368b04858fd66d6d9ae730d8
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.GroupTheory.OrderOfElement
import Mathlib.Data.Finset.NoncommProd
@@ -14,6 +9,8 @@ import Mathlib.Data.Fintype.BigOperators
import Mathlib.Data.Nat.GCD.BigOperators
import Mathlib.Order.SupIndep
+#align_import group_theory.noncomm_pi_coprod from "leanprover-community/mathlib"@"6f9f36364eae3f42368b04858fd66d6d9ae730d8"
+
/-!
# Canonical homomorphism from a finite family of monoids
@@ -281,7 +281,7 @@ end FamilyOfGroups
namespace Subgroup
--- We have an family of subgroups
+-- We have a family of subgroups
variable {G : Type _} [Group G]
variable {ι : Type _} [hdec : DecidableEq ι] [hfin : Fintype ι] {H : ι → Subgroup G}
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>
@@ -69,13 +69,13 @@ theorem eq_one_of_noncommProd_eq_one_of_independent {ι : Type _} (s : Finset ι
have hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ (s : Set ι), K i := by
refine' Subgroup.noncommProd_mem _ _ _
intro x hx
- have : K x ≤ ⨆ i ∈ (s : Set ι), K i := le_supᵢ₂ (f := fun i _ => K i) x hx
+ have : K x ≤ ⨆ i ∈ (s : Set ι), K i := le_iSup₂ (f := fun i _ => K i) x hx
exact this (hmem.2 x hx)
intro heq1
rw [Finset.noncommProd_insert_of_not_mem _ _ _ _ hnmem] at heq1
have hnmem' : i ∉ (s : Set ι) := by simpa
obtain ⟨heq1i : f i = 1, heq1S : s.noncommProd f _ = 1⟩ :=
- Subgroup.disjoint_iff_mul_eq_one.mp (hind.disjoint_bsupᵢ hnmem') hmem.1 hmem_bsupr heq1
+ Subgroup.disjoint_iff_mul_eq_one.mp (hind.disjoint_biSup hnmem') hmem.1 hmem_bsupr heq1
intro i h
simp only [Finset.mem_insert] at h
rcases h with (rfl | h)
@@ -171,10 +171,10 @@ theorem noncommPiCoprod_mrange :
apply le_antisymm
· rintro x ⟨f, rfl⟩
refine Submonoid.noncommProd_mem _ _ _ (fun _ _ _ _ h => hcomm h _ _) (fun i _ => ?_)
- apply Submonoid.mem_supₛ_of_mem
+ apply Submonoid.mem_sSup_of_mem
· use i
simp
- · refine' supᵢ_le _
+ · refine' iSup_le _
rintro i x ⟨y, rfl⟩
refine' ⟨Pi.mulSingle i y, noncommPiCoprod_mulSingle _ _ _⟩
#align monoid_hom.noncomm_pi_coprod_mrange MonoidHom.noncommPiCoprod_mrange
@@ -209,10 +209,10 @@ theorem noncommPiCoprod_range : (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (
· rintro x ⟨f, rfl⟩
refine Subgroup.noncommProd_mem _ (fun _ _ _ _ h => hcomm _ _ h _ _) ?_
intro i _hi
- apply Subgroup.mem_supₛ_of_mem
+ apply Subgroup.mem_sSup_of_mem
· use i
simp
- · refine' supᵢ_le _
+ · refine' iSup_le _
rintro i x ⟨y, rfl⟩
refine' ⟨Pi.mulSingle i y, noncommPiCoprod_mulSingle _ _ _⟩
#align monoid_hom.noncomm_pi_coprod_range MonoidHom.noncommPiCoprod_range
@@ -247,7 +247,7 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
rw [disjoint_iff_inf_le]
rintro f ⟨hxi, hxp⟩
dsimp at hxi hxp
- rw [supᵢ_subtype', ← noncommPiCoprod_range] at hxp
+ rw [iSup_subtype', ← noncommPiCoprod_range] at hxp
rotate_left
· intro _ _ hj
apply hcomm
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".
@@ -66,8 +66,7 @@ theorem eq_one_of_noncommProd_eq_one_of_independent {ι : Type _} (s : Finset ι
· simp
· have hcomm := comm.mono (Finset.coe_subset.2 <| Finset.subset_insert _ _)
simp only [Finset.forall_mem_insert] at hmem
- have hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ (s : Set ι), K i :=
- by
+ have hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ (s : Set ι), K i := by
refine' Subgroup.noncommProd_mem _ _ _
intro x hx
have : K x ≤ ⨆ i ∈ (s : Set ι), K i := le_supᵢ₂ (f := fun i _ => K i) x hx
@@ -255,12 +254,10 @@ theorem independent_range_of_coprime_order [Finite ι] [∀ i, Fintype (H i)]
exact hj ∘ Subtype.ext
cases' hxp with g hgf
cases' hxi with g' hg'f
- have hxi : orderOf f ∣ Fintype.card (H i) :=
- by
+ have hxi : orderOf f ∣ Fintype.card (H i) := by
rw [← hg'f]
exact (orderOf_map_dvd _ _).trans orderOf_dvd_card_univ
- have hxp : orderOf f ∣ ∏ j : { j // j ≠ i }, Fintype.card (H j) :=
- by
+ have hxp : orderOf f ∣ ∏ j : { j // j ≠ i }, Fintype.card (H j) := by
rw [← hgf, ← Fintype.card_pi]
exact (orderOf_map_dvd _ _).trans orderOf_dvd_card_univ
change f = 1
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.)@@ -82,7 +82,6 @@ theorem eq_one_of_noncommProd_eq_one_of_independent {ι : Type _} (s : Finset ι
rcases h with (rfl | h)
· exact heq1i
· refine' ih hcomm hmem.2 heq1S _ h
-
#align subgroup.eq_one_of_noncomm_prod_eq_one_of_independent Subgroup.eq_one_of_noncommProd_eq_one_of_independent
#align add_subgroup.eq_zero_of_noncomm_sum_eq_zero_of_independent AddSubgroup.eq_zero_of_noncommSum_eq_zero_of_independent
congr!
and improvement to convert
(#2566)
This introduces a tactic congr!
that is an analogue to mathlib 3's congr'
. It is a more insistent version of congr
that makes use of more congruence lemmas (including user congruence lemmas), propext
, funext
, and Subsingleton
instances. It also has a feature to lift reflexive relations to equalities. Along with funext
, the tactic does intros
, allowing congr!
to get access to function bodies; the introduced variables can be named using rename_i
if needed.
This also modifies convert
to use congr!
rather than congr
, which makes it work more like the mathlib3 version of the tactic.
@@ -124,7 +124,6 @@ def noncommPiCoprod : (∀ i : ι, N i) →* M
have := @Finset.noncommProd_mul_distrib _ _ _ Finset.univ (fun i => ϕ i (f i))
(fun i => ϕ i (g i)) ?_ ?_ ?_
· convert this
- ext
exact map_mul _ _ _
· exact fun i _ j _ hij => hcomm hij _ _
· exact fun i _ j _ hij => hcomm hij _ _
The unported dependencies are