File: Mathlib/GroupTheory/NoncommPiCoprod.lean

full_name: AddSubgroup.eq_zero_of_noncommSum_eq_zero_of_independent
code: /-- `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)
    (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 
goal: i ∈ s → f i = 0

full_name: Subgroup.eq_one_of_noncommProd_eq_one_of_independent
code: /-- `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)
    (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 
goal: i ∈ s → f i = 1

full_name: MonoidHom.noncommPiCoprod
code: /-- The canonical homomorphism from a family of monoids. -/
@[to_additive "The canonical homomorphism from a family of additive monoids. See also
`LinearMap.lsum` for a linear version without the commutativity assumption."]
def noncommPiCoprod : (∀ i : ι, N i) →* M 
goal: ((i : ι) → N i) →* M

full_name: AddMonoidHom.noncommPiCoprod
code: /-- The canonical homomorphism from a family of monoids. -/
@[to_additive "The canonical homomorphism from a family of additive monoids. See also
`LinearMap.lsum` for a linear version without the commutativity assumption."]
def noncommPiCoprod : (∀ i : ι, N i) →* M 
goal: ((i : ι) → N i) →+ M

full_name: MonoidHom.noncommPiCoprod_mulSingle
code: @[to_additive (attr := simp)]
theorem noncommPiCoprod_mulSingle (i : ι) (y : N i) :
    noncommPiCoprod ϕ hcomm (Pi.mulSingle i y) = ϕ i y 
goal: (MonoidHom.noncommPiCoprod ϕ hcomm) (Pi.mulSingle i y) = (ϕ i) y

full_name: AddMonoidHom.noncommPiCoprod_single
code: @[to_additive (attr := simp)]
theorem noncommPiCoprod_mulSingle (i : ι) (y : N i) :
    noncommPiCoprod ϕ hcomm (Pi.mulSingle i y) = ϕ i y 
goal: (AddMonoidHom.noncommPiCoprod ϕ hcomm) (Pi.single i y) = (ϕ i) y

full_name: MonoidHom.noncommPiCoprodEquiv
code: /-- The universal property of `MonoidHom.noncommPiCoprod` -/
@[to_additive "The universal property of `AddMonoidHom.noncommPiCoprod`"]
def noncommPiCoprodEquiv :
    { ϕ : ∀ i, N i →* M // Pairwise fun i j => ∀ x y, Commute (ϕ i x) (ϕ j y) } ≃
      ((∀ i, N i) →* M) 
goal: { ϕ // Pairwise fun i j => ∀ (x : N i) (y : N j), Commute ((ϕ i) x) ((ϕ j) y) } ≃ (((i : ι) → N i) →* M)

full_name: AddMonoidHom.noncommPiCoprodEquiv
code: /-- The universal property of `MonoidHom.noncommPiCoprod` -/
@[to_additive "The universal property of `AddMonoidHom.noncommPiCoprod`"]
def noncommPiCoprodEquiv :
    { ϕ : ∀ i, N i →* M // Pairwise fun i j => ∀ x y, Commute (ϕ i x) (ϕ j y) } ≃
      ((∀ i, N i) →* M) 
goal: { ϕ // Pairwise fun i j => ∀ (x : N i) (y : N j), AddCommute ((ϕ i) x) ((ϕ j) y) } ≃ (((i : ι) → N i) →+ M)

full_name: MonoidHom.noncommPiCoprod_mrange
code: @[to_additive]
theorem noncommPiCoprod_mrange :
    MonoidHom.mrange (noncommPiCoprod ϕ hcomm) = ⨆ i : ι, MonoidHom.mrange (ϕ i) 
goal: MonoidHom.mrange (MonoidHom.noncommPiCoprod ϕ hcomm) = ⨆ i, MonoidHom.mrange (ϕ i)

full_name: AddMonoidHom.noncommPiCoprod_mrange
code: @[to_additive]
theorem noncommPiCoprod_mrange :
    MonoidHom.mrange (noncommPiCoprod ϕ hcomm) = ⨆ i : ι, MonoidHom.mrange (ϕ i) 
goal: AddMonoidHom.mrange (AddMonoidHom.noncommPiCoprod ϕ hcomm) = ⨆ i, AddMonoidHom.mrange (ϕ i)

full_name: AddMonoidHom.noncommPiCoprod_range
code: @[to_additive]
theorem noncommPiCoprod_range
    {hcomm : Pairwise fun i j : ι => ∀ (x : H i) (y : H j), Commute (ϕ i x) (ϕ j y)} :
    (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (ϕ i).range 
goal: (AddMonoidHom.noncommPiCoprod ϕ hcomm).range = ⨆ i, (ϕ i).range

full_name: MonoidHom.noncommPiCoprod_range
code: @[to_additive]
theorem noncommPiCoprod_range
    {hcomm : Pairwise fun i j : ι => ∀ (x : H i) (y : H j), Commute (ϕ i x) (ϕ j y)} :
    (noncommPiCoprod ϕ hcomm).range = ⨆ i : ι, (ϕ i).range 
goal: (MonoidHom.noncommPiCoprod ϕ hcomm).range = ⨆ i, (ϕ i).range

full_name: AddMonoidHom.injective_noncommPiCoprod_of_independent
code: @[to_additive]
theorem injective_noncommPiCoprod_of_independent
    {hcomm : Pairwise fun i j : ι => ∀ (x : H i) (y : H j), Commute (ϕ i x) (ϕ j y)}
    (hind : CompleteLattice.Independent fun i => (ϕ i).range)
    (hinj : ∀ i, Function.Injective (ϕ i)) : Function.Injective (noncommPiCoprod ϕ hcomm) 
goal: Function.Injective ⇑(AddMonoidHom.noncommPiCoprod ϕ hcomm)

full_name: MonoidHom.injective_noncommPiCoprod_of_independent
code: @[to_additive]
theorem injective_noncommPiCoprod_of_independent
    {hcomm : Pairwise fun i j : ι => ∀ (x : H i) (y : H j), Commute (ϕ i x) (ϕ j y)}
    (hind : CompleteLattice.Independent fun i => (ϕ i).range)
    (hinj : ∀ i, Function.Injective (ϕ i)) : Function.Injective (noncommPiCoprod ϕ hcomm) 
goal: Function.Injective ⇑(MonoidHom.noncommPiCoprod ϕ hcomm)

full_name: MonoidHom.independent_range_of_coprime_order
code: @[to_additive]
theorem independent_range_of_coprime_order
    (hcomm : Pairwise fun i j : ι => ∀ (x : H i) (y : H j), Commute (ϕ i x) (ϕ j y))
    [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 
goal: CompleteLattice.Independent fun i => (ϕ i).range

full_name: AddMonoidHom.independent_range_of_coprime_order
code: @[to_additive]
theorem independent_range_of_coprime_order
    (hcomm : Pairwise fun i j : ι => ∀ (x : H i) (y : H j), Commute (ϕ i x) (ϕ j y))
    [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 
goal: CompleteLattice.Independent fun i => (ϕ i).range

full_name: AddSubgroup.addCommute_subtype_of_addCommute
code: @[to_additive]
theorem commute_subtype_of_commute
    (hcomm : Pairwise fun i j : ι => ∀ x y : G, x ∈ H i → y ∈ H j → Commute x y) (i j : ι)
    (hne : i ≠ j) :
    ∀ (x : H i) (y : H j), Commute ((H i).subtype x) ((H j).subtype y) 
goal: AddCommute ((H i).subtype x) ((H j).subtype y)

full_name: Subgroup.commute_subtype_of_commute
code: @[to_additive]
theorem commute_subtype_of_commute
    (hcomm : Pairwise fun i j : ι => ∀ x y : G, x ∈ H i → y ∈ H j → Commute x y) (i j : ι)
    (hne : i ≠ j) :
    ∀ (x : H i) (y : H j), Commute ((H i).subtype x) ((H j).subtype y) 
goal: Commute ((H i).subtype x) ((H j).subtype y)

full_name: Subgroup.noncommPiCoprod
code: /-- The canonical homomorphism from a family of subgroups where elements from different subgroups
commute -/
@[to_additive "The canonical homomorphism from a family of additive subgroups where elements from
different subgroups commute"]
def noncommPiCoprod (hcomm : Pairwise fun i j : ι => ∀ x y : G, x ∈ H i → y ∈ H j → Commute x y) :
    (∀ i : ι, H i) →* G 
goal: ((i : ι) → ↥(H i)) →* G

full_name: AddSubgroup.noncommPiCoprod
code: /-- The canonical homomorphism from a family of subgroups where elements from different subgroups
commute -/
@[to_additive "The canonical homomorphism from a family of additive subgroups where elements from
different subgroups commute"]
def noncommPiCoprod (hcomm : Pairwise fun i j : ι => ∀ x y : G, x ∈ H i → y ∈ H j → Commute x y) :
    (∀ i : ι, H i) →* G 
goal: ((i : ι) → ↥(H i)) →+ G

full_name: Subgroup.noncommPiCoprod_mulSingle
code: @[to_additive (attr := simp)]
theorem noncommPiCoprod_mulSingle
    {hcomm : Pairwise fun i j : ι => ∀ x y : G, x ∈ H i → y ∈ H j → Commute x y}(i : ι) (y : H i) :
    noncommPiCoprod hcomm (Pi.mulSingle i y) = y 
goal: (Subgroup.noncommPiCoprod hcomm) (Pi.mulSingle i y) = ↑y

full_name: AddSubgroup.noncommPiCoprod_single
code: @[to_additive (attr := simp)]
theorem noncommPiCoprod_mulSingle
    {hcomm : Pairwise fun i j : ι => ∀ x y : G, x ∈ H i → y ∈ H j → Commute x y}(i : ι) (y : H i) :
    noncommPiCoprod hcomm (Pi.mulSingle i y) = y 
goal: (AddSubgroup.noncommPiCoprod hcomm) (Pi.single i y) = ↑y

full_name: Subgroup.noncommPiCoprod_range
code: @[to_additive]
theorem noncommPiCoprod_range
    {hcomm : Pairwise fun i j : ι => ∀ x y : G, x ∈ H i → y ∈ H j → Commute x y} :
    (noncommPiCoprod hcomm).range = ⨆ i : ι, H i 
goal: (Subgroup.noncommPiCoprod hcomm).range = ⨆ i, H i

full_name: AddSubgroup.noncommPiCoprod_range
code: @[to_additive]
theorem noncommPiCoprod_range
    {hcomm : Pairwise fun i j : ι => ∀ x y : G, x ∈ H i → y ∈ H j → Commute x y} :
    (noncommPiCoprod hcomm).range = ⨆ i : ι, H i 
goal: (AddSubgroup.noncommPiCoprod hcomm).range = ⨆ i, H i

full_name: Subgroup.injective_noncommPiCoprod_of_independent
code: @[to_additive]
theorem injective_noncommPiCoprod_of_independent
    {hcomm : Pairwise fun i j : ι => ∀ x y : G, x ∈ H i → y ∈ H j → Commute x y}
    (hind : CompleteLattice.Independent H) :
    Function.Injective (noncommPiCoprod hcomm) 
goal: Function.Injective ⇑(Subgroup.noncommPiCoprod hcomm)

full_name: AddSubgroup.injective_noncommPiCoprod_of_independent
code: @[to_additive]
theorem injective_noncommPiCoprod_of_independent
    {hcomm : Pairwise fun i j : ι => ∀ x y : G, x ∈ H i → y ∈ H j → Commute x y}
    (hind : CompleteLattice.Independent H) :
    Function.Injective (noncommPiCoprod hcomm) 
goal: Function.Injective ⇑(AddSubgroup.noncommPiCoprod hcomm)

full_name: AddSubgroup.independent_of_coprime_order
code: @[to_additive]
theorem independent_of_coprime_order
    (hcomm : Pairwise fun i j : ι => ∀ x y : G, x ∈ H i → y ∈ H j → Commute x y)
    [Finite ι] [∀ i, Fintype (H i)]
    (hcoprime : Pairwise fun i j => Nat.Coprime (Fintype.card (H i)) (Fintype.card (H j))) :
    CompleteLattice.Independent H 
goal: CompleteLattice.Independent H

full_name: Subgroup.independent_of_coprime_order
code: @[to_additive]
theorem independent_of_coprime_order
    (hcomm : Pairwise fun i j : ι => ∀ x y : G, x ∈ H i → y ∈ H j → Commute x y)
    [Finite ι] [∀ i, Fintype (H i)]
    (hcoprime : Pairwise fun i j => Nat.Coprime (Fintype.card (H i)) (Fintype.card (H j))) :
    CompleteLattice.Independent H 
goal: CompleteLattice.Independent H