Documentation

Mathlib.GroupTheory.SpecificGroups.Cyclic

Further properties of cyclic groups #

Main statements #

Tags #

cyclic group, exponent, totient

theorem card_orderOf_eq_totient_aux₂ {α : Type u_1} [Group α] [DecidableEq α] [Fintype α] (hn : ∀ (n : ), 0 < n{a : α | a ^ n = 1}.card n) {d : } (hd : d Fintype.card α) :
{a : α | orderOf a = d}.card = d.totient
theorem card_addOrderOf_eq_totient_aux₂ {α : Type u_1} [AddGroup α] [DecidableEq α] [Fintype α] (hn : ∀ (n : ), 0 < n{a : α | n a = 0}.card n) {d : } (hd : d Fintype.card α) :
{a : α | addOrderOf a = d}.card = d.totient
theorem isCyclic_of_card_pow_eq_one_le {α : Type u_1} [Group α] [DecidableEq α] [Fintype α] (hn : ∀ (n : ), 0 < n{a : α | a ^ n = 1}.card n) :

Stacks Tag 09HX (This theorem is stronger than 09HX. It removes the abelian condition, and requires only instead of =.)

theorem isAddCyclic_of_card_nsmul_eq_zero_le {α : Type u_1} [AddGroup α] [DecidableEq α] [Fintype α] (hn : ∀ (n : ), 0 < n{a : α | n a = 0}.card n) :
theorem IsCyclic.card_orderOf_eq_totient {α : Type u_1} [Group α] [IsCyclic α] [Fintype α] {d : } (hd : d Fintype.card α) :
{a : α | orderOf a = d}.card = d.totient
theorem IsAddCyclic.card_addOrderOf_eq_totient {α : Type u_1} [AddGroup α] [IsAddCyclic α] [Fintype α] {d : } (hd : d Fintype.card α) :
{a : α | addOrderOf a = d}.card = d.totient
theorem isSimpleGroup_of_prime_card {α : Type u_1} [Group α] {p : } [hp : Fact (Nat.Prime p)] (h : Nat.card α = p) :

A finite group of prime order is simple.

theorem isSimpleAddGroup_of_prime_card {α : Type u_1} [AddGroup α] {p : } [hp : Fact (Nat.Prime p)] (h : Nat.card α = p) :

A finite group of prime order is simple.

theorem commutative_of_cyclic_center_quotient {G : Type u_2} {G' : Type u_3} [Group G] [Group G'] [IsCyclic G'] (f : G →* G') (hf : f.ker Subgroup.center G) (a b : G) :
a * b = b * a

A group is commutative if the quotient by the center is cyclic. Also see commGroupOfCyclicCenterQuotient for the CommGroup instance.

theorem commutative_of_addCyclic_center_quotient {G : Type u_2} {G' : Type u_3} [AddGroup G] [AddGroup G'] [IsAddCyclic G'] (f : G →+ G') (hf : f.ker AddSubgroup.center G) (a b : G) :
a + b = b + a

A group is commutative if the quotient by the center is cyclic. Also see addCommGroupOfCyclicCenterQuotient for the AddCommGroup instance.

@[implicit_reducible]
def commGroupOfCyclicCenterQuotient {G : Type u_2} {G' : Type u_3} [Group G] [Group G'] [IsCyclic G'] (f : G →* G') (hf : f.ker Subgroup.center G) :

A group is commutative if the quotient by the center is cyclic.

Instances For
    @[implicit_reducible]

    A group is commutative if the quotient by the center is cyclic.

    Instances For
      @[instance 100]
      instance IsSimpleGroup.isCyclic {α : Type u_1} [CommGroup α] [IsSimpleGroup α] :
      theorem IsSimpleGroup.finite {α : Type u_1} [CommGroup α] [IsSimpleGroup α] :

      A commutative simple group is a finite group.

      A commutative simple group is a finite group.

      @[deprecated CommGroup.is_simple_iff_prime_card (since := "2025-11-19")]

      Alias of CommGroup.is_simple_iff_prime_card.

      A linearly-ordered additive abelian group is cyclic iff it is isomorphic to as an ordered additive monoid.

      A linearly-ordered abelian group is cyclic iff it is isomorphic to Multiplicative as an ordered monoid.

      @[simp]
      theorem ZMod.exponent (n : ) :
      theorem not_isCyclic_iff_exponent_eq_prime {α : Type u_1} [Group α] {p : } (hp : Nat.Prime p) ( : Nat.card α = p ^ 2) :
      ¬IsCyclic α Monoid.exponent α = p

      A group of order p ^ 2 is not cyclic if and only if its exponent is p.

      theorem not_isAddCyclic_iff_exponent_eq_prime {α : Type u_1} [AddGroup α] {p : } (hp : Nat.Prime p) ( : Nat.card α = p ^ 2) :
      theorem zmultiplesHom_ker_eq {G : Type u_2} [AddGroup G] (g : G) :

      The kernel of zmultiplesHom G g is equal to the additive subgroup generated by addOrderOf g.

      theorem zpowersHom_ker_eq {G : Type u_2} [Group G] (g : G) :

      The kernel of zpowersHom G g is equal to the subgroup generated by orderOf g.

      noncomputable def zmodAddEquivOfGenerator {G : Type u_2} [AddGroup G] {g : G} (hg : ∀ (x : G), x AddSubgroup.zmultiples g) {n : } (hn : Nat.card G = n) :

      The isomorphism from ZMod n to any additive group of Nat.card equal to n generated by a single element g which sends 1 to g. See zmodAddCyclicAddEquiv for a version which doesn't take an explicit generator, and instead picks one out with the axiom of choice.

      Instances For
        @[simp]
        theorem zmodAddEquivOfGenerator_apply_intCast {G : Type u_2} [AddGroup G] {g : G} (hg : ∀ (x : G), x AddSubgroup.zmultiples g) {n : } (hn : Nat.card G = n) (i : ) :
        (zmodAddEquivOfGenerator hg hn) i = i g
        @[simp]
        theorem zmodAddEquivOfGenerator_symm_apply_zsmul {G : Type u_2} [AddGroup G] {g : G} (hg : ∀ (x : G), x AddSubgroup.zmultiples g) {n : } (hn : Nat.card G = n) (i : ) :
        (zmodAddEquivOfGenerator hg hn).symm (i g) = i
        @[simp]
        theorem zmodAddEquivOfGenerator_apply_one {G : Type u_2} [AddGroup G] {g : G} (hg : ∀ (x : G), x AddSubgroup.zmultiples g) {n : } (hn : Nat.card G = n) :
        @[simp]
        theorem zmodAddEquivOfGenerator_symm_apply_generator {G : Type u_2} [AddGroup G] {g : G} (hg : ∀ (x : G), x AddSubgroup.zmultiples g) {n : } (hn : Nat.card G = n) :
        noncomputable def zmodAddCyclicAddEquiv {G : Type u_2} [AddGroup G] (h : IsAddCyclic G) :

        An arbitrary isomorphism from ZMod n to any cyclic additive group of Nat.card equal to n. See zmodAddCyclicAddEquiv for a version which doesn't require an explicit generator, and instead picks one out with the axiom of choice.

        Instances For
          theorem exists_prime_addEquiv_ZMod {G : Type u_2} [CommGroup G] [IsSimpleGroup G] :
          ∃ (p : ), Nat.Prime p Nonempty (Additive G ≃+ ZMod p)

          A commutative simple group is isomorphic to ZMod p from some prime p.

          noncomputable def zmodMulEquivOfGenerator {G : Type u_2} [Group G] {g : G} (hg : ∀ (x : G), x Subgroup.zpowers g) {n : } (hn : Nat.card G = n) :

          The isomorphism from Multiplicative (ZMod n) to any multiplicative group of Nat.card equal to n generated by a single element g which sends Multiplicative.ofAdd 1 to g. See zmodCyclicMulEquiv for a version which doesn't take an explicit generator, and instead picks one out with the axiom of choice.

          Instances For
            @[simp]
            theorem zmodMulEquivOfGenerator_apply_ofAdd_intCast {G : Type u_2} [Group G] {g : G} (hg : ∀ (x : G), x Subgroup.zpowers g) {n : } (hn : Nat.card G = n) (i : ) :
            @[simp]
            theorem zmodMulEquivOfGenerator_symm_apply_zpow {G : Type u_2} [Group G] {g : G} (hg : ∀ (x : G), x Subgroup.zpowers g) {n : } (hn : Nat.card G = n) (i : ) :
            @[simp]
            theorem zmodMulEquivOfGenerator_apply_ofAdd_one {G : Type u_2} [Group G] {g : G} (hg : ∀ (x : G), x Subgroup.zpowers g) {n : } (hn : Nat.card G = n) :
            @[simp]
            theorem zmodMulEquivOfGenerator_symm_apply_generator {G : Type u_2} [Group G] {g : G} (hg : ∀ (x : G), x Subgroup.zpowers g) {n : } (hn : Nat.card G = n) :
            noncomputable def zmodCyclicMulEquiv {G : Type u_2} [Group G] (h : IsCyclic G) :

            An arbitrary isomorphism from Multiplicative (ZMod n) to any cyclic group of Nat.card equal to n. See zmodMulEquivOfGenerator for a version which takes an explicit generator.

            Instances For
              noncomputable def addEquivOfAddCyclicCardEq {G : Type u_2} {G' : Type u_3} [AddGroup G] [AddGroup G'] [hG : IsAddCyclic G] [hH : IsAddCyclic G'] (hcard : Nat.card G = Nat.card G') :
              G ≃+ G'

              Two cyclic additive groups of the same cardinality are isomorphic.

              Instances For
                noncomputable def mulEquivOfCyclicCardEq {G : Type u_2} {G' : Type u_3} [Group G] [Group G'] [hG : IsCyclic G] [hH : IsCyclic G'] (hcard : Nat.card G = Nat.card G') :
                G ≃* G'

                Two cyclic groups of the same cardinality are isomorphic.

                Instances For
                  noncomputable def mulEquivOfPrimeCardEq {G : Type u_2} {G' : Type u_3} {p : } [Group G] [Group G'] [Fact (Nat.Prime p)] (hG : Nat.card G = p) (hH : Nat.card G' = p) :
                  G ≃* G'

                  Two groups of the same prime cardinality are isomorphic.

                  Instances For
                    noncomputable def addEquivOfPrimeCardEq {G : Type u_2} {G' : Type u_3} {p : } [AddGroup G] [AddGroup G'] [Fact (Nat.Prime p)] (hG : Nat.card G = p) (hH : Nat.card G' = p) :
                    G ≃+ G'

                    Two additive groups of the same prime cardinality are isomorphic.

                    Instances For
                      noncomputable def intEquivOfZPowersEqTop {G : Type u_2} [Infinite G] [Group G] (g : G) (hg : Subgroup.zpowers g = ) :

                      The isomorphism between Multiplicative and the infinite cyclic group G sending Multiplicative.ofAdd 1 to the generator g : G.

                      Instances For
                        @[reducible, inline]
                        noncomputable abbrev intCyclicMulEquiv {G : Type u_2} [Infinite G] [Group G] [IsCyclic G] :

                        An infinite cyclic group is isomorphic to Multiplicative.

                        Instances For
                          noncomputable def intEquivOfZMultiplesEqTop {G : Type u_2} [Infinite G] [AddGroup G] (g : G) (hg : AddSubgroup.zmultiples g = ) :
                          ≃+ G

                          The isomorphism between and the infinite cyclic group G sending 1 to the generator g : G.

                          Instances For
                            @[simp]
                            theorem intEquivOfZMultiplesEqTop_apply {G : Type u_2} [Infinite G] [AddGroup G] (g : G) (hg : AddSubgroup.zmultiples g = ) (a : ) :
                            (intEquivOfZMultiplesEqTop g hg) a = a g
                            @[reducible, inline]
                            noncomputable abbrev intCyclicAddEquiv {G : Type u_2} [Infinite G] [AddGroup G] [IsAddCyclic G] :
                            ≃+ G

                            An infinite cyclic additive group is isomorphic to .

                            Instances For
                              noncomputable def IsCyclic.mulAutMulEquiv (G : Type u_2) [Group G] [h : IsCyclic G] :

                              The automorphism group of a cyclic group is isomorphic to the multiplicative group of ZMod.

                              Instances For
                                @[simp]
                                theorem IsCyclic.mulAutMulEquiv_symm_apply_apply (G : Type u_2) [Group G] [h : IsCyclic G] (a✝ : (ZMod (Nat.card G))ˣ) (a✝¹ : G) :
                                theorem IsCyclic.card_powMonoidHom_range (G : Type u_2) [CommGroup G] [hG : IsCyclic G] [Finite G] (d : ) :

                                Groups with a given generator #

                                We state some results in terms of an explicitly given generator. The generating property is given as in IsCyclic.exists_generator.

                                The main statements are about the existence and uniqueness of homomorphisms and isomorphisms specified by the image of the given generator.

                                noncomputable def monoidHomOfForallMemZpowers {G : Type u_2} {G' : Type u_3} [Group G] [Group G'] {g : G} (hg : ∀ (x : G), x Subgroup.zpowers g) {g' : G'} (hg' : orderOf g' orderOf g) :
                                G →* G'

                                If g generates the group G and g' is an element of another group G' whose order divides that of g, then there is a homomorphism G →* G' mapping g to g'.

                                Instances For
                                  noncomputable def addMonoidHomOfForallMemZMultiples {G : Type u_2} {G' : Type u_3} [AddGroup G] [AddGroup G'] {g : G} (hg : ∀ (x : G), x AddSubgroup.zmultiples g) {g' : G'} (hg' : addOrderOf g' addOrderOf g) :
                                  G →+ G'

                                  If g generates the additive group G and g' is an element of another additive group G' whose order divides that of g, then there is a homomorphism G →+ G' mapping g to g'.

                                  Instances For
                                    @[simp]
                                    theorem monoidHomOfForallMemZpowers_apply_gen {G : Type u_2} {G' : Type u_3} [Group G] [Group G'] {g : G} (hg : ∀ (x : G), x Subgroup.zpowers g) {g' : G'} (hg' : orderOf g' orderOf g) :
                                    @[simp]
                                    theorem addMonoidHomOfForallMemZMultiples_apply_gen {G : Type u_2} {G' : Type u_3} [AddGroup G] [AddGroup G'] {g : G} (hg : ∀ (x : G), x AddSubgroup.zmultiples g) {g' : G'} (hg' : addOrderOf g' addOrderOf g) :
                                    theorem MonoidHom.eq_iff_eq_on_generator {G : Type u_2} {G' : Type u_3} [Group G] [Group G'] {g : G} (hg : ∀ (x : G), x Subgroup.zpowers g) (f₁ f₂ : G →* G') :
                                    f₁ = f₂ f₁ g = f₂ g

                                    Two group homomorphisms G →* G' are equal if and only if they agree on a generator of G.

                                    theorem AddMonoidHom.eq_iff_eq_on_generator {G : Type u_2} {G' : Type u_3} [AddGroup G] [AddGroup G'] {g : G} (hg : ∀ (x : G), x AddSubgroup.zmultiples g) (f₁ f₂ : G →+ G') :
                                    f₁ = f₂ f₁ g = f₂ g

                                    Two homomorphisms G →+ G' of additive groups are equal if and only if they agree on a generator of G.

                                    theorem MulEquiv.eq_iff_eq_on_generator {G : Type u_2} {G' : Type u_3} [Group G] [Group G'] {g : G} (hg : ∀ (x : G), x Subgroup.zpowers g) (f₁ f₂ : G ≃* G') :
                                    f₁ = f₂ f₁ g = f₂ g

                                    Two group isomorphisms G ≃* G' are equal if and only if they agree on a generator of G.

                                    theorem AddEquiv.eq_iff_eq_on_generator {G : Type u_2} {G' : Type u_3} [AddGroup G] [AddGroup G'] {g : G} (hg : ∀ (x : G), x AddSubgroup.zmultiples g) (f₁ f₂ : G ≃+ G') :
                                    f₁ = f₂ f₁ g = f₂ g

                                    Two isomorphisms G ≃+ G' of additive groups are equal if and only if they agree on a generator of G.

                                    noncomputable def mulEquivOfOrderOfEq {G : Type u_2} {G' : Type u_3} [Group G] [Group G'] {g : G} (hg : ∀ (x : G), x Subgroup.zpowers g) {g' : G'} (hg' : ∀ (x : G'), x Subgroup.zpowers g') (h : orderOf g = orderOf g') :
                                    G ≃* G'

                                    Given two groups that are generated by elements g and g' of the same order, we obtain an isomorphism sending g to g'.

                                    Instances For
                                      noncomputable def addEquivOfAddOrderOfEq {G : Type u_2} {G' : Type u_3} [AddGroup G] [AddGroup G'] {g : G} (hg : ∀ (x : G), x AddSubgroup.zmultiples g) {g' : G'} (hg' : ∀ (x : G'), x AddSubgroup.zmultiples g') (h : addOrderOf g = addOrderOf g') :
                                      G ≃+ G'

                                      Given two additive groups that are generated by elements g and g' of the same order, we obtain an isomorphism sending g to g'.

                                      Instances For
                                        @[simp]
                                        theorem mulEquivOfOrderOfEq_apply_gen {G : Type u_2} {G' : Type u_3} [Group G] [Group G'] {g : G} (hg : ∀ (x : G), x Subgroup.zpowers g) {g' : G'} (hg' : ∀ (x : G'), x Subgroup.zpowers g') (h : orderOf g = orderOf g') :
                                        (mulEquivOfOrderOfEq hg hg' h) g = g'
                                        @[simp]
                                        theorem addEquivOfAddOrderOfEq_apply_gen {G : Type u_2} {G' : Type u_3} [AddGroup G] [AddGroup G'] {g : G} (hg : ∀ (x : G), x AddSubgroup.zmultiples g) {g' : G'} (hg' : ∀ (x : G'), x AddSubgroup.zmultiples g') (h : addOrderOf g = addOrderOf g') :
                                        (addEquivOfAddOrderOfEq hg hg' h) g = g'
                                        @[simp]
                                        theorem mulEquivOfOrderOfEq_symm {G : Type u_2} {G' : Type u_3} [Group G] [Group G'] {g : G} (hg : ∀ (x : G), x Subgroup.zpowers g) {g' : G'} (hg' : ∀ (x : G'), x Subgroup.zpowers g') (h : orderOf g = orderOf g') :
                                        @[simp]
                                        theorem addEquivOfAddOrderOfEq_symm {G : Type u_2} {G' : Type u_3} [AddGroup G] [AddGroup G'] {g : G} (hg : ∀ (x : G), x AddSubgroup.zmultiples g) {g' : G'} (hg' : ∀ (x : G'), x AddSubgroup.zmultiples g') (h : addOrderOf g = addOrderOf g') :
                                        theorem mulEquivOfOrderOfEq_symm_apply_gen {G : Type u_2} {G' : Type u_3} [Group G] [Group G'] {g : G} (hg : ∀ (x : G), x Subgroup.zpowers g) {g' : G'} (hg' : ∀ (x : G'), x Subgroup.zpowers g') (h : orderOf g = orderOf g') :
                                        (mulEquivOfOrderOfEq hg hg' h).symm g' = g
                                        theorem addEquivOfAddOrderOfEq_symm_apply_gen {G : Type u_2} {G' : Type u_3} [AddGroup G] [AddGroup G'] {g : G} (hg : ∀ (x : G), x AddSubgroup.zmultiples g) {g' : G'} (hg' : ∀ (x : G'), x AddSubgroup.zmultiples g') (h : addOrderOf g = addOrderOf g') :
                                        (addEquivOfAddOrderOfEq hg hg' h).symm g' = g
                                        theorem Group.isCyclic_of_coprime_card_range_card_ker {M : Type u_4} {N : Type u_5} [CommGroup M] [Group N] (f : M →* N) (h : (Nat.card f.ker).Coprime (Nat.card f.range)) [IsCyclic f.ker] [IsCyclic f.range] :
                                        theorem Group.isCyclic_of_coprime_card_ker {M : Type u_4} {N : Type u_5} [CommGroup M] [Group N] (f : M →* N) (h : (Nat.card f.ker).Coprime (Nat.card N)) [IsCyclic f.ker] [hN : IsCyclic N] (hf : Function.Surjective f) :
                                        theorem AddGroup.isAddCyclic_of_coprime_card_ker {M : Type u_4} {N : Type u_5} [AddCommGroup M] [AddGroup N] (f : M →+ N) (h : (Nat.card f.ker).Coprime (Nat.card N)) [IsAddCyclic f.ker] [hN : IsAddCyclic N] (hf : Function.Surjective f) :
                                        theorem isCyclic_left_of_prod (M : Type u_4) (N : Type u_5) [Group M] [Group N] [cyc : IsCyclic (M × N)] :
                                        theorem isAddCyclic_left_of_prod (M : Type u_4) (N : Type u_5) [AddGroup M] [AddGroup N] [cyc : IsAddCyclic (M × N)] :
                                        theorem isCyclic_right_of_prod (M : Type u_4) (N : Type u_5) [Group M] [Group N] [cyc : IsCyclic (M × N)] :
                                        theorem isAddCyclic_right_of_prod (M : Type u_4) (N : Type u_5) [AddGroup M] [AddGroup N] [cyc : IsAddCyclic (M × N)] :
                                        theorem coprime_card_of_isCyclic_prod (M : Type u_4) (N : Type u_5) [Group M] [Group N] [cyc : IsCyclic (M × N)] [Finite M] [Finite N] :
                                        (Nat.card M).Coprime (Nat.card N)
                                        theorem coprime_card_of_isAddCyclic_prod (M : Type u_4) (N : Type u_5) [AddGroup M] [AddGroup N] [cyc : IsAddCyclic (M × N)] [Finite M] [Finite N] :
                                        (Nat.card M).Coprime (Nat.card N)
                                        theorem Group.isCyclic_prod_iff {M : Type u_4} {N : Type u_5} [Group M] [Group N] :
                                        IsCyclic (M × N) IsCyclic M IsCyclic N (Nat.card M).Coprime (Nat.card N)

                                        The product of two finite groups is cyclic iff both of them are cyclic and their orders are coprime.

                                        theorem AddGroup.isAddCyclic_prod_iff {M : Type u_4} {N : Type u_5} [AddGroup M] [AddGroup N] :
                                        IsAddCyclic (M × N) IsAddCyclic M IsAddCyclic N (Nat.card M).Coprime (Nat.card N)

                                        The product of two finite additive groups is cyclic iff both of them are cyclic and their orders are coprime.