Documentation

Mathlib.GroupTheory.SpecificGroups.Cyclic.Basic

Cyclic groups #

IsCyclic is a predicate on a group stating that the group is cyclic. For the concrete cyclic group of order n, see Data.ZMod.Basic.

cyclic group

theorem IsCyclic.exists_generator {α : Type u_1} [Group α] [IsCyclic α] :
∃ (g : α), ∀ (x : α), x Subgroup.zpowers g
theorem IsAddCyclic.exists_generator {α : Type u_1} [AddGroup α] [IsAddCyclic α] :
∃ (g : α), ∀ (x : α), x AddSubgroup.zmultiples g
theorem Subgroup.isCyclic_iff_exists_zpowers_eq_top {α : Type u_1} [Group α] (H : Subgroup α) :
IsCyclic H ∃ (g : α), zpowers g = H
instance Subgroup.isCyclic_zpowers {G : Type u_2} [Group G] (g : G) :
@[instance 100]
instance isCyclic_of_subsingleton {α : Type u_1} [Group α] [Subsingleton α] :
@[instance 100]
instance IsCyclic.commutative {α : Type u_1} [Group α] [IsCyclic α] :
Std.Commutative fun (x1 x2 : α) => x1 * x2
instance IsAddCyclic.commutative {α : Type u_1} [AddGroup α] [IsAddCyclic α] :
Std.Commutative fun (x1 x2 : α) => x1 + x2
@[implicit_reducible]
def IsCyclic.commGroup {α : Type u_1} [hg : Group α] [IsCyclic α] :

A cyclic group is always commutative. This is not an instance because often we have a better proof of CommGroup.

Equations
Instances For
    @[implicit_reducible]

    A cyclic group is always commutative. This is not an instance because often we have a better proof of AddCommGroup.

    Equations
    Instances For
      theorem Nontrivial.of_not_isCyclic {α : Type u_1} [Group α] (nc : ¬IsCyclic α) :

      A non-cyclic multiplicative group is non-trivial.

      A non-cyclic additive group is non-trivial.

      theorem MonoidHom.map_cyclic {G : Type u_2} [Group G] [h : IsCyclic G] (σ : G →* G) :
      ∃ (m : ), ∀ (g : G), σ g = g ^ m
      theorem AddMonoidHom.map_addCyclic {G : Type u_2} [AddGroup G] [h : IsAddCyclic G] (σ : G →+ G) :
      ∃ (m : ), ∀ (g : G), σ g = m g
      theorem isCyclic_iff_exists_orderOf_eq_natCard {α : Type u_1} [Group α] [Finite α] :
      IsCyclic α ∃ (g : α), orderOf g = Nat.card α
      theorem isCyclic_iff_exists_natCard_le_orderOf {α : Type u_1} [Group α] [Finite α] :
      IsCyclic α ∃ (g : α), Nat.card α orderOf g
      theorem isCyclic_of_orderOf_eq_card {α : Type u_1} [Group α] [Finite α] (x : α) (hx : orderOf x = Nat.card α) :
      theorem isAddCyclic_of_addOrderOf_eq_card {α : Type u_1} [AddGroup α] [Finite α] (x : α) (hx : addOrderOf x = Nat.card α) :
      theorem isCyclic_of_card_le_orderOf {α : Type u_1} [Group α] [Finite α] (x : α) (hx : Nat.card α orderOf x) :
      theorem isAddCyclic_of_card_le_addOrderOf {α : Type u_1} [AddGroup α] [Finite α] (x : α) (hx : Nat.card α addOrderOf x) :
      theorem zpowers_eq_top_of_prime_card {G : Type u_2} [Group G] {p : } [hp : Fact (Nat.Prime p)] (h : Nat.card G = p) {g : G} (hg : g 1) :

      Any non-identity element of a finite group of prime order generates the group.

      theorem zmultiples_eq_top_of_prime_card {G : Type u_2} [AddGroup G] {p : } [hp : Fact (Nat.Prime p)] (h : Nat.card G = p) {g : G} (hg : g 0) :

      Any non-identity element of a finite group of prime order generates the group.

      theorem mem_zpowers_of_prime_card {G : Type u_2} [Group G] {p : } [hp : Fact (Nat.Prime p)] (h : Nat.card G = p) {g g' : G} (hg : g 1) :
      theorem mem_zmultiples_of_prime_card {G : Type u_2} [AddGroup G] {p : } [hp : Fact (Nat.Prime p)] (h : Nat.card G = p) {g g' : G} (hg : g 0) :
      theorem mem_powers_of_prime_card {G : Type u_2} [Group G] {p : } [hp : Fact (Nat.Prime p)] (h : Nat.card G = p) {g g' : G} (hg : g 1) :
      theorem mem_multiples_of_prime_card {G : Type u_2} [AddGroup G] {p : } [hp : Fact (Nat.Prime p)] (h : Nat.card G = p) {g g' : G} (hg : g 0) :
      theorem powers_eq_top_of_prime_card {G : Type u_2} [Group G] {p : } [hp : Fact (Nat.Prime p)] (h : Nat.card G = p) {g : G} (hg : g 1) :
      theorem multiples_eq_top_of_prime_card {G : Type u_2} [AddGroup G] {p : } [hp : Fact (Nat.Prime p)] (h : Nat.card G = p) {g : G} (hg : g 0) :
      theorem isCyclic_of_prime_card {α : Type u_1} [Group α] {p : } [hp : Fact (Nat.Prime p)] (h : Nat.card α = p) :

      A finite group of prime order is cyclic.

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

      A finite group of prime order is cyclic.

      theorem isCyclic_of_card_dvd_prime {α : Type u_1} [Group α] {p : } [hp : Fact (Nat.Prime p)] (h : Nat.card α p) :

      A finite group of order dividing a prime is cyclic.

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

      A finite group of order dividing a prime is cyclic.

      theorem isCyclic_of_surjective {G : Type u_2} {G' : Type u_3} [Group G] [Group G'] {F : Type u_4} [hH : IsCyclic G'] [FunLike F G' G] [MonoidHomClass F G' G] (f : F) (hf : Function.Surjective f) :
      theorem isAddCyclic_of_surjective {G : Type u_2} {G' : Type u_3} [AddGroup G] [AddGroup G'] {F : Type u_4} [hH : IsAddCyclic G'] [FunLike F G' G] [AddMonoidHomClass F G' G] (f : F) (hf : Function.Surjective f) :
      theorem MulEquiv.isCyclic {G : Type u_2} {G' : Type u_3} [Group G] [Group G'] (e : G ≃* G') :
      theorem AddEquiv.isAddCyclic {G : Type u_2} {G' : Type u_3} [AddGroup G] [AddGroup G'] (e : G ≃+ G') :
      theorem orderOf_eq_card_of_forall_mem_zpowers {α : Type u_1} [Group α] {g : α} (hx : ∀ (x : α), x Subgroup.zpowers g) :
      theorem addOrderOf_eq_card_of_forall_mem_zmultiples {α : Type u_1} [AddGroup α] {g : α} (hx : ∀ (x : α), x AddSubgroup.zmultiples g) :
      theorem orderOf_eq_card_of_forall_mem_powers {α : Type u_1} [Group α] {g : α} (hx : ∀ (x : α), x Submonoid.powers g) :
      theorem addOrderOf_eq_card_of_forall_mem_multiples {α : Type u_1} [AddGroup α] {g : α} (hx : ∀ (x : α), x AddSubmonoid.multiples g) :
      theorem exists_pow_ne_one_of_isCyclic {G : Type u_2} [Group G] [G_cyclic : IsCyclic G] {k : } (k_pos : k 0) (k_lt_card_G : k < Nat.card G) :
      ∃ (a : G), a ^ k 1
      theorem exists_nsmul_ne_zero_of_isAddCyclic {G : Type u_2} [AddGroup G] [G_addCyclic : IsAddCyclic G] {k : } (k_pos : k 0) (k_lt_card_G : k < Nat.card G) :
      ∃ (a : G), k a 0
      theorem Infinite.orderOf_eq_zero_of_forall_mem_zpowers {α : Type u_1} [Group α] [Infinite α] {g : α} (h : ∀ (x : α), x Subgroup.zpowers g) :
      instance Bot.isCyclic {α : Type u_1} [Group α] :
      instance Bot.isAddCyclic {α : Type u_1} [AddGroup α] :
      instance Subgroup.isCyclic {α : Type u_1} [Group α] [IsCyclic α] (H : Subgroup α) :
      instance AddSubgroup.isAddCyclic {α : Type u_1} [AddGroup α] [IsAddCyclic α] (H : AddSubgroup α) :
      theorem isCyclic_of_injective {G : Type u_2} {G' : Type u_3} [Group G] [Group G'] [IsCyclic G'] (f : G →* G') (hf : Function.Injective f) :
      theorem isAddCyclic_of_injective {G : Type u_2} {G' : Type u_3} [AddGroup G] [AddGroup G'] [IsAddCyclic G'] (f : G →+ G') (hf : Function.Injective f) :
      theorem Subgroup.isCyclic_of_le {G : Type u_2} [Group G] {H H' : Subgroup G} (h : H H') [IsCyclic H'] :
      theorem AddSubgroup.isAddCyclic_of_le {G : Type u_2} [AddGroup G] {H H' : AddSubgroup G} (h : H H') [IsAddCyclic H'] :
      theorem Subgroup.le_zpowers_iff {G : Type u_2} [Group G] (g : G) (H : Subgroup G) :
      H zpowers g ∃ (n : ), H = zpowers (g ^ n)
      theorem AddSubgroup.le_zmultiples_iff {G : Type u_2} [AddGroup G] (g : G) (H : AddSubgroup G) :
      H zmultiples g ∃ (n : ), H = zmultiples (n g)
      theorem IsCyclic.card_pow_eq_one_le {α : Type u_1} [Group α] [DecidableEq α] [Fintype α] [IsCyclic α] {n : } (hn0 : 0 < n) :
      {a : α | a ^ n = 1}.card n
      theorem IsAddCyclic.card_nsmul_eq_zero_le {α : Type u_1} [AddGroup α] [DecidableEq α] [Fintype α] [IsAddCyclic α] {n : } (hn0 : 0 < n) :
      {a : α | n a = 0}.card n
      theorem IsCyclic.exists_monoid_generator {α : Type u_1} [Group α] [Finite α] [IsCyclic α] :
      ∃ (x : α), ∀ (y : α), y Submonoid.powers x
      theorem IsAddCyclic.exists_addMonoid_generator {α : Type u_1} [AddGroup α] [Finite α] [IsAddCyclic α] :
      ∃ (x : α), ∀ (y : α), y AddSubmonoid.multiples x
      theorem IsCyclic.exists_ofOrder_eq_natCard {α : Type u_1} [Group α] [h : IsCyclic α] :
      ∃ (g : α), orderOf g = Nat.card α
      theorem IsAddCyclic.exists_ofOrder_eq_natCard {α : Type u_1} [AddGroup α] [h : IsAddCyclic α] :
      ∃ (g : α), addOrderOf g = Nat.card α
      noncomputable def MulDistribMulAction.toMonoidHomZModOfIsCyclic (G : Type u_2) [Group G] (M : Type u_4) [Monoid M] [IsCyclic G] [MulDistribMulAction M G] {n : } (hn : Nat.card G = n) :

      A distributive action of a monoid on a finite cyclic group of order n factors through an action on ZMod n.

      Equations
      Instances For
        theorem MulDistribMulAction.toMonoidHomZModOfIsCyclic_apply {G : Type u_2} [Group G] {M : Type u_4} [Monoid M] [IsCyclic G] [MulDistribMulAction M G] {n : } (hn : Nat.card G = n) (m : M) (g : G) (k : ) (h : (toMonoidHomZModOfIsCyclic G M hn) m = k) :
        m g = g ^ k
        theorem IsCyclic.unique_zpow_zmod {α : Type u_1} {a : α} [Group α] [Fintype α] (ha : ∀ (x : α), x Subgroup.zpowers a) (x : α) :
        ∃! n : ZMod (Fintype.card α), x = a ^ n.val
        theorem IsAddCyclic.unique_zsmul_zmod {α : Type u_1} {a : α} [AddGroup α] [Fintype α] (ha : ∀ (x : α), x AddSubgroup.zmultiples a) (x : α) :
        theorem IsCyclic.image_range_orderOf {α : Type u_1} {a : α} [Group α] [Fintype α] [DecidableEq α] (ha : ∀ (x : α), x Subgroup.zpowers a) :
        theorem IsAddCyclic.image_range_addOrderOf {α : Type u_1} {a : α} [AddGroup α] [Fintype α] [DecidableEq α] (ha : ∀ (x : α), x AddSubgroup.zmultiples a) :
        theorem IsCyclic.image_range_card {α : Type u_1} {a : α} [Group α] [Fintype α] [DecidableEq α] (ha : ∀ (x : α), x Subgroup.zpowers a) :
        Finset.image (fun (i : ) => a ^ i) (Finset.range (Nat.card α)) = Finset.univ
        theorem IsAddCyclic.image_range_card {α : Type u_1} {a : α} [AddGroup α] [Fintype α] [DecidableEq α] (ha : ∀ (x : α), x AddSubgroup.zmultiples a) :
        theorem IsCyclic.ext {G : Type u_2} [Group G] [Finite G] [IsCyclic G] {d : } {a b : ZMod d} (hGcard : Nat.card G = d) (h : ∀ (t : G), t ^ a.val = t ^ b.val) :
        a = b
        theorem IsAddCyclic.ext {G : Type u_2} [AddGroup G] [Finite G] [IsAddCyclic G] {d : } {a b : ZMod d} (hGcard : Nat.card G = d) (h : ∀ (t : G), a.val t = b.val t) :
        a = b