Documentation

Mathlib.GroupTheory.OrderOfElement

Order of an element #

This file defines the order of an element of a finite group. For a finite group G the order of x ∈ G is the minimal n ≥ 1 such that x ^ n = 1.

Main definitions #

Tags #

order of an element

theorem isPeriodicPt_mul_iff_pow_eq_one {G : Type u_1} [Monoid G] {n : ℕ} (x : G) :
Function.IsPeriodicPt (fun (x_1 : G) => x * x_1) n 1 ↔ x ^ n = 1
theorem isPeriodicPt_add_iff_nsmul_eq_zero {G : Type u_1} [AddMonoid G] {n : ℕ} (x : G) :
Function.IsPeriodicPt (fun (x_1 : G) => x + x_1) n 0 ↔ n • x = 0
def IsOfFinOrder {G : Type u_1} [Monoid G] (x : G) :

IsOfFinOrder is a predicate on an element x of a monoid to be of finite order, i.e. there exists n ≥ 1 such that x ^ n = 1.

Equations
Instances For
    def IsOfFinAddOrder {G : Type u_1} [AddMonoid G] (x : G) :

    IsOfFinAddOrder is a predicate on an element a of an additive monoid to be of finite order, i.e. there exists n ≥ 1 such that n • a = 0.

    Equations
    Instances For
      theorem isOfFinOrder_iff_pow_eq_one {G : Type u_1} [Monoid G] {x : G} :
      IsOfFinOrder x ↔ ∃ (n : ℕ), 0 < n ∧ x ^ n = 1
      theorem isOfFinAddOrder_iff_nsmul_eq_zero {G : Type u_1} [AddMonoid G] {x : G} :
      IsOfFinAddOrder x ↔ ∃ (n : ℕ), 0 < n ∧ n • x = 0
      theorem IsOfFinOrder.exists_pow_eq_one {G : Type u_1} [Monoid G] {x : G} :
      IsOfFinOrder x → ∃ (n : ℕ), 0 < n ∧ x ^ n = 1

      Alias of the forward direction of isOfFinOrder_iff_pow_eq_one.

      theorem IsOfFinAddOrder.exists_nsmul_eq_zero {G : Type u_1} [AddMonoid G] {x : G} :
      IsOfFinAddOrder x → ∃ (n : ℕ), 0 < n ∧ n • x = 0

      Alias of the forward direction of isOfFinAddOrder_iff_nsmul_eq_zero.

      theorem isOfFinOrder_iff_zpow_eq_one {G : Type u_6} [DivisionMonoid G] {x : G} :
      IsOfFinOrder x ↔ ∃ (n : ℤ), n ≠ 0 ∧ x ^ n = 1
      theorem isOfFinAddOrder_iff_zsmul_eq_zero {G : Type u_6} [SubtractionMonoid G] {x : G} :
      IsOfFinAddOrder x ↔ ∃ (n : ℤ), n ≠ 0 ∧ n • x = 0
      @[simp]
      theorem IsOfFinOrder.one {G : Type u_1} [Monoid G] :

      1 is of finite order in any monoid.

      @[simp]

      0 is of finite order in any additive monoid.

      theorem IsOfFinOrder.pow {G : Type u_1} [Monoid G] {a : G} {n : ℕ} :
      theorem IsOfFinAddOrder.nsmul {G : Type u_1} [AddMonoid G] {a : G} {n : ℕ} :
      theorem IsOfFinOrder.of_pow {G : Type u_1} [Monoid G] {a : G} {n : ℕ} (h : IsOfFinOrder (a ^ n)) (hn : n ≠ 0) :
      theorem IsOfFinAddOrder.of_nsmul {G : Type u_1} [AddMonoid G] {a : G} {n : ℕ} (h : IsOfFinAddOrder (n • a)) (hn : n ≠ 0) :
      @[simp]
      theorem isOfFinOrder_pow {G : Type u_1} [Monoid G] {a : G} {n : ℕ} :
      @[simp]
      theorem isOfFinAddOrder_nsmul {G : Type u_1} [AddMonoid G] {a : G} {n : ℕ} :
      theorem IsOfFinOrder.eq_one' {G : Type u_1} [Monoid G] [IsMulTorsionFree G] {a : G} (ha : IsOfFinOrder a) :
      a = 1
      theorem IsOfFinAddOrder.eq_zero' {G : Type u_1} [AddMonoid G] [IsAddTorsionFree G] {a : G} (ha : IsOfFinAddOrder a) :
      a = 0
      theorem Submonoid.isOfFinOrder_coe {G : Type u_1} [Monoid G] {H : Submonoid G} {x : ↥H} :

      Elements of finite order are of finite order in submonoids.

      Elements of finite order are of finite order in submonoids.

      theorem IsConj.isOfFinOrder {G : Type u_1} [Monoid G] {x y : G} (h : IsConj x y) :
      theorem MonoidHom.isOfFinOrder {G : Type u_1} {H : Type u_2} [Monoid G] [Monoid H] (f : G →* H) {x : G} (h : IsOfFinOrder x) :

      The image of an element of finite order has finite order.

      theorem AddMonoidHom.isOfFinAddOrder {G : Type u_1} {H : Type u_2} [AddMonoid G] [AddMonoid H] (f : G →+ H) {x : G} (h : IsOfFinAddOrder x) :

      The image of an element of finite additive order has finite additive order.

      theorem IsOfFinOrder.apply {η : Type u_6} {Gs : η → Type u_7} [(i : η) → Monoid (Gs i)] {x : (i : η) → Gs i} (h : IsOfFinOrder x) (i : η) :

      If a direct product has finite order then so does each component.

      theorem IsOfFinAddOrder.apply {η : Type u_6} {Gs : η → Type u_7} [(i : η) → AddMonoid (Gs i)] {x : (i : η) → Gs i} (h : IsOfFinAddOrder x) (i : η) :

      If a direct product has finite additive order then so does each component.

      @[reducible, inline]
      noncomputable abbrev IsOfFinOrder.groupPowers {G : Type u_1} [Monoid G] {x : G} (hx : IsOfFinOrder x) :

      The submonoid generated by an element is a group if that element has finite order.

      Equations
      Instances For
        @[reducible, inline]
        noncomputable abbrev IsOfFinAddOrder.addGroupMultiples {G : Type u_1} [AddMonoid G] {x : G} (hx : IsOfFinAddOrder x) :

        The additive submonoid generated by an element is an additive group if that element has finite order.

        Equations
        Instances For
          noncomputable def orderOf {G : Type u_1} [Monoid G] (x : G) :

          orderOf x is the order of the element x, i.e. the n ≥ 1, s.t. x ^ n = 1 if it exists. Otherwise, i.e. if x is of infinite order, then orderOf x is 0 by convention.

          Equations
          Instances For
            noncomputable def addOrderOf {G : Type u_1} [AddMonoid G] (x : G) :

            addOrderOf a is the order of the element a, i.e. the n ≥ 1, s.t. n • a = 0 if it exists. Otherwise, i.e. if a is of infinite order, then addOrderOf a is 0 by convention.

            Equations
            Instances For
              theorem Subsingleton.orderOf_eq {G : Type u_1} [Monoid G] [Subsingleton G] (x : G) :
              @[simp]
              theorem IsOfFinOrder.orderOf_pos {G : Type u_1} [Monoid G] {x : G} (h : IsOfFinOrder x) :
              @[simp]
              theorem pow_orderOf_eq_one {G : Type u_1} [Monoid G] (x : G) :
              x ^ orderOf x = 1
              @[simp]
              theorem addOrderOf_nsmul_eq_zero {G : Type u_1} [AddMonoid G] (x : G) :
              theorem orderOf_eq_zero {G : Type u_1} [Monoid G] {x : G} (h : ¬IsOfFinOrder x) :
              theorem addOrderOf_eq_zero {G : Type u_1} [AddMonoid G] {x : G} (h : ¬IsOfFinAddOrder x) :
              @[simp]
              theorem orderOf_eq_zero_iff {G : Type u_1} [Monoid G] {x : G} :
              @[simp]
              theorem orderOf_eq_zero_iff' {G : Type u_1} [Monoid G] {x : G} :
              orderOf x = 0 ↔ ∀ (n : ℕ), 0 < n → x ^ n ≠ 1
              theorem addOrderOf_eq_zero_iff' {G : Type u_1} [AddMonoid G] {x : G} :
              addOrderOf x = 0 ↔ ∀ (n : ℕ), 0 < n → n • x ≠ 0
              theorem orderOf_ne_zero_iff {G : Type u_1} [Monoid G] {x : G} :
              @[simp]
              theorem orderOf_zero (M₀ : Type u_6) [MonoidWithZero M₀] [Nontrivial M₀] :

              In a nontrivial monoid with zero, the order of the zero element is zero.

              theorem orderOf_eq_iff {G : Type u_1} [Monoid G] {x : G} {n : ℕ} (h : 0 < n) :
              orderOf x = n ↔ x ^ n = 1 ∧ ∀ m < n, 0 < m → x ^ m ≠ 1
              theorem addOrderOf_eq_iff {G : Type u_1} [AddMonoid G] {x : G} {n : ℕ} (h : 0 < n) :
              addOrderOf x = n ↔ n • x = 0 ∧ ∀ m < n, 0 < m → m • x ≠ 0
              @[simp]
              theorem orderOf_pos_iff {G : Type u_1} [Monoid G] {x : G} :

              A group element has finite order iff its order is positive.

              @[simp]
              theorem addOrderOf_pos_iff {G : Type u_1} [AddMonoid G] {x : G} :

              A group element has finite additive order iff its order is positive.

              theorem IsOfFinOrder.mono {G : Type u_1} {β : Type u_5} [Monoid G] {x : G} [Monoid β] {y : β} (hx : IsOfFinOrder x) (h : orderOf y ∣ orderOf x) :
              theorem IsOfFinAddOrder.mono {G : Type u_1} {β : Type u_5} [AddMonoid G] {x : G} [AddMonoid β] {y : β} (hx : IsOfFinAddOrder x) (h : addOrderOf y ∣ addOrderOf x) :
              theorem pow_ne_one_of_lt_orderOf {G : Type u_1} [Monoid G] {x : G} {n : ℕ} (n0 : n ≠ 0) (h : n < orderOf x) :
              x ^ n ≠ 1
              theorem nsmul_ne_zero_of_lt_addOrderOf {G : Type u_1} [AddMonoid G] {x : G} {n : ℕ} (n0 : n ≠ 0) (h : n < addOrderOf x) :
              n • x ≠ 0
              theorem orderOf_le_of_pow_eq_one {G : Type u_1} [Monoid G] {x : G} {n : ℕ} (hn : 0 < n) (h : x ^ n = 1) :
              theorem addOrderOf_le_of_nsmul_eq_zero {G : Type u_1} [AddMonoid G] {x : G} {n : ℕ} (hn : 0 < n) (h : n • x = 0) :
              @[simp]
              theorem orderOf_one {G : Type u_1} [Monoid G] :
              @[simp]
              theorem addOrderOf_zero {G : Type u_1} [AddMonoid G] :
              @[simp]
              theorem orderOf_eq_one_iff {G : Type u_1} [Monoid G] {x : G} :
              orderOf x = 1 ↔ x = 1
              @[simp]
              theorem AddMonoid.addOrderOf_eq_one_iff {G : Type u_1} [AddMonoid G] {x : G} :
              addOrderOf x = 1 ↔ x = 0
              @[simp]
              theorem pow_mod_orderOf {G : Type u_1} [Monoid G] (x : G) (n : ℕ) :
              x ^ (n % orderOf x) = x ^ n
              @[simp]
              theorem mod_addOrderOf_nsmul {G : Type u_1} [AddMonoid G] (x : G) (n : ℕ) :
              (n % addOrderOf x) • x = n • x
              theorem orderOf_dvd_of_pow_eq_one {G : Type u_1} [Monoid G] {x : G} {n : ℕ} (h : x ^ n = 1) :
              theorem addOrderOf_dvd_of_nsmul_eq_zero {G : Type u_1} [AddMonoid G] {x : G} {n : ℕ} (h : n • x = 0) :
              theorem orderOf_dvd_iff_pow_eq_one {G : Type u_1} [Monoid G] {x : G} {n : ℕ} :
              orderOf x ∣ n ↔ x ^ n = 1
              theorem addOrderOf_dvd_iff_nsmul_eq_zero {G : Type u_1} [AddMonoid G] {x : G} {n : ℕ} :
              addOrderOf x ∣ n ↔ n • x = 0
              theorem exists_pow_eq_pow_two_mul {G : Type u_1} [Monoid G] {x : G} {p : ℕ} (hx : x ^ p = 1) (hp : Odd p) (n : ℕ) :
              ∃ (m : ℕ), x ^ n = x ^ (2 * m)

              If x ^ p = 1 for some odd p, then every power of x is an even power of x.

              theorem exists_nsmul_eq_nsmul_two_add {G : Type u_1} [AddMonoid G] {x : G} {p : ℕ} (hx : p • x = 0) (hp : Odd p) (n : ℕ) :
              ∃ (m : ℕ), n • x = (2 * m) • x

              If p • x = 0 for some odd p, then every multiple of x is an even multiple of x.

              theorem orderOf_pow_dvd {G : Type u_1} [Monoid G] {x : G} (n : ℕ) :
              theorem addOrderOf_smul_dvd {G : Type u_1} [AddMonoid G] {x : G} (n : ℕ) :
              theorem pow_injOn_Iio_orderOf {G : Type u_1} [Monoid G] {x : G} :
              Set.InjOn (fun (x_1 : ℕ) => x ^ x_1) (Set.Iio (orderOf x))
              theorem nsmul_injOn_Iio_addOrderOf {G : Type u_1} [AddMonoid G] {x : G} :
              Set.InjOn (fun (x_1 : ℕ) => x_1 • x) (Set.Iio (addOrderOf x))
              theorem IsOfFinOrder.powers_eq_image_range_orderOf {G : Type u_1} [Monoid G] {x : G} [DecidableEq G] (hx : IsOfFinOrder x) :
              ↑(Submonoid.powers x) = ↑(Finset.image (fun (x_1 : ℕ) => x ^ x_1) (Finset.range (orderOf x)))
              theorem pow_eq_pow_of_modEq {G : Type u_1} [Monoid G] {x : G} {n a b : ℕ} (h : a ≡ b [MOD n]) (hx : x ^ n = 1) :
              x ^ a = x ^ b
              theorem nsmul_eq_nsmul_of_modEq {G : Type u_1} [AddMonoid G] {x : G} {n a b : ℕ} (h : a ≡ b [MOD n]) (hx : n • x = 0) :
              a • x = b • x
              theorem pow_eq_one_iff_modEq {G : Type u_1} [Monoid G] {x : G} {n : ℕ} :
              x ^ n = 1 ↔ n ≡ 0 [MOD orderOf x]
              theorem nsmul_eq_zero_iff_modEq {G : Type u_1} [AddMonoid G] {x : G} {n : ℕ} :
              n • x = 0 ↔ n ≡ 0 [MOD addOrderOf x]
              theorem orderOf_map_dvd {G : Type u_1} [Monoid G] {H : Type u_6} [Monoid H] (ψ : G →* H) (x : G) :
              theorem addOrderOf_map_dvd {G : Type u_1} [AddMonoid G] {H : Type u_6} [AddMonoid H] (ψ : G →+ H) (x : G) :
              theorem exists_pow_eq_self_of_coprime {G : Type u_1} [Monoid G] {x : G} {n : ℕ} (h : n.Coprime (orderOf x)) :
              ∃ (m : ℕ), (x ^ n) ^ m = x
              theorem exists_nsmul_eq_self_of_coprime {G : Type u_1} [AddMonoid G] {x : G} {n : ℕ} (h : n.Coprime (addOrderOf x)) :
              ∃ (m : ℕ), m • n • x = x
              theorem orderOf_eq_of_pow_and_pow_div_prime {G : Type u_1} [Monoid G] {x : G} {n : ℕ} (hn : 0 < n) (hx : x ^ n = 1) (hd : ∀ (p : ℕ), Nat.Prime p → p ∣ n → x ^ (n / p) ≠ 1) :

              If x^n = 1, but x^(n/p) ≠ 1 for all prime factors p of n, then x has order n in G.

              theorem addOrderOf_eq_of_nsmul_and_div_prime_nsmul {G : Type u_1} [AddMonoid G] {x : G} {n : ℕ} (hn : 0 < n) (hx : n • x = 0) (hd : ∀ (p : ℕ), Nat.Prime p → p ∣ n → (n / p) • x ≠ 0) :

              If n * x = 0, but n/p * x ≠ 0 for all prime factors p of n, then x has order n in G.

              theorem orderOf_eq_orderOf_iff {G : Type u_1} [Monoid G] {x : G} {H : Type u_6} [Monoid H] {y : H} :
              orderOf x = orderOf y ↔ ∀ (n : ℕ), x ^ n = 1 ↔ y ^ n = 1
              theorem addOrderOf_eq_addOrderOf_iff {G : Type u_1} [AddMonoid G] {x : G} {H : Type u_6} [AddMonoid H] {y : H} :
              addOrderOf x = addOrderOf y ↔ ∀ (n : ℕ), n • x = 0 ↔ n • y = 0
              theorem orderOf_injective {G : Type u_1} [Monoid G] {H : Type u_6} [Monoid H] (f : G →* H) (hf : Function.Injective ⇑f) (x : G) :
              orderOf (f x) = orderOf x

              An injective homomorphism of monoids preserves orders of elements.

              theorem addOrderOf_injective {G : Type u_1} [AddMonoid G] {H : Type u_6} [AddMonoid H] (f : G →+ H) (hf : Function.Injective ⇑f) (x : G) :

              An injective homomorphism of additive monoids preserves orders of elements.

              @[simp]
              theorem MulEquiv.orderOf_eq {G : Type u_1} [Monoid G] {H : Type u_6} [Monoid H] (e : G ≃* H) (x : G) :
              orderOf (e x) = orderOf x

              A multiplicative equivalence preserves orders of elements.

              @[simp]
              theorem AddEquiv.addOrderOf_eq {G : Type u_1} [AddMonoid G] {H : Type u_6} [AddMonoid H] (e : G ≃+ H) (x : G) :

              An additive equivalence preserves orders of elements.

              theorem Function.Injective.isOfFinOrder_iff {G : Type u_1} {H : Type u_2} [Monoid G] {x : G} [Monoid H] {f : G →* H} (hf : Injective ⇑f) :
              theorem Function.Injective.isOfFinAddOrder_iff {G : Type u_1} {H : Type u_2} [AddMonoid G] {x : G} [AddMonoid H] {f : G →+ H} (hf : Injective ⇑f) :
              @[simp]
              theorem orderOf_submonoid {G : Type u_1} [Monoid G] {H : Submonoid G} (y : ↥H) :
              @[simp]
              theorem addOrderOf_addSubmonoid {G : Type u_1} [AddMonoid G] {H : AddSubmonoid G} (y : ↥H) :
              theorem orderOf_units {G : Type u_1} [Monoid G] {y : Gˣ} :
              theorem IsUnit.orderOf_eq_one {G : Type u_1} [Monoid G] [Subsingleton Gˣ] {x : G} (h : IsUnit x) :
              noncomputable def IsOfFinOrder.unit {M : Type u_6} [Monoid M] {x : M} (hx : IsOfFinOrder x) :

              If the order of x is finite, then x is a unit with inverse x ^ (orderOf x - 1).

              Equations
              • hx.unit = { val := x, inv := x ^ (orderOf x - 1), val_inv := ⋯, inv_val := ⋯ }
              Instances For
                noncomputable def IsOfFinAddOrder.addUnit {M : Type u_6} [AddMonoid M] {x : M} (hx : IsOfFinAddOrder x) :

                If the additive order of x is finite, then x is an additive unit with inverse (addOrderOf x - 1) • x.

                Equations
                Instances For
                  @[simp]
                  theorem IsOfFinAddOrder.val_addUnit {M : Type u_6} [AddMonoid M] {x : M} (hx : IsOfFinAddOrder x) :
                  ↑hx.addUnit = x
                  @[simp]
                  theorem IsOfFinAddOrder.val_neg_addUnit {M : Type u_6} [AddMonoid M] {x : M} (hx : IsOfFinAddOrder x) :
                  ↑(-hx.addUnit) = (addOrderOf x - 1) • x
                  @[simp]
                  theorem IsOfFinOrder.val_inv_unit {M : Type u_6} [Monoid M] {x : M} (hx : IsOfFinOrder x) :
                  ↑hx.unit⁻¹ = x ^ (orderOf x - 1)
                  @[simp]
                  theorem IsOfFinOrder.val_unit {M : Type u_6} [Monoid M] {x : M} (hx : IsOfFinOrder x) :
                  ↑hx.unit = x
                  theorem IsOfFinOrder.isUnit {M : Type u_6} [Monoid M] {x : M} (hx : IsOfFinOrder x) :
                  theorem IsOfFinAddOrder.isAddUnit {M : Type u_6} [AddMonoid M] {x : M} (hx : IsOfFinAddOrder x) :
                  theorem orderOf_pow' {G : Type u_1} [Monoid G] (x : G) {n : ℕ} (h : n ≠ 0) :
                  orderOf (x ^ n) = orderOf x / (orderOf x).gcd n
                  theorem addOrderOf_nsmul' {G : Type u_1} [AddMonoid G] (x : G) {n : ℕ} (h : n ≠ 0) :
                  theorem orderOf_pow_of_dvd {G : Type u_1} [Monoid G] {x : G} {n : ℕ} (hn : n ≠ 0) (dvd : n ∣ orderOf x) :
                  orderOf (x ^ n) = orderOf x / n
                  theorem addOrderOf_nsmul_of_dvd {G : Type u_1} [AddMonoid G] {x : G} {n : ℕ} (hn : n ≠ 0) (dvd : n ∣ addOrderOf x) :
                  theorem orderOf_pow_orderOf_div {G : Type u_1} [Monoid G] {x : G} {n : ℕ} (hx : orderOf x ≠ 0) (hn : n ∣ orderOf x) :
                  orderOf (x ^ (orderOf x / n)) = n
                  theorem addOrderOf_nsmul_addOrderOf_sub {G : Type u_1} [AddMonoid G] {x : G} {n : ℕ} (hx : addOrderOf x ≠ 0) (hn : n ∣ addOrderOf x) :
                  theorem IsOfFinOrder.orderOf_pow {G : Type u_1} [Monoid G] (x : G) (n : ℕ) (h : IsOfFinOrder x) :
                  orderOf (x ^ n) = orderOf x / (orderOf x).gcd n
                  theorem Nat.Coprime.orderOf_pow {G : Type u_1} [Monoid G] {y : G} {m : ℕ} (h : (orderOf y).Coprime m) :
                  orderOf (y ^ m) = orderOf y
                  theorem Nat.Coprime.addOrderOf_nsmul {G : Type u_1} [AddMonoid G] {y : G} {m : ℕ} (h : (addOrderOf y).Coprime m) :
                  theorem IsOfFinOrder.finite_powers {G : Type u_1} [Monoid G] {a : G} (ha : IsOfFinOrder a) :
                  theorem Commute.orderOf_mul_dvd_lcm {G : Type u_1} [Monoid G] {x y : G} (h : Commute x y) :
                  orderOf (x * y) ∣ (orderOf x).lcm (orderOf y)
                  theorem AddCommute.addOrderOf_add_dvd_lcm {G : Type u_1} [AddMonoid G] {x y : G} (h : AddCommute x y) :
                  theorem Commute.orderOf_dvd_lcm_mul {G : Type u_1} [Monoid G] {x y : G} (h : Commute x y) :
                  orderOf y ∣ (orderOf x).lcm (orderOf (x * y))
                  theorem AddCommute.addOrderOf_dvd_lcm_add {G : Type u_1} [AddMonoid G] {x y : G} (h : AddCommute x y) :
                  theorem Commute.orderOf_mul_dvd_mul_orderOf {G : Type u_1} [Monoid G] {x y : G} (h : Commute x y) :
                  theorem Commute.orderOf_mul_eq_mul_orderOf_of_coprime {G : Type u_1} [Monoid G] {x y : G} (h : Commute x y) (hco : (orderOf x).Coprime (orderOf y)) :
                  theorem Commute.isOfFinOrder_mul {G : Type u_1} [Monoid G] {x y : G} (h : Commute x y) (hx : IsOfFinOrder x) (hy : IsOfFinOrder y) :

                  Commuting elements of finite order are closed under multiplication.

                  theorem AddCommute.isOfFinAddOrder_add {G : Type u_1} [AddMonoid G] {x y : G} (h : AddCommute x y) (hx : IsOfFinAddOrder x) (hy : IsOfFinAddOrder y) :

                  Commuting elements of finite additive order are closed under addition.

                  theorem Commute.orderOf_mul_eq_right_of_forall_prime_mul_dvd {G : Type u_1} [Monoid G] {x y : G} (h : Commute x y) (hy : IsOfFinOrder y) (hdvd : ∀ (p : ℕ), Nat.Prime p → p ∣ orderOf x → p * orderOf x ∣ orderOf y) :
                  orderOf (x * y) = orderOf y

                  If each prime factor of orderOf x has higher multiplicity in orderOf y, and x commutes with y, then x * y has the same order as y.

                  theorem AddCommute.addOrderOf_add_eq_right_of_forall_prime_mul_dvd {G : Type u_1} [AddMonoid G] {x y : G} (h : AddCommute x y) (hy : IsOfFinAddOrder y) (hdvd : ∀ (p : ℕ), Nat.Prime p → p ∣ addOrderOf x → p * addOrderOf x ∣ addOrderOf y) :

                  If each prime factor of addOrderOf x has higher multiplicity in addOrderOf y, and x commutes with y, then x + y has the same order as y.

                  theorem Commute.orderOf_mul_eq_left_of_forall_prime_mul_dvd {G : Type u_1} [Monoid G] {x y : G} (h : Commute x y) (hx : IsOfFinOrder x) (hdvd : ∀ (p : ℕ), Nat.Prime p → p ∣ orderOf y → p * orderOf y ∣ orderOf x) :
                  orderOf (x * y) = orderOf x

                  If each prime factor of orderOf y has higher multiplicity in orderOf x, and x commutes with y, then x * y has the same order as x.

                  theorem AddCommute.addOrderOf_add_eq_left_of_forall_prime_mul_dvd {G : Type u_1} [AddMonoid G] {x y : G} (h : AddCommute x y) (hx : IsOfFinAddOrder x) (hdvd : ∀ (p : ℕ), Nat.Prime p → p ∣ addOrderOf y → p * addOrderOf y ∣ addOrderOf x) :

                  If each prime factor of addOrderOf y has higher multiplicity in addOrderOf x, and x commutes with y, then x + y has the same order as x.

                  theorem orderOf_eq_prime_iff {G : Type u_1} [Monoid G] {x : G} {p : ℕ} [hp : Fact (Nat.Prime p)] :
                  orderOf x = p ↔ x ^ p = 1 ∧ x ≠ 1
                  theorem addOrderOf_eq_prime_iff {G : Type u_1} [AddMonoid G] {x : G} {p : ℕ} [hp : Fact (Nat.Prime p)] :
                  addOrderOf x = p ↔ p • x = 0 ∧ x ≠ 0
                  theorem orderOf_eq_prime {G : Type u_1} [Monoid G] {x : G} {p : ℕ} [hp : Fact (Nat.Prime p)] (hg : x ^ p = 1) (hg1 : x ≠ 1) :

                  The backward direction of orderOf_eq_prime_iff.

                  theorem addOrderOf_eq_prime {G : Type u_1} [AddMonoid G] {x : G} {p : ℕ} [hp : Fact (Nat.Prime p)] (hg : p • x = 0) (hg1 : x ≠ 0) :

                  The backward direction of addOrderOf_eq_prime_iff.

                  theorem orderOf_eq_prime_pow {G : Type u_1} [Monoid G] {x : G} {n p : ℕ} [hp : Fact (Nat.Prime p)] (hnot : ¬x ^ p ^ n = 1) (hfin : x ^ p ^ (n + 1) = 1) :
                  orderOf x = p ^ (n + 1)
                  theorem addOrderOf_eq_prime_pow {G : Type u_1} [AddMonoid G] {x : G} {n p : ℕ} [hp : Fact (Nat.Prime p)] (hnot : ¬p ^ n • x = 0) (hfin : p ^ (n + 1) • x = 0) :
                  addOrderOf x = p ^ (n + 1)
                  theorem exists_orderOf_eq_prime_pow_iff {G : Type u_1} [Monoid G] {x : G} {p : ℕ} [hp : Fact (Nat.Prime p)] :
                  (∃ (k : ℕ), orderOf x = p ^ k) ↔ ∃ (m : ℕ), x ^ p ^ m = 1
                  theorem exists_addOrderOf_eq_prime_pow_iff {G : Type u_1} [AddMonoid G] {x : G} {p : ℕ} [hp : Fact (Nat.Prime p)] :
                  (∃ (k : ℕ), addOrderOf x = p ^ k) ↔ ∃ (m : ℕ), p ^ m • x = 0
                  @[simp]
                  theorem orderOf_neg_one {R : Type u_6} [Ring R] [Nontrivial R] :
                  orderOf (-1) = if ringChar R = 2 then 1 else 2
                  theorem CharP.orderOf_eq_two_iff {R : Type u_6} [Ring R] [Nontrivial R] [NoZeroDivisors R] (p : ℕ) (hp : p ≠ 2) [CharP R p] {x : R} :
                  orderOf x = 2 ↔ x = -1
                  noncomputable def finEquivPowers {G : Type u_1} [Monoid G] {x : G} (hx : IsOfFinOrder x) :

                  The equivalence between Fin (orderOf x) and Submonoid.powers x, sending i to x ^ i

                  Equations
                  Instances For
                    noncomputable def finEquivMultiples {G : Type u_1} [AddMonoid G] {x : G} (hx : IsOfFinAddOrder x) :

                    The equivalence between Fin (addOrderOf a) and AddSubmonoid.multiples a, sending i to i • a

                    Equations
                    Instances For
                      @[simp]
                      theorem finEquivPowers_apply {G : Type u_1} [Monoid G] {x : G} (hx : IsOfFinOrder x) {n : Fin (orderOf x)} :
                      (finEquivPowers hx) n = ⟨x ^ ↑n, ⋯⟩
                      @[simp]
                      theorem finEquivMultiples_apply {G : Type u_1} [AddMonoid G] {x : G} (hx : IsOfFinAddOrder x) {n : Fin (addOrderOf x)} :
                      (finEquivMultiples hx) n = ⟨↑n • x, ⋯⟩
                      @[simp]
                      theorem finEquivPowers_symm_apply {G : Type u_1} [Monoid G] {x : G} (hx : IsOfFinOrder x) (n : ℕ) :
                      (finEquivPowers hx).symm ⟨x ^ n, ⋯⟩ = ⟨n % orderOf x, ⋯⟩
                      @[simp]
                      theorem finEquivMultiples_symm_apply {G : Type u_1} [AddMonoid G] {x : G} (hx : IsOfFinAddOrder x) (n : ℕ) :
                      theorem IsOfFinOrder.pow_eq_pow_iff_modEq {G : Type u_1} [Monoid G] {x : G} {n m : ℕ} (hx : IsOfFinOrder x) :
                      x ^ n = x ^ m ↔ n ≡ m [MOD orderOf x]
                      theorem IsOfFinAddOrder.nsmul_eq_nsmul_iff_modEq {G : Type u_1} [AddMonoid G] {x : G} {n m : ℕ} (hx : IsOfFinAddOrder x) :
                      n • x = m • x ↔ n ≡ m [MOD addOrderOf x]
                      theorem IsOfFinOrder.pow_inj_mod {G : Type u_1} [Monoid G] {x : G} (hx : IsOfFinOrder x) {n m : ℕ} :
                      x ^ n = x ^ m ↔ n % orderOf x = m % orderOf x
                      theorem IsOfFinAddOrder.nsmul_inj_mod {G : Type u_1} [AddMonoid G] {x : G} (hx : IsOfFinAddOrder x) {n m : ℕ} :
                      n • x = m • x ↔ n % addOrderOf x = m % addOrderOf x
                      theorem pow_eq_pow_iff_modEq {G : Type u_1} [LeftCancelMonoid G] {x : G} {m n : ℕ} :
                      x ^ n = x ^ m ↔ n ≡ m [MOD orderOf x]
                      theorem nsmul_eq_nsmul_iff_modEq {G : Type u_1} [AddLeftCancelMonoid G] {x : G} {m n : ℕ} :
                      n • x = m • x ↔ n ≡ m [MOD addOrderOf x]
                      @[simp]
                      theorem pow_inj_mod {G : Type u_1} [LeftCancelMonoid G] {x : G} {n m : ℕ} :
                      x ^ n = x ^ m ↔ n % orderOf x = m % orderOf x
                      theorem nsmul_inj_mod {G : Type u_1} [AddLeftCancelMonoid G] {x : G} {n m : ℕ} :
                      n • x = m • x ↔ n % addOrderOf x = m % addOrderOf x
                      theorem pow_inj_iff_of_orderOf_eq_zero {G : Type u_1} [LeftCancelMonoid G] {x : G} (h : orderOf x = 0) {n m : ℕ} :
                      x ^ n = x ^ m ↔ n = m
                      theorem nsmul_inj_iff_of_addOrderOf_eq_zero {G : Type u_1} [AddLeftCancelMonoid G] {x : G} (h : addOrderOf x = 0) {n m : ℕ} :
                      n • x = m • x ↔ n = m
                      @[simp]
                      theorem finite_powers {G : Type u_1} [LeftCancelMonoid G] {a : G} :
                      @[simp]

                      See also addOrder_eq_card_multiples.

                      theorem RightCancelMonoid.pow_eq_pow_iff_modEq {G : Type u_1} [RightCancelMonoid G] {x : G} {m n : ℕ} :
                      x ^ n = x ^ m ↔ n ≡ m [MOD orderOf x]
                      theorem RightCancelMonoid.pow_inj_mod {G : Type u_1} [RightCancelMonoid G] {x : G} {n m : ℕ} :
                      x ^ n = x ^ m ↔ n % orderOf x = m % orderOf x
                      theorem AddRightCancelMonoid.nsmul_inj_mod {G : Type u_1} [AddRightCancelMonoid G] {x : G} {n m : ℕ} :
                      n • x = m • x ↔ n % addOrderOf x = m % addOrderOf x
                      theorem RightCancelMonoid.pow_inj_iff_of_orderOf_eq_zero {G : Type u_1} [RightCancelMonoid G] {x : G} (h : orderOf x = 0) {n m : ℕ} :
                      x ^ n = x ^ m ↔ n = m

                      See also addOrder_eq_card_multiples.

                      @[simp]

                      Inverses of elements of finite order have finite order.

                      @[simp]

                      Inverses of elements of finite additive order have finite additive order.

                      theorem IsOfFinOrder.of_inv {G : Type u_1} [Group G] {x : G} :

                      Alias of the forward direction of isOfFinOrder_inv_iff.


                      Inverses of elements of finite order have finite order.

                      theorem IsOfFinOrder.inv {G : Type u_1} [Group G] {x : G} :

                      Alias of the reverse direction of isOfFinOrder_inv_iff.


                      Inverses of elements of finite order have finite order.

                      theorem IsOfFinAddOrder.of_neg {G : Type u_1} [AddGroup G] {x : G} :

                      Alias of the forward direction of isOfFinAddOrder_neg_iff.


                      Inverses of elements of finite additive order have finite additive order.

                      theorem IsOfFinAddOrder.neg {G : Type u_1} [AddGroup G] {x : G} :

                      Alias of the reverse direction of isOfFinAddOrder_neg_iff.


                      Inverses of elements of finite additive order have finite additive order.

                      theorem orderOf_dvd_iff_zpow_eq_one {G : Type u_1} [Group G] {x : G} {i : ℤ} :
                      ↑(orderOf x) ∣ i ↔ x ^ i = 1
                      theorem addOrderOf_dvd_iff_zsmul_eq_zero {G : Type u_1} [AddGroup G] {x : G} {i : ℤ} :
                      ↑(addOrderOf x) ∣ i ↔ i • x = 0
                      @[simp]
                      theorem orderOf_inv {G : Type u_1} [Group G] (x : G) :
                      @[simp]
                      theorem addOrderOf_neg {G : Type u_1} [AddGroup G] (x : G) :
                      theorem orderOf_dvd_sub_iff_zpow_eq_zpow {G : Type u_1} [Group G] {x : G} {a b : ℤ} :
                      ↑(orderOf x) ∣ a - b ↔ x ^ a = x ^ b
                      theorem addOrderOf_dvd_sub_iff_zsmul_eq_zsmul {G : Type u_1} [AddGroup G] {x : G} {a b : ℤ} :
                      ↑(addOrderOf x) ∣ a - b ↔ a • x = b • x
                      theorem Subgroup.orderOf_coe {G : Type u_1} [Group G] {H : Subgroup G} (a : ↥H) :
                      theorem AddSubgroup.addOrderOf_coe {G : Type u_1} [AddGroup G] {H : AddSubgroup G} (a : ↥H) :
                      @[simp]
                      theorem Subgroup.orderOf_mk {G : Type u_1} [Group G] {H : Subgroup G} (a : G) (ha : a ∈ H) :
                      @[simp]
                      theorem AddSubgroup.addOrderOf_mk {G : Type u_1} [AddGroup G] {H : AddSubgroup G} (a : G) (ha : a ∈ H) :
                      theorem zpow_mod_orderOf {G : Type u_1} [Group G] (x : G) (z : ℤ) :
                      x ^ (z % ↑(orderOf x)) = x ^ z
                      theorem mod_addOrderOf_zsmul {G : Type u_1} [AddGroup G] (x : G) (z : ℤ) :
                      (z % ↑(addOrderOf x)) • x = z • x
                      @[simp]
                      theorem zpow_pow_orderOf {G : Type u_1} [Group G] {x : G} {i : ℤ} :
                      (x ^ i) ^ orderOf x = 1
                      @[simp]
                      theorem zsmul_smul_addOrderOf {G : Type u_1} [AddGroup G] {x : G} {i : ℤ} :
                      theorem IsOfFinOrder.zpow {G : Type u_1} [Group G] {x : G} (h : IsOfFinOrder x) {i : ℤ} :
                      theorem IsOfFinAddOrder.zsmul {G : Type u_1} [AddGroup G] {x : G} (h : IsOfFinAddOrder x) {i : ℤ} :
                      theorem IsOfFinOrder.of_mem_zpowers {G : Type u_1} [Group G] {x y : G} (h : IsOfFinOrder x) (h' : y ∈ Subgroup.zpowers x) :
                      theorem orderOf_dvd_of_mem_zpowers {G : Type u_1} [Group G] {x y : G} (h : y ∈ Subgroup.zpowers x) :
                      theorem smul_eq_self_of_mem_zpowers {G : Type u_1} [Group G] {x y : G} {α : Type u_6} [MulAction G α] (hx : x ∈ Subgroup.zpowers y) {a : α} (hs : y • a = a) :
                      x • a = a
                      theorem vadd_eq_self_of_mem_zmultiples {G : Type u_6} [AddGroup G] {x y : G} {α : Type u_7} [AddAction G α] (hx : x ∈ AddSubgroup.zmultiples y) {a : α} (hs : y +ᵥ a = a) :
                      x +ᵥ a = a
                      theorem IsOfFinOrder.powers_eq_zpowers {G : Type u_1} [Group G] {x : G} (hx : IsOfFinOrder x) :

                      See Subgroup.closure_toSubmonoid_of_finite for a version for finite groups.

                      noncomputable def finEquivZPowers {G : Type u_1} [Group G] {x : G} (hx : IsOfFinOrder x) :

                      The equivalence between Fin (orderOf x) and Subgroup.zpowers x, sending i to x ^ i.

                      Equations
                      Instances For
                        noncomputable def finEquivZMultiples {G : Type u_1} [AddGroup G] {x : G} (hx : IsOfFinAddOrder x) :

                        The equivalence between Fin (addOrderOf a) and Subgroup.zmultiples a, sending i to i • a.

                        Equations
                        Instances For
                          theorem finEquivZPowers_apply {G : Type u_1} [Group G] {x : G} (hx : IsOfFinOrder x) {n : Fin (orderOf x)} :
                          (finEquivZPowers hx) n = ⟨x ^ ↑n, ⋯⟩
                          theorem finEquivZMultiples_apply {G : Type u_1} [AddGroup G] {x : G} (hx : IsOfFinAddOrder x) {n : Fin (addOrderOf x)} :
                          (finEquivZMultiples hx) n = ⟨↑n • x, ⋯⟩
                          theorem finEquivZPowers_symm_apply {G : Type u_1} [Group G] {x : G} (hx : IsOfFinOrder x) (n : ℕ) :
                          (finEquivZPowers hx).symm ⟨x ^ n, ⋯⟩ = ⟨n % orderOf x, ⋯⟩
                          theorem finEquivZMultiples_symm_apply {G : Type u_1} [AddGroup G] {x : G} (hx : IsOfFinAddOrder x) (n : ℕ) :
                          theorem pow_finEquivZPowers_symm_apply {G : Type u_1} [Group G] {x : G} (hx : IsOfFinOrder x) (a : ↥(Subgroup.zpowers x)) :
                          x ^ ↑((finEquivZPowers hx).symm a) = ↑a
                          theorem nsmul_finEquivZMultiples_symm_apply {G : Type u_1} [AddGroup G] {x : G} (hx : IsOfFinAddOrder x) (a : ↥(AddSubgroup.zmultiples x)) :
                          ↑((finEquivZMultiples hx).symm a) • x = ↑a
                          theorem IsOfFinOrder.mul {G : Type u_1} [CommMonoid G] {x y : G} (hx : IsOfFinOrder x) (hy : IsOfFinOrder y) :

                          Elements of finite order are closed under multiplication.

                          theorem IsOfFinAddOrder.add {G : Type u_1} [AddCommMonoid G] {x y : G} (hx : IsOfFinAddOrder x) (hy : IsOfFinAddOrder y) :

                          Elements of finite additive order are closed under addition.

                          theorem IsMulTorsionFree.of_not_isOfFinOrder {G : Type u_1} [CommGroup G] :
                          (∀ ⦃a : G⦄, a ≠ 1 → ¬IsOfFinOrder a) → IsMulTorsionFree G

                          Alias of the reverse direction of isMulTorsionFree_iff_not_isOfFinOrder.

                          theorem IsAddTorsionFree.of_not_isOfFinAddOrder {G : Type u_1} [AddCommGroup G] :
                          (∀ ⦃a : G⦄, a ≠ 0 → ¬IsOfFinAddOrder a) → IsAddTorsionFree G

                          Alias of the reverse direction of isAddTorsionFree_iff_not_isOfFinAddOrder.

                          theorem sum_card_orderOf_eq_card_pow_eq_one {G : Type u_1} [Monoid G] {n : ℕ} [Fintype G] [DecidableEq G] (hn : n ≠ 0) :
                          ∑ m ∈ n.divisors, {x : G | orderOf x = m}.card = {x : G | x ^ n = 1}.card
                          theorem sum_card_addOrderOf_eq_card_nsmul_eq_zero {G : Type u_1} [AddMonoid G] {n : ℕ} [Fintype G] [DecidableEq G] (hn : n ≠ 0) :
                          ∑ m ∈ n.divisors, {x : G | addOrderOf x = m}.card = {x : G | n • x = 0}.card
                          theorem orderOf_le_card_univ {G : Type u_1} [Monoid G] {x : G} [Fintype G] :
                          theorem orderOf_le_card {G : Type u_1} [Monoid G] {x : G} [Finite G] :
                          theorem addOrderOf_le_card {G : Type u_1} [AddMonoid G] {x : G} [Finite G] :
                          @[instance_reducible]
                          noncomputable def LeftCancelMonoid.groupOfFinite {G : Type u_1} [LeftCancelMonoid G] [Finite G] :

                          Every finite left cancellative monoid is a group.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            @[instance_reducible]

                            Every finite left cancellative additive monoid is an additive group.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              @[instance_reducible]
                              noncomputable def RightCancelMonoid.groupOfFinite {H : Type u_6} [RightCancelMonoid H] [Finite H] :

                              Every finite right cancellative monoid is a group.

                              Equations
                              Instances For
                                @[instance_reducible]

                                Every finite right cancellative additive monoid is an additive group.

                                Equations
                                Instances For
                                  theorem orderOf_pos {G : Type u_1} [LeftCancelMonoid G] [Finite G] (x : G) :

                                  This is the same as IsOfFinOrder.orderOf_pos but with one fewer explicit assumption since this is automatic in case of a finite cancellative monoid.

                                  theorem addOrderOf_pos {G : Type u_1} [AddLeftCancelMonoid G] [Finite G] (x : G) :

                                  This is the same as IsOfFinAddOrder.addOrderOf_pos but with one fewer explicit assumption since this is automatic in case of a finite cancellative additive monoid.

                                  theorem orderOf_pow {G : Type u_1} [LeftCancelMonoid G] [Finite G] {n : ℕ} (x : G) :
                                  orderOf (x ^ n) = orderOf x / (orderOf x).gcd n

                                  This is the same as orderOf_pow' and orderOf_pow'' but with one assumption less which is automatic in the case of a finite cancellative monoid.

                                  theorem addOrderOf_nsmul {G : Type u_1} [AddLeftCancelMonoid G] [Finite G] {n : ℕ} (x : G) :

                                  This is the same as addOrderOf_nsmul' and addOrderOf_nsmul but with one assumption less which is automatic in the case of a finite cancellative additive monoid.

                                  noncomputable def powersEquivPowers {G : Type u_1} [LeftCancelMonoid G] [Finite G] {x y : G} (h : orderOf x = orderOf y) :

                                  The equivalence between Submonoid.powers of two elements x, y of the same order, mapping x ^ i to y ^ i.

                                  Equations
                                  Instances For
                                    noncomputable def multiplesEquivMultiples {G : Type u_1} [AddLeftCancelMonoid G] [Finite G] {x y : G} (h : addOrderOf x = addOrderOf y) :

                                    The equivalence between Submonoid.multiples of two elements a, b of the same additive order, mapping i • a to i • b.

                                    Equations
                                    Instances For
                                      @[simp]
                                      theorem powersEquivPowers_apply {G : Type u_1} [LeftCancelMonoid G] [Finite G] {x y : G} (h : orderOf x = orderOf y) (n : ℕ) :
                                      (powersEquivPowers h) ⟨x ^ n, ⋯⟩ = ⟨y ^ n, ⋯⟩
                                      @[simp]
                                      theorem multiplesEquivMultiples_apply {G : Type u_1} [AddLeftCancelMonoid G] [Finite G] {x y : G} (h : addOrderOf x = addOrderOf y) (n : ℕ) :
                                      theorem IsUnit.isOfFinOrder {G : Type u_1} [Monoid G] [Finite Gˣ] {x : G} :

                                      Alias of the reverse direction of isOfFinOrder_iff_isUnit.

                                      theorem orderOf_eq_zero_iff_eq_zero {G₀ : Type u_6} [GroupWithZero G₀] [Finite G₀] {a : G₀} :
                                      orderOf a = 0 ↔ a = 0
                                      theorem zpow_eq_one_iff_modEq {G : Type u_1} [Group G] {x : G} {n : ℤ} :
                                      x ^ n = 1 ↔ n ≡ 0 [ZMOD ↑(orderOf x)]
                                      theorem zsmul_eq_zero_iff_modEq {G : Type u_1} [AddGroup G] {x : G} {n : ℤ} :
                                      n • x = 0 ↔ n ≡ 0 [ZMOD ↑(addOrderOf x)]
                                      theorem zpow_eq_zpow_iff_modEq {G : Type u_1} [Group G] {x : G} {m n : ℤ} :
                                      x ^ m = x ^ n ↔ m ≡ n [ZMOD ↑(orderOf x)]
                                      theorem zsmul_eq_zsmul_iff_modEq {G : Type u_1} [AddGroup G] {x : G} {m n : ℤ} :
                                      m • x = n • x ↔ m ≡ n [ZMOD ↑(addOrderOf x)]
                                      @[simp]
                                      theorem injective_zpow_iff_not_isOfFinOrder {G : Type u_1} [Group G] {x : G} :
                                      theorem Subgroup.zpowers_eq_zpowers_iff {G : Type u_1} [Group G] {x y : G} (hx : ¬IsOfFinOrder x) :
                                      theorem mem_zpowers_zpow_iff {G : Type u_1} [Group G] {g : G} {k : ℤ} :
                                      g ∈ Subgroup.zpowers (g ^ k) ↔ k.gcd ↑(orderOf g) = 1
                                      theorem mem_zmultiples_zsmul_iff {G : Type u_1} [AddGroup G] {g : G} {k : ℤ} :
                                      theorem mem_zpowers_pow_iff {G : Type u_1} [Group G] {g : G} {k : ℕ} :
                                      theorem mem_zmultiples_nsmul_iff {G : Type u_1} [AddGroup G] {g : G} {k : ℕ} :
                                      theorem exists_zpow_eq_one {G : Type u_1} [Group G] [Finite G] (x : G) :
                                      ∃ (i : ℤ) (_ : i ≠ 0), x ^ i = 1
                                      theorem exists_zsmul_eq_zero {G : Type u_1} [AddGroup G] [Finite G] (x : G) :
                                      ∃ (i : ℤ) (_ : i ≠ 0), i • x = 0
                                      theorem powers_eq_zpowers {G : Type u_1} [Group G] [Finite G] (x : G) :
                                      theorem mem_zpowers_iff_mem_range_orderOf {G : Type u_1} [Group G] {x y : G} [Finite G] [DecidableEq G] :
                                      y ∈ Subgroup.zpowers x ↔ y ∈ Finset.image (fun (x_1 : ℕ) => x ^ x_1) (Finset.range (orderOf x))
                                      noncomputable def zpowersEquivZPowers {G : Type u_1} [Group G] {x y : G} [Finite G] (h : orderOf x = orderOf y) :

                                      The equivalence between Subgroup.zpowers of two elements x, y of the same order, mapping x ^ i to y ^ i.

                                      Equations
                                      Instances For
                                        noncomputable def zmultiplesEquivZMultiples {G : Type u_1} [AddGroup G] {x y : G} [Finite G] (h : addOrderOf x = addOrderOf y) :

                                        The equivalence between Subgroup.zmultiples of two elements a, b of the same additive order, mapping i • a to i • b.

                                        Equations
                                        Instances For
                                          @[simp]
                                          theorem zpowersEquivZPowers_apply {G : Type u_1} [Group G] {x y : G} [Finite G] (h : orderOf x = orderOf y) (n : ℕ) :
                                          (zpowersEquivZPowers h) ⟨x ^ n, ⋯⟩ = ⟨y ^ n, ⋯⟩
                                          @[simp]
                                          theorem zmultiples_equiv_zmultiples_apply {G : Type u_1} [AddGroup G] {x y : G} [Finite G] (h : addOrderOf x = addOrderOf y) (n : ℕ) :

                                          See AddSubgroup.closure_toAddSubmonoid_of_isOfFinOrder for a version with weaker assumptions.

                                          theorem Fintype.card_zpowers {G : Type u_1} [Group G] [Fintype G] {x : G} :

                                          See also Nat.card_zpowers.

                                          theorem card_zpowers_le {G : Type u_1} [Group G] [Fintype G] (a : G) {k : ℕ} (k_pos : k ≠ 0) (ha : a ^ k = 1) :
                                          theorem card_zmultiples_le {G : Type u_1} [AddGroup G] [Fintype G] (a : G) {k : ℕ} (k_pos : k ≠ 0) (ha : k • a = 0) :
                                          theorem orderOf_dvd_card {G : Type u_1} [Group G] [Fintype G] {x : G} :
                                          theorem orderOf_dvd_natCard {G : Type u_6} [Group G] (x : G) :
                                          theorem Subgroup.orderOf_dvd_natCard {G : Type u_6} [Group G] (s : Subgroup G) {x : G} (hx : x ∈ s) :
                                          theorem AddSubgroup.addOrderOf_dvd_natCard {G : Type u_6} [AddGroup G] (s : AddSubgroup G) {x : G} (hx : x ∈ s) :
                                          theorem Subgroup.orderOf_le_card {G : Type u_6} [Group G] (s : Subgroup G) (hs : (↑s).Finite) {x : G} (hx : x ∈ s) :
                                          theorem AddSubgroup.addOrderOf_le_card {G : Type u_6} [AddGroup G] (s : AddSubgroup G) (hs : (↑s).Finite) {x : G} (hx : x ∈ s) :
                                          theorem Submonoid.orderOf_le_card {G : Type u_6} [Group G] (s : Submonoid G) (hs : (↑s).Finite) {x : G} (hx : x ∈ s) :
                                          theorem AddSubmonoid.addOrderOf_le_card {G : Type u_6} [AddGroup G] (s : AddSubmonoid G) (hs : (↑s).Finite) {x : G} (hx : x ∈ s) :
                                          @[simp]
                                          theorem pow_card_eq_one' {G : Type u_6} [Group G] {x : G} :
                                          x ^ Nat.card G = 1
                                          @[simp]
                                          theorem card_nsmul_eq_zero' {G : Type u_6} [AddGroup G] {x : G} :
                                          Nat.card G • x = 0
                                          @[simp]
                                          theorem pow_card_eq_one {G : Type u_1} [Group G] [Fintype G] {x : G} :
                                          @[simp]
                                          theorem card_nsmul_eq_zero {G : Type u_1} [AddGroup G] [Fintype G] {x : G} :
                                          theorem Subgroup.pow_index_mem {G : Type u_6} [Group G] (H : Subgroup G) [H.Normal] (g : G) :
                                          g ^ H.index ∈ H
                                          theorem AddSubgroup.nsmul_index_mem {G : Type u_6} [AddGroup G] (H : AddSubgroup G) [H.Normal] (g : G) :
                                          H.index • g ∈ H
                                          theorem Subgroup.pow_relIndex_mem {G : Type u_6} [Group G] (H : Subgroup G) [H.Normal] {K : Subgroup G} {g : G} (hg : g ∈ K) :
                                          g ^ H.relIndex K ∈ H
                                          theorem AddSubgroup.nsmul_relIndex_mem {G : Type u_6} [AddGroup G] (H : AddSubgroup G) [H.Normal] {K : AddSubgroup G} {g : G} (hg : g ∈ K) :
                                          H.relIndex K • g ∈ H
                                          @[simp]
                                          theorem pow_mod_card {G : Type u_1} [Group G] [Fintype G] (a : G) (n : ℕ) :
                                          a ^ (n % Fintype.card G) = a ^ n
                                          @[simp]
                                          theorem mod_card_nsmul {G : Type u_1} [AddGroup G] [Fintype G] (a : G) (n : ℕ) :
                                          (n % Fintype.card G) • a = n • a
                                          @[simp]
                                          theorem zpow_mod_card {G : Type u_1} [Group G] [Fintype G] (a : G) (n : ℤ) :
                                          a ^ (n % ↑(Fintype.card G)) = a ^ n
                                          @[simp]
                                          theorem mod_card_zsmul {G : Type u_1} [AddGroup G] [Fintype G] (a : G) (n : ℤ) :
                                          (n % ↑(Fintype.card G)) • a = n • a
                                          @[simp]
                                          theorem pow_mod_natCard {G : Type u_6} [Group G] (a : G) (n : ℕ) :
                                          a ^ (n % Nat.card G) = a ^ n
                                          @[simp]
                                          theorem mod_natCard_nsmul {G : Type u_6} [AddGroup G] (a : G) (n : ℕ) :
                                          (n % Nat.card G) • a = n • a
                                          @[simp]
                                          theorem zpow_mod_natCard {G : Type u_6} [Group G] (a : G) (n : ℤ) :
                                          a ^ (n % ↑(Nat.card G)) = a ^ n
                                          @[simp]
                                          theorem mod_natCard_zsmul {G : Type u_6} [AddGroup G] (a : G) (n : ℤ) :
                                          (n % ↑(Nat.card G)) • a = n • a
                                          noncomputable def powCoprime {n : ℕ} {G : Type u_6} [Group G] (h : (Nat.card G).Coprime n) :
                                          G ≃ G

                                          If gcd(|G|,n)=1 then the nth power map is a bijection

                                          Equations
                                          Instances For
                                            noncomputable def nsmulCoprime {n : ℕ} {G : Type u_6} [AddGroup G] (h : (Nat.card G).Coprime n) :
                                            G ≃ G

                                            If gcd(|G|,n)=1 then the smul by n is a bijection

                                            Equations
                                            Instances For
                                              @[simp]
                                              theorem nsmulCoprime_symm_apply {n : ℕ} {G : Type u_6} [AddGroup G] (h : (Nat.card G).Coprime n) (g : G) :
                                              @[simp]
                                              theorem powCoprime_symm_apply {n : ℕ} {G : Type u_6} [Group G] (h : (Nat.card G).Coprime n) (g : G) :
                                              (powCoprime h).symm g = g ^ (Nat.card G).gcdB n
                                              @[simp]
                                              theorem powCoprime_apply {n : ℕ} {G : Type u_6} [Group G] (h : (Nat.card G).Coprime n) (g : G) :
                                              (powCoprime h) g = g ^ n
                                              @[simp]
                                              theorem nsmulCoprime_apply {n : ℕ} {G : Type u_6} [AddGroup G] (h : (Nat.card G).Coprime n) (g : G) :
                                              (nsmulCoprime h) g = n • g
                                              theorem powCoprime_one {n : ℕ} {G : Type u_6} [Group G] (h : (Nat.card G).Coprime n) :
                                              (powCoprime h) 1 = 1
                                              theorem nsmulCoprime_zero {n : ℕ} {G : Type u_6} [AddGroup G] (h : (Nat.card G).Coprime n) :
                                              (nsmulCoprime h) 0 = 0
                                              theorem powCoprime_inv {n : ℕ} {G : Type u_6} [Group G] (h : (Nat.card G).Coprime n) {g : G} :
                                              theorem nsmulCoprime_neg {n : ℕ} {G : Type u_6} [AddGroup G] (h : (Nat.card G).Coprime n) {g : G} :
                                              theorem Nat.Coprime.pow_left_bijective {n : ℕ} {G : Type u_6} [Group G] (hn : (Nat.card G).Coprime n) :
                                              Function.Bijective fun (x : G) => x ^ n
                                              theorem Nat.Coprime.nsmul_right_bijective {n : ℕ} {G : Type u_6} [AddGroup G] (hn : (Nat.card G).Coprime n) :
                                              Function.Bijective fun (x : G) => n • x
                                              theorem image_range_orderOf {G : Type u_1} [Group G] [Fintype G] {x : G} [DecidableEq G] :
                                              Finset.image (fun (i : ℕ) => x ^ i) (Finset.range (orderOf x)) = (↑(Subgroup.zpowers x)).toFinset
                                              theorem smul_eq_of_le_smul {G : Type u_6} [Group G] [Finite G] {α : Type u_7} [PartialOrder α] {g : G} {a : α} [MulAction G α] [CovariantClass G α HSMul.hSMul LE.le] (h : a ≤ g • a) :
                                              g • a = a
                                              theorem smul_eq_of_smul_le {G : Type u_6} [Group G] [Finite G] {α : Type u_7} [PartialOrder α] {g : G} {a : α} [MulAction G α] [CovariantClass G α HSMul.hSMul LE.le] (h : g • a ≤ a) :
                                              g • a = a
                                              def submonoidOfIdempotent {M : Type u_6} [LeftCancelMonoid M] [Finite M] (S : Set M) (hS1 : S.Nonempty) (hS2 : S * S = S) :

                                              A nonempty idempotent subset of a finite cancellative monoid is a submonoid

                                              Equations
                                              Instances For
                                                def addSubmonoidOfIdempotent {M : Type u_6} [AddLeftCancelMonoid M] [Finite M] (S : Set M) (hS1 : S.Nonempty) (hS2 : S + S = S) :

                                                A nonempty idempotent subset of a finite cancellative additive monoid is a submonoid

                                                Equations
                                                Instances For
                                                  def subgroupOfIdempotent {G : Type u_6} [Group G] [Finite G] (S : Set G) (hS1 : S.Nonempty) (hS2 : S * S = S) :

                                                  A nonempty idempotent subset of a finite group is a subgroup

                                                  Equations
                                                  Instances For
                                                    def addSubgroupOfIdempotent {G : Type u_6} [AddGroup G] [Finite G] (S : Set G) (hS1 : S.Nonempty) (hS2 : S + S = S) :

                                                    A nonempty idempotent subset of a finite additive group is a subgroup

                                                    Equations
                                                    Instances For
                                                      def powCardSubgroup {G : Type u_6} [Group G] [Fintype G] (S : Set G) (hS : S.Nonempty) :

                                                      If S is a nonempty subset of a finite group G, then S ^ |G| is a subgroup

                                                      Equations
                                                      Instances For
                                                        def smulCardAddSubgroup {G : Type u_6} [AddGroup G] [Fintype G] (S : Set G) (hS : S.Nonempty) :

                                                        If S is a nonempty subset of a finite additive group G, then |G| • S is a subgroup

                                                        Equations
                                                        Instances For
                                                          @[simp]
                                                          theorem coe_smulCardAddSubgroup {G : Type u_6} [AddGroup G] [Fintype G] (S : Set G) (hS : S.Nonempty) :
                                                          @[simp]
                                                          theorem coe_powCardSubgroup {G : Type u_6} [Group G] [Fintype G] (S : Set G) (hS : S.Nonempty) :
                                                          theorem IsOfFinOrder.eq_one {G : Type u_1} [Semiring G] [LinearOrder G] [IsStrictOrderedRing G] {a : G} (ha₀ : 0 ≤ a) (ha : IsOfFinOrder a) :
                                                          a = 1
                                                          theorem IsOfFinOrder.eq_neg_one {G : Type u_1} [Ring G] [LinearOrder G] [IsStrictOrderedRing G] {a : G} (ha₀ : a ≤ 0) (ha : IsOfFinOrder a) :
                                                          a = -1
                                                          theorem orderOf_abs_ne_one {G : Type u_1} [Ring G] [LinearOrder G] [IsStrictOrderedRing G] {x : G} (h : |x| ≠ 1) :
                                                          theorem Prod.orderOf {α : Type u_4} {β : Type u_5} [Monoid α] [Monoid β] (x : α × β) :
                                                          orderOf x = (orderOf x.1).lcm (orderOf x.2)
                                                          theorem Prod.addOrderOf {α : Type u_4} {β : Type u_5} [AddMonoid α] [AddMonoid β] (x : α × β) :
                                                          theorem orderOf_fst_dvd_orderOf {α : Type u_4} {β : Type u_5} [Monoid α] [Monoid β] {x : α × β} :
                                                          theorem addOrderOf_fst_dvd_addOrderOf {α : Type u_4} {β : Type u_5} [AddMonoid α] [AddMonoid β] {x : α × β} :
                                                          theorem orderOf_snd_dvd_orderOf {α : Type u_4} {β : Type u_5} [Monoid α] [Monoid β] {x : α × β} :
                                                          theorem addOrderOf_snd_dvd_addOrderOf {α : Type u_4} {β : Type u_5} [AddMonoid α] [AddMonoid β] {x : α × β} :
                                                          theorem IsOfFinOrder.fst {α : Type u_4} {β : Type u_5} [Monoid α] [Monoid β] {x : α × β} (hx : IsOfFinOrder x) :
                                                          theorem IsOfFinAddOrder.fst {α : Type u_4} {β : Type u_5} [AddMonoid α] [AddMonoid β] {x : α × β} (hx : IsOfFinAddOrder x) :
                                                          theorem IsOfFinOrder.snd {α : Type u_4} {β : Type u_5} [Monoid α] [Monoid β] {x : α × β} (hx : IsOfFinOrder x) :
                                                          theorem IsOfFinAddOrder.snd {α : Type u_4} {β : Type u_5} [AddMonoid α] [AddMonoid β] {x : α × β} (hx : IsOfFinAddOrder x) :
                                                          theorem IsOfFinOrder.prod_mk {α : Type u_4} {β : Type u_5} [Monoid α] [Monoid β] {a : α} {b : β} :
                                                          theorem IsOfFinAddOrder.prod_mk {α : Type u_4} {β : Type u_5} [AddMonoid α] [AddMonoid β] {a : α} {b : β} :
                                                          theorem IsOfFinOrder.prod_iff {α : Type u_4} {β : Type u_5} [Monoid α] [Monoid β] {x : α × β} :
                                                          theorem IsOfFinAddOrder.prod_iff {α : Type u_4} {β : Type u_5} [AddMonoid α] [AddMonoid β] {x : α × β} :
                                                          theorem Prod.orderOf_mk {α : Type u_4} {β : Type u_5} [Monoid α] [Monoid β] {a : α} {b : β} :
                                                          theorem Prod.addOrderOf_mk {α : Type u_4} {β : Type u_5} [AddMonoid α] [AddMonoid β] {a : α} {b : β} :
                                                          theorem Pi.orderOf_eq_sInf {ι : Type u_6} {α : ι → Type u_7} [(i : ι) → Monoid (α i)] (x : (i : ι) → α i) :
                                                          orderOf x = sInf {n : ℕ | n > 0 ∧ ∀ (i : ι), orderOf (x i) ∣ n}
                                                          theorem Pi.addOrderOf_eq_sInf {ι : Type u_6} {α : ι → Type u_7} [(i : ι) → AddMonoid (α i)] (x : (i : ι) → α i) :
                                                          addOrderOf x = sInf {n : ℕ | n > 0 ∧ ∀ (i : ι), addOrderOf (x i) ∣ n}
                                                          theorem Pi.orderOf {ι : Type u_6} {α : ι → Type u_7} [(i : ι) → Monoid (α i)] [Fintype ι] (x : (i : ι) → α i) :
                                                          orderOf x = Finset.univ.lcm fun (i : ι) => orderOf (x i)
                                                          theorem Pi.addOrderOf {ι : Type u_6} {α : ι → Type u_7} [(i : ι) → AddMonoid (α i)] [Fintype ι] (x : (i : ι) → α i) :
                                                          addOrderOf x = Finset.univ.lcm fun (i : ι) => addOrderOf (x i)
                                                          theorem orderOf_apply_dvd_orderOf {ι : Type u_6} {α : ι → Type u_7} [(i : ι) → Monoid (α i)] {x : (i : ι) → α i} (i : ι) :
                                                          theorem addOrderOf_apply_dvd_addOrderOf {ι : Type u_6} {α : ι → Type u_7} [(i : ι) → AddMonoid (α i)] {x : (i : ι) → α i} (i : ι) :
                                                          theorem IsOfFinOrder.pi {ι : Type u_6} {α : ι → Type u_7} [(i : ι) → Monoid (α i)] {x : (i : ι) → α i} [Finite ι] :
                                                          (∀ (i : ι), IsOfFinOrder (x i)) → IsOfFinOrder x
                                                          theorem IsOfFinAddOrder.pi {ι : Type u_6} {α : ι → Type u_7} [(i : ι) → AddMonoid (α i)] {x : (i : ι) → α i} [Finite ι] :
                                                          (∀ (i : ι), IsOfFinAddOrder (x i)) → IsOfFinAddOrder x
                                                          @[simp]
                                                          theorem Nat.cast_card_eq_zero (R : Type u_6) [AddGroupWithOne R] [Fintype R] :
                                                          ↑(Fintype.card R) = 0
                                                          theorem charP_of_ne_zero {R : Type u_6} [NonAssocRing R] (p : ℕ) [Fintype R] (hn : Fintype.card R = p) (hR : ∀ i < p, ↑i = 0 → i = 0) :
                                                          CharP R p
                                                          theorem charP_of_prime_pow_injective (R : Type u_6) [Ring R] [Fintype R] (p n : ℕ) [hp : Fact (Nat.Prime p)] (hn : Fintype.card R = p ^ n) (hR : ∀ i ≤ n, ↑p ^ i = 0 → i = n) :
                                                          CharP R (p ^ n)
                                                          theorem SemiconjBy.orderOf_eq {G : Type u_1} [Group G] (a : G) {x y : G} (h : SemiconjBy a x y) :
                                                          theorem AddSemiconjBy.addOrderOf_eq {G : Type u_1} [AddGroup G] (a : G) {x y : G} (h : AddSemiconjBy a x y) :
                                                          theorem orderOf_piMulSingle {ι : Type u_6} [DecidableEq ι] {M : ι → Type u_7} [(i : ι) → Monoid (M i)] (i : ι) (g : M i) :