Documentation

Mathlib.Algebra.Group.Subgroup.Finite

Subgroups #

This file provides some result on multiplicative and additive subgroups in the finite context.

Tags #

subgroup, subgroups

instance Subgroup.instFintypeSubtypeMemOfDecidablePred {G : Type u_1} [Group G] (K : Subgroup G) [DecidablePred fun (x : G) => x โˆˆ K] [Fintype G] :
Fintype โ†ฅK
Equations

    Conversion to/from Additive/Multiplicative #

    theorem Subgroup.list_prod_mem {G : Type u_1} [Group G] (K : Subgroup G) {l : List G} :
    (โˆ€ x โˆˆ l, x โˆˆ K) โ†’ l.prod โˆˆ K

    Product of a list of elements in a subgroup is in the subgroup.

    theorem AddSubgroup.list_sum_mem {G : Type u_1} [AddGroup G] (K : AddSubgroup G) {l : List G} :
    (โˆ€ x โˆˆ l, x โˆˆ K) โ†’ l.sum โˆˆ K

    Sum of a list of elements in an AddSubgroup is in the AddSubgroup.

    theorem Subgroup.multiset_prod_mem {G : Type u_3} [CommGroup G] (K : Subgroup G) (g : Multiset G) :
    (โˆ€ a โˆˆ g, a โˆˆ K) โ†’ g.prod โˆˆ K

    Product of a multiset of elements in a subgroup of a CommGroup is in the subgroup.

    theorem AddSubgroup.multiset_sum_mem {G : Type u_3} [AddCommGroup G] (K : AddSubgroup G) (g : Multiset G) :
    (โˆ€ a โˆˆ g, a โˆˆ K) โ†’ g.sum โˆˆ K

    Sum of a multiset of elements in an AddSubgroup of an AddCommGroup is in the AddSubgroup.

    theorem Subgroup.multiset_noncommProd_mem {G : Type u_1} [Group G] (K : Subgroup G) (g : Multiset G) (comm : {x : G | x โˆˆ g}.Pairwise Commute) :
    (โˆ€ a โˆˆ g, a โˆˆ K) โ†’ g.noncommProd comm โˆˆ K
    theorem AddSubgroup.multiset_noncommSum_mem {G : Type u_1} [AddGroup G] (K : AddSubgroup G) (g : Multiset G) (comm : {x : G | x โˆˆ g}.Pairwise AddCommute) :
    (โˆ€ a โˆˆ g, a โˆˆ K) โ†’ g.noncommSum comm โˆˆ K
    theorem Subgroup.prod_mem {G : Type u_3} [CommGroup G] (K : Subgroup G) {ฮน : Type u_4} {t : Finset ฮน} {f : ฮน โ†’ G} (h : โˆ€ c โˆˆ t, f c โˆˆ K) :
    โˆ c โˆˆ t, f c โˆˆ K

    Product of elements of a subgroup of a CommGroup indexed by a Finset is in the subgroup.

    theorem AddSubgroup.sum_mem {G : Type u_3} [AddCommGroup G] (K : AddSubgroup G) {ฮน : Type u_4} {t : Finset ฮน} {f : ฮน โ†’ G} (h : โˆ€ c โˆˆ t, f c โˆˆ K) :
    โˆ‘ c โˆˆ t, f c โˆˆ K

    Sum of elements in an AddSubgroup of an AddCommGroup indexed by a Finset is in the AddSubgroup.

    theorem Subgroup.noncommProd_mem {G : Type u_1} [Group G] (K : Subgroup G) {ฮน : Type u_3} {t : Finset ฮน} {f : ฮน โ†’ G} (comm : (โ†‘t).Pairwise (Function.onFun Commute f)) :
    (โˆ€ c โˆˆ t, f c โˆˆ K) โ†’ t.noncommProd f comm โˆˆ K
    theorem AddSubgroup.noncommSum_mem {G : Type u_1} [AddGroup G] (K : AddSubgroup G) {ฮน : Type u_3} {t : Finset ฮน} {f : ฮน โ†’ G} (comm : (โ†‘t).Pairwise (Function.onFun AddCommute f)) :
    (โˆ€ c โˆˆ t, f c โˆˆ K) โ†’ t.noncommSum f comm โˆˆ K
    @[simp]
    theorem Subgroup.val_list_prod {G : Type u_1} [Group G] (H : Subgroup G) (l : List โ†ฅH) :
    @[simp]
    theorem AddSubgroup.val_list_sum {G : Type u_1} [AddGroup G] (H : AddSubgroup G) (l : List โ†ฅH) :
    @[simp]
    theorem Subgroup.val_multiset_prod {G : Type u_3} [CommGroup G] (H : Subgroup G) (m : Multiset โ†ฅH) :
    @[simp]
    theorem AddSubgroup.val_multiset_sum {G : Type u_3} [AddCommGroup G] (H : AddSubgroup G) (m : Multiset โ†ฅH) :
    @[simp]
    theorem Subgroup.val_finset_prod {ฮน : Type u_3} {G : Type u_4} [CommGroup G] (H : Subgroup G) (f : ฮน โ†’ โ†ฅH) (s : Finset ฮน) :
    โ†‘(โˆ i โˆˆ s, f i) = โˆ i โˆˆ s, โ†‘(f i)
    @[simp]
    theorem AddSubgroup.val_finset_sum {ฮน : Type u_3} {G : Type u_4} [AddCommGroup G] (H : AddSubgroup G) (f : ฮน โ†’ โ†ฅH) (s : Finset ฮน) :
    โ†‘(โˆ‘ i โˆˆ s, f i) = โˆ‘ i โˆˆ s, โ†‘(f i)
    instance Subgroup.fintypeBot {G : Type u_1} [Group G] :
    Equations
      theorem Subgroup.eq_of_le_of_card_ge {G : Type u_1} [Group G] {H K : Subgroup G} [Finite โ†ฅK] (hle : H โ‰ค K) (hcard : Nat.card โ†ฅK โ‰ค Nat.card โ†ฅH) :
      H = K
      theorem AddSubgroup.eq_of_le_of_card_ge {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} [Finite โ†ฅK] (hle : H โ‰ค K) (hcard : Nat.card โ†ฅK โ‰ค Nat.card โ†ฅH) :
      H = K
      theorem Subgroup.eq_top_of_card_eq {G : Type u_1} [Group G] (H : Subgroup G) [Finite โ†ฅH] (h : Nat.card โ†ฅH = Nat.card G) :
      theorem AddSubgroup.eq_top_of_card_eq {G : Type u_1} [AddGroup G] (H : AddSubgroup G) [Finite โ†ฅH] (h : Nat.card โ†ฅH = Nat.card G) :
      @[simp]
      theorem Subgroup.card_eq_iff_eq_top {G : Type u_1} [Group G] (H : Subgroup G) [Finite โ†ฅH] :
      theorem Subgroup.eq_bot_of_card_le {G : Type u_1} [Group G] (H : Subgroup G) [Finite โ†ฅH] (h : Nat.card โ†ฅH โ‰ค 1) :
      theorem AddSubgroup.eq_bot_of_card_le {G : Type u_1} [AddGroup G] (H : AddSubgroup G) [Finite โ†ฅH] (h : Nat.card โ†ฅH โ‰ค 1) :
      theorem Subgroup.eq_bot_of_card_eq {G : Type u_1} [Group G] (H : Subgroup G) (h : Nat.card โ†ฅH = 1) :
      theorem Subgroup.card_le_of_le {G : Type u_1} [Group G] {H K : Subgroup G} [Finite โ†ฅK] (h : H โ‰ค K) :
      Nat.card โ†ฅH โ‰ค Nat.card โ†ฅK
      theorem AddSubgroup.card_le_of_le {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} [Finite โ†ฅK] (h : H โ‰ค K) :
      Nat.card โ†ฅH โ‰ค Nat.card โ†ฅK
      theorem Subgroup.card_map_of_injective {G : Type u_1} [Group G] {H : Type u_3} [Group H] {K : Subgroup G} {f : G โ†’* H} (hf : Function.Injective โ‡‘f) :
      Nat.card โ†ฅ(map f K) = Nat.card โ†ฅK
      theorem AddSubgroup.card_map_of_injective {G : Type u_1} [AddGroup G] {H : Type u_3} [AddGroup H] {K : AddSubgroup G} {f : G โ†’+ H} (hf : Function.Injective โ‡‘f) :
      Nat.card โ†ฅ(map f K) = Nat.card โ†ฅK
      theorem Subgroup.card_subtype {G : Type u_1} [Group G] (K : Subgroup G) (L : Subgroup โ†ฅK) :
      Nat.card โ†ฅ(map K.subtype L) = Nat.card โ†ฅL
      theorem AddSubgroup.card_subtype {G : Type u_1} [AddGroup G] (K : AddSubgroup G) (L : AddSubgroup โ†ฅK) :
      Nat.card โ†ฅ(map K.subtype L) = Nat.card โ†ฅL
      @[deprecated Submonoid.pi_mem_of_mulSingle_mem_aux (since := "2025-10-08")]
      theorem Subgroup.pi_mem_of_mulSingle_mem_aux {ฮท : Type u_3} {f : ฮท โ†’ Type u_4} [(i : ฮท) โ†’ Group (f i)] [DecidableEq ฮท] (I : Finset ฮท) {H : Subgroup ((i : ฮท) โ†’ f i)} (x : (i : ฮท) โ†’ f i) (h1 : โˆ€ i โˆ‰ I, x i = 1) (h2 : โˆ€ i โˆˆ I, Pi.mulSingle i (x i) โˆˆ H) :
      @[deprecated Submonoid.pi_mem_of_mulSingle_mem_aux (since := "2025-10-08")]
      theorem AddSubgroup.pi_mem_of_single_mem_aux {ฮท : Type u_3} {f : ฮท โ†’ Type u_4} [(i : ฮท) โ†’ AddGroup (f i)] [DecidableEq ฮท] (I : Finset ฮท) {H : AddSubgroup ((i : ฮท) โ†’ f i)} (x : (i : ฮท) โ†’ f i) (h1 : โˆ€ i โˆ‰ I, x i = 0) (h2 : โˆ€ i โˆˆ I, Pi.single i (x i) โˆˆ H) :
      theorem Subgroup.pi_mem_of_mulSingle_mem {ฮท : Type u_3} {f : ฮท โ†’ Type u_4} [(i : ฮท) โ†’ Group (f i)] [Finite ฮท] [DecidableEq ฮท] {H : Subgroup ((i : ฮท) โ†’ f i)} (x : (i : ฮท) โ†’ f i) (h : โˆ€ (i : ฮท), Pi.mulSingle i (x i) โˆˆ H) :
      theorem AddSubgroup.pi_mem_of_single_mem {ฮท : Type u_3} {f : ฮท โ†’ Type u_4} [(i : ฮท) โ†’ AddGroup (f i)] [Finite ฮท] [DecidableEq ฮท] {H : AddSubgroup ((i : ฮท) โ†’ f i)} (x : (i : ฮท) โ†’ f i) (h : โˆ€ (i : ฮท), Pi.single i (x i) โˆˆ H) :
      theorem Subgroup.pi_le_iff {ฮท : Type u_3} {f : ฮท โ†’ Type u_4} [(i : ฮท) โ†’ Group (f i)] [DecidableEq ฮท] [Finite ฮท] {H : (i : ฮท) โ†’ Subgroup (f i)} {J : Subgroup ((i : ฮท) โ†’ f i)} :
      pi Set.univ H โ‰ค J โ†” โˆ€ (i : ฮท), map (MonoidHom.mulSingle f i) (H i) โ‰ค J

      For finite index types, the Subgroup.pi is generated by the embeddings of the groups.

      theorem AddSubgroup.pi_le_iff {ฮท : Type u_3} {f : ฮท โ†’ Type u_4} [(i : ฮท) โ†’ AddGroup (f i)] [DecidableEq ฮท] [Finite ฮท] {H : (i : ฮท) โ†’ AddSubgroup (f i)} {J : AddSubgroup ((i : ฮท) โ†’ f i)} :
      pi Set.univ H โ‰ค J โ†” โˆ€ (i : ฮท), map (AddMonoidHom.single f i) (H i) โ‰ค J

      For finite index types, the Subgroup.pi is generated by the embeddings of the additive groups.

      theorem Subgroup.closure_pi {ฮท : Type u_3} {f : ฮท โ†’ Type u_4} [(i : ฮท) โ†’ Group (f i)] [Finite ฮท] {s : (i : ฮท) โ†’ Set (f i)} (hs : โˆ€ (i : ฮท), 1 โˆˆ s i) :
      closure (Set.univ.pi fun (i : ฮท) => s i) = pi Set.univ fun (i : ฮท) => closure (s i)
      theorem AddSubgroup.closure_pi {ฮท : Type u_3} {f : ฮท โ†’ Type u_4} [(i : ฮท) โ†’ AddGroup (f i)] [Finite ฮท] {s : (i : ฮท) โ†’ Set (f i)} (hs : โˆ€ (i : ฮท), 0 โˆˆ s i) :
      closure (Set.univ.pi fun (i : ฮท) => s i) = pi Set.univ fun (i : ฮท) => closure (s i)
      theorem Subgroup.mem_normalizer_fintype {G : Type u_1} [Group G] {S : Set G} [Finite โ†‘S] {x : G} (h : โˆ€ n โˆˆ S, x * n * xโปยน โˆˆ S) :
      instance MonoidHom.decidableMemRange {G : Type u_1} [Group G] {N : Type u_3} [Group N] (f : G โ†’* N) [Fintype G] [DecidableEq N] :
      DecidablePred fun (x : N) => x โˆˆ f.range
      Equations
        instance AddMonoidHom.decidableMemRange {G : Type u_1} [AddGroup G] {N : Type u_3} [AddGroup N] (f : G โ†’+ N) [Fintype G] [DecidableEq N] :
        DecidablePred fun (x : N) => x โˆˆ f.range
        Equations
          instance MonoidHom.fintypeMrange {M : Type u_4} {N : Type u_5} [Monoid M] [Monoid N] [Fintype M] [DecidableEq N] (f : M โ†’* N) :
          Fintype โ†ฅ(mrange f)

          The range of a finite monoid under a monoid homomorphism is finite. Note: this instance can form a diamond with Subtype.fintype in the presence of Fintype N.

          Equations
            instance AddMonoidHom.fintypeMrange {M : Type u_4} {N : Type u_5} [AddMonoid M] [AddMonoid N] [Fintype M] [DecidableEq N] (f : M โ†’+ N) :
            Fintype โ†ฅ(mrange f)

            The range of a finite additive monoid under an additive monoid homomorphism is finite.

            Note: this instance can form a diamond with Subtype.fintype or Subgroup.fintype in the presence of Fintype N.

            Equations
              instance MonoidHom.fintypeRange {G : Type u_1} [Group G] {N : Type u_3} [Group N] [Fintype G] [DecidableEq N] (f : G โ†’* N) :
              Fintype โ†ฅf.range

              The range of a finite group under a group homomorphism is finite.

              Note: this instance can form a diamond with Subtype.fintype or Subgroup.fintype in the presence of Fintype N.

              Equations
                instance AddMonoidHom.fintypeRange {G : Type u_1} [AddGroup G] {N : Type u_3} [AddGroup N] [Fintype G] [DecidableEq N] (f : G โ†’+ N) :
                Fintype โ†ฅf.range

                The range of a finite additive group under an additive group homomorphism is finite.

                Note: this instance can form a diamond with Subtype.fintype or Subgroup.fintype in the presence of Fintype N.

                Equations
                  theorem Fintype.card_coeSort_mrange {M : Type u_4} {N : Type u_5} [Monoid M] [Monoid N] [Fintype M] [DecidableEq N] {f : M โ†’* N} (hf : Function.Injective โ‡‘f) :
                  card โ†ฅ(MonoidHom.mrange f) = card M
                  theorem Fintype.card_coeSort_range {G : Type u_1} [Group G] {N : Type u_3} [Group N] [Fintype G] [DecidableEq N] {f : G โ†’* N} (hf : Function.Injective โ‡‘f) :
                  card โ†ฅf.range = card G