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_add_iff_nsmul_eq_zero {G : Type u_1} [AddMonoid G] {n : } (x : G) :
Function.IsPeriodicPt ((fun x x_1 => x + x_1) x) n 0 n x = 0
theorem isPeriodicPt_mul_iff_pow_eq_one {G : Type u_1} [Monoid G] {n : } (x : G) :
Function.IsPeriodicPt ((fun x x_1 => x * x_1) x) n 1 x ^ n = 1
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
    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
      theorem isOfFinAddOrder_ofMul_iff {G : Type u_1} [Monoid G] {x : G} :
      IsOfFinAddOrder (Additive.ofMul x) IsOfFinOrder x
      theorem isOfFinOrder_ofAdd_iff {A : Type u_3} [AddMonoid A] {a : A} :
      IsOfFinOrder (Multiplicative.ofAdd a) IsOfFinAddOrder a
      theorem isOfFinAddOrder_iff_nsmul_eq_zero {G : Type u_1} [AddMonoid G] (x : G) :
      IsOfFinAddOrder x n, 0 < n n x = 0
      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_coe {G : Type u_1} [AddMonoid G] (H : AddSubmonoid G) (x : { x // x H }) :

      Elements of finite order are of finite order in submonoids.

      theorem isOfFinOrder_iff_coe {G : Type u_1} [Monoid G] (H : Submonoid G) (x : { x // x H }) :

      Elements of finite order are of finite order in submonoids.

      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 MonoidHom.isOfFinOrder {G : Type u_1} {H : Type u_2} [Monoid G] [Monoid H] (f : G →* H) {x : G} (h : IsOfFinOrder x) :
      IsOfFinOrder (f x)

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

      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.

      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.

      0 is of finite order in any additive monoid.

      theorem isOfFinOrder_one {G : Type u_1} [Monoid G] :

      1 is of finite order in any monoid.

      theorem IsOfFinAddOrder.addGroupMultiples.proof_1 {G : Type u_1} [AddMonoid G] {x : G} (hx : IsOfFinAddOrder x) :
      n, 0 < n n x = 0
      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
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem IsOfFinAddOrder.addGroupMultiples.proof_2 {G : Type u_1} [AddMonoid G] {x : G} (hx : IsOfFinAddOrder x) :
        0 < Exists.choose (_ : n, 0 < n n x = 0) Exists.choose (_ : n, 0 < n n x = 0) x = 0
        @[inline, reducible]
        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
        • One or more equations did not get rendered due to their size.
        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
            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
              @[simp]
              theorem addOrderOf_ofMul_eq_orderOf {G : Type u_1} [Monoid G] (x : G) :
              addOrderOf (Additive.ofMul x) = orderOf x
              @[simp]
              theorem orderOf_ofAdd_eq_addOrderOf {A : Type u_3} [AddMonoid A] (a : A) :
              orderOf (Multiplicative.ofAdd a) = addOrderOf a
              theorem addOrderOf_pos' {G : Type u_1} [AddMonoid G] {x : G} (h : IsOfFinAddOrder x) :
              theorem orderOf_pos' {G : Type u_1} [Monoid G] {x : G} (h : IsOfFinOrder x) :
              theorem addOrderOf_nsmul_eq_zero {G : Type u_1} [AddMonoid G] (x : G) :
              theorem pow_orderOf_eq_one {G : Type u_1} [Monoid G] (x : G) :
              x ^ orderOf x = 1
              theorem addOrderOf_eq_zero {G : Type u_1} [AddMonoid G] {x : G} (h : ¬IsOfFinAddOrder x) :
              theorem orderOf_eq_zero {G : Type u_1} [Monoid G] {x : G} (h : ¬IsOfFinOrder x) :
              theorem orderOf_eq_zero_iff {G : Type u_1} [Monoid G] {x : G} :
              theorem addOrderOf_eq_zero_iff' {G : Type u_1} [AddMonoid G] {x : G} :
              addOrderOf x = 0 ∀ (n : ), 0 < nn x 0
              theorem orderOf_eq_zero_iff' {G : Type u_1} [Monoid G] {x : G} :
              orderOf x = 0 ∀ (n : ), 0 < nx ^ n 1
              theorem addOrderOf_eq_iff {G : Type u_1} [AddMonoid G] {x : G} {n : } (h : 0 < n) :
              addOrderOf x = n n x = 0 ∀ (m : ), m < n0 < mm x 0
              theorem orderOf_eq_iff {G : Type u_1} [Monoid G] {x : G} {n : } (h : 0 < n) :
              orderOf x = n x ^ n = 1 ∀ (m : ), m < n0 < mx ^ m 1
              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 orderOf_pos_iff {G : Type u_1} [Monoid G] {x : G} :

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

              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 IsOfFinOrder.mono {G : Type u_1} {β : Type u_5} [Monoid G] {x : G} [Monoid β] {y : β} (hx : IsOfFinOrder x) (h : orderOf y orderOf x) :
              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 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 addOrderOf_le_of_nsmul_eq_zero {G : Type u_1} [AddMonoid G] {x : G} {n : } (hn : 0 < n) (h : 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) :
              @[simp]
              theorem addOrderOf_zero {G : Type u_1} [AddMonoid G] :
              @[simp]
              theorem orderOf_one {G : Type u_1} [Monoid G] :
              @[simp]
              theorem AddMonoid.addOrderOf_eq_one_iff {G : Type u_1} [AddMonoid G] {x : G} :
              addOrderOf x = 1 x = 0
              @[simp]
              theorem orderOf_eq_one_iff {G : Type u_1} [Monoid G] {x : G} :
              orderOf x = 1 x = 1
              theorem nsmul_eq_mod_addOrderOf {G : Type u_1} [AddMonoid G] {x : G} {n : } :
              n x = (n % addOrderOf x) x
              theorem pow_eq_mod_orderOf {G : Type u_1} [Monoid G] {x : G} {n : } :
              x ^ n = x ^ (n % orderOf x)
              theorem addOrderOf_dvd_of_nsmul_eq_zero {G : Type u_1} [AddMonoid G] {x : G} {n : } (h : n x = 0) :
              theorem orderOf_dvd_of_pow_eq_one {G : Type u_1} [Monoid G] {x : G} {n : } (h : 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 orderOf_dvd_iff_pow_eq_one {G : Type u_1} [Monoid G] {x : G} {n : } :
              orderOf x n x ^ n = 1
              theorem addOrderOf_smul_dvd {G : Type u_1} [AddMonoid G] {x : G} (n : ) :
              theorem orderOf_pow_dvd {G : Type u_1} [Monoid G] {x : G} (n : ) :
              theorem nsmul_injective_of_lt_addOrderOf {G : Type u_1} [AddMonoid G] {n : } {m : } (x : G) (hn : n < addOrderOf x) (hm : m < addOrderOf x) (eq : n x = m x) :
              n = m
              theorem pow_injective_of_lt_orderOf {G : Type u_1} [Monoid G] {n : } {m : } (x : G) (hn : n < orderOf x) (hm : m < orderOf x) (eq : x ^ n = x ^ m) :
              n = m
              theorem mem_powers_iff_mem_range_order_of' {G : Type u_1} [Monoid G] {x : G} {y : G} [DecidableEq G] (hx : 0 < 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 pow_eq_one_iff_modEq {G : Type u_1} [Monoid G] {x : G} {n : } :
              x ^ n = 1 n 0 [MOD orderOf x]
              theorem addOrderOf_map_dvd {G : Type u_1} [AddMonoid G] {H : Type u_6} [AddMonoid H] (ψ : G →+ H) (x : G) :
              theorem orderOf_map_dvd {G : Type u_1} [Monoid G] {H : Type u_6} [Monoid H] (ψ : G →* H) (x : G) :
              orderOf (ψ x) orderOf x
              theorem exists_nsmul_eq_self_of_coprime {G : Type u_1} [AddMonoid G] {x : G} {n : } (h : Nat.Coprime n (addOrderOf x)) :
              m, m n x = x
              theorem exists_pow_eq_self_of_coprime {G : Type u_1} [Monoid G] {x : G} {n : } (h : Nat.Coprime n (orderOf x)) :
              m, (x ^ n) ^ m = x
              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 pp 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_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 pp nx ^ (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_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_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_injective {G : Type u_1} [AddMonoid G] {H : Type u_6} [AddMonoid H] (f : G →+ H) (hf : Function.Injective f) (x : G) :
              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
              @[simp]
              theorem addOrderOf_addSubmonoid {G : Type u_1} [AddMonoid G] {H : AddSubmonoid G} (y : { x // x H }) :
              @[simp]
              theorem orderOf_submonoid {G : Type u_1} [Monoid G] {H : Submonoid G} (y : { x // x H }) :
              theorem orderOf_units {G : Type u_1} [Monoid G] {y : Gˣ} :
              theorem addOrderOf_nsmul' {G : Type u_1} [AddMonoid G] (x : G) {n : } (h : n 0) :
              theorem orderOf_pow' {G : Type u_1} [Monoid G] (x : G) {n : } (h : n 0) :
              theorem addOrderOf_nsmul'' {G : Type u_1} [AddMonoid G] (x : G) (n : ) (h : IsOfFinAddOrder x) :
              theorem orderOf_pow'' {G : Type u_1} [Monoid G] (x : G) (n : ) (h : IsOfFinOrder x) :
              theorem addOrderOf_nsmul_coprime {G : Type u_1} [AddMonoid G] {y : G} {m : } (h : Nat.Coprime (addOrderOf y) m) :
              theorem orderOf_pow_coprime {G : Type u_1} [Monoid G] {y : G} {m : } (h : Nat.Coprime (orderOf y) m) :
              orderOf (y ^ m) = orderOf y
              theorem AddCommute.addOrderOf_add_dvd_lcm {G : Type u_1} [AddMonoid G] {x : G} {y : G} (h : AddCommute x y) :
              theorem Commute.orderOf_mul_dvd_lcm {G : Type u_1} [Monoid G] {x : G} {y : G} (h : Commute x y) :
              theorem AddCommute.addOrderOf_dvd_lcm_add {G : Type u_1} [AddMonoid G] {x : G} {y : G} (h : AddCommute x y) :
              theorem Commute.orderOf_dvd_lcm_mul {G : Type u_1} [Monoid G] {x : G} {y : G} (h : Commute x y) :
              theorem Commute.orderOf_mul_dvd_mul_orderOf {G : Type u_1} [Monoid G] {x : G} {y : G} (h : Commute x y) :
              theorem Commute.orderOf_mul_eq_mul_orderOf_of_coprime {G : Type u_1} [Monoid G] {x : G} {y : G} (h : Commute x y) (hco : Nat.Coprime (orderOf x) (orderOf y)) :
              theorem AddCommute.isOfFinAddOrder_add {G : Type u_1} [AddMonoid G] {x : G} {y : G} (h : AddCommute x y) (hx : IsOfFinAddOrder x) (hy : IsOfFinAddOrder y) :

              Commuting elements of finite additive order are closed under addition.

              theorem Commute.isOfFinOrder_mul {G : Type u_1} [Monoid G] {x : G} {y : G} (h : Commute x y) (hx : IsOfFinOrder x) (hy : IsOfFinOrder y) :

              Commuting elements of finite order are closed under multiplication.

              theorem AddCommute.addOrderOf_add_eq_right_of_forall_prime_mul_dvd {G : Type u_1} [AddMonoid G] {x : G} {y : G} (h : AddCommute x y) (hy : IsOfFinAddOrder y) (hdvd : ∀ (p : ), Nat.Prime pp addOrderOf xp * 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_right_of_forall_prime_mul_dvd {G : Type u_1} [Monoid G] {x : G} {y : G} (h : Commute x y) (hy : IsOfFinOrder y) (hdvd : ∀ (p : ), Nat.Prime pp orderOf xp * 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 addOrderOf_eq_prime {G : Type u_1} [AddMonoid G] {x : G} {p : } [hp : Fact (Nat.Prime p)] (hg : p x = 0) (hg1 : 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) :
              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 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)
              abbrev exists_addOrderOf_eq_prime_pow_iff.match_1 {G : Type u_1} [AddMonoid G] {x : G} {p : } (motive : (k, addOrderOf x = p ^ k) → Prop) :
              (x : k, addOrderOf x = p ^ k) → ((k : ) → (hk : addOrderOf x = p ^ k) → motive (_ : k, addOrderOf x = p ^ k)) → motive x
              Equations
              Instances For
                abbrev exists_addOrderOf_eq_prime_pow_iff.match_2 {G : Type u_1} [AddMonoid G] {x : G} {p : } (motive : (m, p ^ m x = 0) → Prop) :
                (x : m, p ^ m x = 0) → ((w : ) → (hm : p ^ w x = 0) → motive (_ : m, p ^ m x = 0)) → motive x
                Equations
                Instances For
                  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
                  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 nsmul_eq_nsmul_iff_modEq {G : Type u_1} [AddLeftCancelMonoid G] (x : G) {m : } {n : } :
                  n x = m x n m [MOD 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_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_mod {G : Type u_1} [LeftCancelMonoid G] (x : G) {n : } {m : } :
                  x ^ n = x ^ m n % orderOf x = m % orderOf x
                  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
                  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 IsOfFinAddOrder.neg {G : Type u_1} [AddGroup G] {x : G} (hx : IsOfFinAddOrder x) :

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

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

                  Inverses of elements of finite order have finite order.

                  @[simp]

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

                  @[simp]

                  Inverses of elements of finite order have finite order.

                  theorem addOrderOf_dvd_iff_zsmul_eq_zero {G : Type u_1} [AddGroup G] {x : G} {i : } :
                  ↑(addOrderOf x) i i x = 0
                  theorem orderOf_dvd_iff_zpow_eq_one {G : Type u_1} [Group G] {x : G} {i : } :
                  ↑(orderOf x) i x ^ i = 1
                  @[simp]
                  theorem addOrderOf_neg {G : Type u_1} [AddGroup G] (x : G) :
                  @[simp]
                  theorem orderOf_inv {G : Type u_1} [Group G] (x : G) :
                  theorem addOrderOf_addSubgroup {G : Type u_1} [AddGroup G] {H : AddSubgroup G} (y : { x // x H }) :
                  theorem orderOf_subgroup {G : Type u_1} [Group G] {H : Subgroup G} (y : { x // x H }) :
                  theorem zsmul_eq_mod_addOrderOf {G : Type u_1} [AddGroup G] {x : G} {i : } :
                  i x = (i % ↑(addOrderOf x)) x
                  theorem zpow_eq_mod_orderOf {G : Type u_1} [Group G] {x : G} {i : } :
                  x ^ i = x ^ (i % ↑(orderOf x))
                  @[simp]
                  theorem zsmul_smul_addOrderOf {G : Type u_1} [AddGroup G] {x : G} {i : } :
                  @[simp]
                  theorem zpow_pow_orderOf {G : Type u_1} [Group G] {x : G} {i : } :
                  (x ^ i) ^ orderOf x = 1
                  theorem IsOfFinAddOrder.zsmul {G : Type u_1} [AddGroup G] {x : G} (h : IsOfFinAddOrder x) {i : } :
                  theorem IsOfFinOrder.zpow {G : Type u_1} [Group G] {x : G} (h : IsOfFinOrder x) {i : } :
                  theorem IsOfFinOrder.of_mem_zpowers {G : Type u_1} [Group G] {x : G} {y : G} (h : IsOfFinOrder x) (h' : y Subgroup.zpowers x) :
                  theorem orderOf_dvd_of_mem_zpowers {G : Type u_1} [Group G] {x : G} {y : G} (h : y Subgroup.zpowers x) :
                  theorem smul_eq_self_of_mem_zpowers {G : Type u_1} [Group G] {x : G} {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 {α : Type u_6} {G : Type u_7} [AddGroup G] [AddAction G α] {x : G} {y : G} (hx : x AddSubgroup.zmultiples y) {a : α} (hs : y +ᵥ a = a) :
                  x +ᵥ a = a
                  theorem IsOfFinAddOrder.add {G : Type u_1} [AddCommMonoid G] {x : G} {y : G} (hx : IsOfFinAddOrder x) (hy : IsOfFinAddOrder y) :

                  Elements of finite additive order are closed under addition.

                  theorem IsOfFinOrder.mul {G : Type u_1} [CommMonoid G] {x : G} {y : G} (hx : IsOfFinOrder x) (hy : IsOfFinOrder y) :

                  Elements of finite order are closed under multiplication.

                  theorem sum_card_addOrderOf_eq_card_nsmul_eq_zero {G : Type u_1} [AddMonoid G] {n : } [Fintype G] [DecidableEq G] (hn : n 0) :
                  (Finset.sum (Finset.filter (fun x => x n) (Finset.range (Nat.succ n))) fun m => Finset.card (Finset.filter (fun x => addOrderOf x = m) Finset.univ)) = Finset.card (Finset.filter (fun x => n x = 0) Finset.univ)
                  abbrev sum_card_addOrderOf_eq_card_nsmul_eq_zero.match_1 {G : Type u_1} [AddMonoid G] {n : } (x : G) (motive : addOrderOf x nProp) :
                  (x : addOrderOf x n) → ((m : ) → (hm : n = addOrderOf x * m) → motive (_ : c, n = addOrderOf x * c)) → motive x
                  Equations
                  Instances For
                    theorem sum_card_orderOf_eq_card_pow_eq_one {G : Type u_1} [Monoid G] {n : } [Fintype G] [DecidableEq G] (hn : n 0) :
                    (Finset.sum (Finset.filter (fun x => x n) (Finset.range (Nat.succ n))) fun m => Finset.card (Finset.filter (fun x => orderOf x = m) Finset.univ)) = Finset.card (Finset.filter (fun x => x ^ n = 1) Finset.univ)
                    theorem orderOf_le_card_univ {G : Type u_1} [Monoid G] {x : G} [Fintype G] :
                    theorem exists_pow_eq_one {G : Type u_1} [LeftCancelMonoid G] [Finite G] (x : G) :
                    theorem addOrderOf_pos {G : Type u_1} [AddLeftCancelMonoid G] [Finite G] (x : G) :

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

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

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

                    theorem addOrderOf_nsmul {G : Type u_1} [AddLeftCancelMonoid G] {n : } [Finite G] (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.

                    theorem orderOf_pow {G : Type u_1} [LeftCancelMonoid G] {n : } [Finite G] (x : G) :

                    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 mem_powers_iff_mem_range_orderOf {G : Type u_1} [LeftCancelMonoid G] {x : G} {y : G} [Finite G] [DecidableEq G] :
                    y Submonoid.powers x y Finset.image ((fun x x_1 => x ^ x_1) x) (Finset.range (orderOf x))
                    noncomputable instance decidableMultiples {G : Type u_1} [AddLeftCancelMonoid G] {x : G} :
                    Equations
                    noncomputable instance decidablePowers {G : Type u_1} [LeftCancelMonoid G] {x : G} :
                    Equations
                    theorem finEquivMultiples.proof_1 {G : Type u_1} [AddLeftCancelMonoid G] (x : G) (n : Fin (addOrderOf x)) :
                    y, (fun x x_1 => x_1 x) x y = n x
                    abbrev finEquivMultiples.match_1 {G : Type u_1} [AddLeftCancelMonoid G] (x : G) :
                    ∀ (val : ) (h₁ : val < addOrderOf x) (motive : (x : Fin (addOrderOf x)) → (fun n => { val := n x, property := (_ : y, (fun x x_1 => x_1 x) x y = n x) }) { val := val, isLt := h₁ } = (fun n => { val := n x, property := (_ : y, (fun x x_1 => x_1 x) x y = n x) }) xProp) (x : Fin (addOrderOf x)) (ij : (fun n => { val := n x, property := (_ : y, (fun x x_1 => x_1 x) x y = n x) }) { val := val, isLt := h₁ } = (fun n => { val := n x, property := (_ : y, (fun x x_1 => x_1 x) x y = n x) }) x), (∀ (val_1 : ) (h₂ : val_1 < addOrderOf x) (ij : (fun n => { val := n x, property := (_ : y, (fun x x_1 => x_1 x) x y = n x) }) { val := val, isLt := h₁ } = (fun n => { val := n x, property := (_ : y, (fun x x_1 => x_1 x) x y = n x) }) { val := val_1, isLt := h₂ }), motive { val := val_1, isLt := h₂ } ij) → motive x ij
                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      abbrev finEquivMultiples.match_2 {G : Type u_1} [AddLeftCancelMonoid G] (x : G) :
                      ∀ (x : Fin (addOrderOf x)) (motive : (x_1 : Fin (addOrderOf x)) → (fun n => { val := n x, property := (_ : y, (fun x x_2 => x_2 x) x y = n x) }) x_1 = (fun n => { val := n x, property := (_ : y, (fun x x_2 => x_2 x) x y = n x) }) xProp) (x_1 : Fin (addOrderOf x)) (ij : (fun n => { val := n x, property := (_ : y, (fun x x_2 => x_2 x) x y = n x) }) x_1 = (fun n => { val := n x, property := (_ : y, (fun x x_2 => x_2 x) x y = n x) }) x), (∀ (val : ) (h₁ : val < addOrderOf x) (ij : (fun n => { val := n x, property := (_ : y, (fun x x_2 => x_2 x) x y = n x) }) { val := val, isLt := h₁ } = (fun n => { val := n x, property := (_ : y, (fun x x_2 => x_2 x) x y = n x) }) x), motive { val := val, isLt := h₁ } ij) → motive x_1 ij
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        abbrev finEquivMultiples.match_3 {G : Type u_1} [AddLeftCancelMonoid G] (x : G) (motive : ↑(AddSubmonoid.multiples x)Prop) :
                        (x : ↑(AddSubmonoid.multiples x)) → ((i : ) → motive { val := (fun x x_1 => x_1 x) x i, property := (_ : y, (fun x x_1 => x_1 x) x y = (fun x x_1 => x_1 x) x i) }) → motive x
                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          theorem finEquivMultiples.proof_2 {G : Type u_1} [AddLeftCancelMonoid G] [Finite G] (x : G) :
                          (Function.Injective fun n => { val := n x, property := (_ : y, (fun x x_1 => x_1 x) x y = n x) }) Function.Surjective fun n => { val := n x, property := (_ : y, (fun x x_1 => x_1 x) x y = n x) }
                          noncomputable def finEquivMultiples {G : Type u_1} [AddLeftCancelMonoid G] [Finite G] (x : G) :

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

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            noncomputable def finEquivPowers {G : Type u_1} [LeftCancelMonoid G] [Finite G] (x : G) :

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

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              @[simp]
                              theorem finEquivMultiples_apply {G : Type u_1} [AddLeftCancelMonoid G] [Finite G] {x : G} {n : Fin (addOrderOf x)} :
                              ↑(finEquivMultiples x) n = { val := n x, property := (_ : y, (fun x x_1 => x_1 x) x y = n x) }
                              @[simp]
                              theorem finEquivPowers_apply {G : Type u_1} [LeftCancelMonoid G] [Finite G] {x : G} {n : Fin (orderOf x)} :
                              ↑(finEquivPowers x) n = { val := x ^ n, property := (_ : y, (fun x x_1 => x ^ x_1) x y = x ^ n) }
                              @[simp]
                              theorem finEquivMultiples_symm_apply {G : Type u_1} [AddLeftCancelMonoid G] [Finite G] (x : G) (n : ) {hn : m, m x = n x} :
                              (finEquivMultiples x).symm { val := n x, property := hn } = { val := n % addOrderOf x, isLt := (_ : n % addOrderOf x < addOrderOf x) }
                              @[simp]
                              theorem finEquivPowers_symm_apply {G : Type u_1} [LeftCancelMonoid G] [Finite G] (x : G) (n : ) {hn : m, x ^ m = x ^ n} :
                              (finEquivPowers x).symm { val := x ^ n, property := hn } = { val := n % orderOf x, isLt := (_ : n % orderOf x < orderOf x) }
                              noncomputable def multiplesEquivMultiples {G : Type u_1} [AddLeftCancelMonoid G] {x : G} {y : G} [Finite 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
                                noncomputable def powersEquivPowers {G : Type u_1} [LeftCancelMonoid G] {x : G} {y : G} [Finite 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
                                  @[simp]
                                  theorem multiplesEquivMultiples_apply {G : Type u_1} [AddLeftCancelMonoid G] {x : G} {y : G} [Finite G] (h : addOrderOf x = addOrderOf y) (n : ) :
                                  ↑(multiplesEquivMultiples h) { val := n x, property := (_ : y, (fun x x_1 => x_1 x) x y = n x) } = { val := n y, property := (_ : y, (fun x x_1 => x_1 x) y y = n y) }
                                  @[simp]
                                  theorem powersEquivPowers_apply {G : Type u_1} [LeftCancelMonoid G] {x : G} {y : G} [Finite G] (h : orderOf x = orderOf y) (n : ) :
                                  ↑(powersEquivPowers h) { val := x ^ n, property := (_ : y, (fun x x_1 => x ^ x_1) x y = x ^ n) } = { val := y ^ n, property := (_ : y, (fun x x_1 => x ^ x_1) y y = y ^ n) }
                                  Equations
                                  Equations
                                  theorem exists_zsmul_eq_zero {G : Type u_1} [AddGroup G] [Finite G] (x : G) :
                                  i x, i x = 0
                                  theorem exists_zpow_eq_one {G : Type u_1} [Group G] [Finite G] (x : G) :
                                  i x, x ^ i = 1
                                  abbrev mem_multiples_iff_mem_zmultiples.match_2 {G : Type u_1} [AddGroup G] {x : G} {y : G} (motive : y AddSubgroup.zmultiples xProp) :
                                  (x : y AddSubgroup.zmultiples x) → ((i : ) → (hi : (fun x x_1 => x_1 x) x i = y) → motive (_ : y, (fun x x_1 => x_1 x) x y = y)) → motive x
                                  Equations
                                  Instances For
                                    abbrev mem_multiples_iff_mem_zmultiples.match_1 {G : Type u_1} [AddGroup G] {x : G} {y : G} (motive : y AddSubmonoid.multiples xProp) :
                                    (x : y AddSubmonoid.multiples x) → ((n : ) → (hn : (fun x x_1 => x_1 x) x n = y) → motive (_ : y, (fun x x_1 => x_1 x) x y = y)) → motive x
                                    Equations
                                    Instances For
                                      theorem mem_powers_iff_mem_zpowers {G : Type u_1} [Group G] {x : G} {y : G} [Finite G] :
                                      theorem powers_eq_zpowers {G : Type u_1} [Group G] [Finite G] (x : G) :
                                      theorem mem_zmultiples_iff_mem_range_addOrderOf {G : Type u_1} [AddGroup G] {x : G} {y : G} [Finite G] [DecidableEq G] :
                                      theorem mem_zpowers_iff_mem_range_orderOf {G : Type u_1} [Group G] {x : G} {y : G} [Finite G] [DecidableEq G] :
                                      y Subgroup.zpowers x y Finset.image ((fun x x_1 => x ^ x_1) x) (Finset.range (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_one_iff_modEq {G : Type u_1} [Group G] {x : G} {n : } :
                                      x ^ n = 1 n 0 [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)]
                                      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)]
                                      @[simp]
                                      theorem injective_zpow_iff_not_isOfFinOrder {G : Type u_1} [Group G] {x : G} :
                                      noncomputable instance decidableZmultiples {G : Type u_1} [AddGroup G] {x : G} :
                                      Equations
                                      noncomputable instance decidableZpowers {G : Type u_1} [Group G] {x : G} :
                                      Equations
                                      noncomputable def finEquivZmultiples {G : Type u_1} [AddGroup G] [Finite G] (x : G) :

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

                                      Equations
                                      Instances For
                                        noncomputable def finEquivZpowers {G : Type u_1} [Group G] [Finite G] (x : G) :

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

                                        Equations
                                        Instances For
                                          @[simp]
                                          theorem finEquivZmultiples_apply {G : Type u_1} [AddGroup G] {x : G} [Finite G] {n : Fin (addOrderOf x)} :
                                          ↑(finEquivZmultiples x) n = { val := n x, property := (_ : y, (fun x x_1 => x_1 x) x y = n x) }
                                          @[simp]
                                          theorem finEquivZpowers_apply {G : Type u_1} [Group G] {x : G} [Finite G] {n : Fin (orderOf x)} :
                                          ↑(finEquivZpowers x) n = { val := x ^ n, property := (_ : y, (fun x x_1 => x ^ x_1) x y = x ^ n) }
                                          @[simp]
                                          theorem finEquivZmultiples_symm_apply {G : Type u_1} [AddGroup G] [Finite G] (x : G) (n : ) {hn : m, m x = n x} :
                                          (finEquivZmultiples x).symm { val := n x, property := hn } = { val := n % addOrderOf x, isLt := (_ : n % addOrderOf x < addOrderOf x) }
                                          @[simp]
                                          theorem finEquivZpowers_symm_apply {G : Type u_1} [Group G] [Finite G] (x : G) (n : ) {hn : m, x ^ m = x ^ n} :
                                          (finEquivZpowers x).symm { val := x ^ n, property := hn } = { val := n % orderOf x, isLt := (_ : n % orderOf x < orderOf x) }
                                          noncomputable def zmultiplesEquivZmultiples {G : Type u_1} [AddGroup G] {x : G} {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
                                            noncomputable def zpowersEquivZpowers {G : Type u_1} [Group G] {x : G} {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
                                              @[simp]
                                              theorem zmultiples_equiv_zmultiples_apply {G : Type u_1} [AddGroup G] {x : G} {y : G} [Finite G] (h : addOrderOf x = addOrderOf y) (n : ) :
                                              ↑(zmultiplesEquivZmultiples h) { val := n x, property := (_ : y, (fun x x_1 => x_1 x) x y = n x) } = { val := n y, property := (_ : y, (fun x x_1 => x_1 x) y y = n y) }
                                              @[simp]
                                              theorem zpowersEquivZpowers_apply {G : Type u_1} [Group G] {x : G} {y : G} [Finite G] (h : orderOf x = orderOf y) (n : ) :
                                              ↑(zpowersEquivZpowers h) { val := x ^ n, property := (_ : y, (fun x x_1 => x ^ x_1) x y = x ^ n) } = { val := y ^ n, property := (_ : y, (fun x x_1 => x ^ x_1) y y = y ^ n) }

                                              See also Nat.card_zmultiples'.

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

                                              See also Nat.card_zpowers'.

                                              theorem card_zmultiples_le {G : Type u_1} [AddGroup G] [Fintype G] (a : G) {k : } (k_pos : k 0) (ha : k a = 0) :
                                              theorem card_zpowers_le {G : Type u_1} [Group G] [Fintype G] (a : G) {k : } (k_pos : k 0) (ha : a ^ k = 1) :
                                              theorem orderOf_dvd_card_univ {G : Type u_1} [Group G] {x : G} [Fintype G] :
                                              theorem orderOf_dvd_nat_card {G : Type u_6} [Group G] {x : G} :
                                              @[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_6} [Group G] {x : G} :
                                              x ^ Nat.card G = 1
                                              @[simp]
                                              theorem card_nsmul_eq_zero {G : Type u_1} [AddGroup G] {x : G} [Fintype G] :
                                              @[simp]
                                              theorem pow_card_eq_one {G : Type u_1} [Group G] {x : G} [Fintype G] :
                                              theorem Subgroup.pow_index_mem {G : Type u_6} [Group G] (H : Subgroup G) [Subgroup.Normal H] (g : G) :
                                              theorem nsmul_eq_mod_card {G : Type u_1} [AddGroup G] {x : G} [Fintype G] (n : ) :
                                              n x = (n % Fintype.card G) x
                                              theorem pow_eq_mod_card {G : Type u_1} [Group G] {x : G} [Fintype G] (n : ) :
                                              x ^ n = x ^ (n % Fintype.card G)
                                              theorem zsmul_eq_mod_card {G : Type u_1} [AddGroup G] {x : G} [Fintype G] (n : ) :
                                              n x = (n % ↑(Fintype.card G)) x
                                              theorem zpow_eq_mod_card {G : Type u_1} [Group G] {x : G} [Fintype G] (n : ) :
                                              x ^ n = x ^ (n % ↑(Fintype.card G))
                                              noncomputable def nsmulCoprime {n : } {G : Type u_6} [AddGroup G] (h : Nat.Coprime (Nat.card G) n) :
                                              G G

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

                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              Instances For
                                                theorem nsmulCoprime.proof_2 {n : } {G : Type u_1} [AddGroup G] (h : Nat.Coprime (Nat.card G) n) (g : G) :
                                                n Nat.gcdB (Nat.card G) n g = g
                                                theorem nsmulCoprime.proof_1 {n : } {G : Type u_1} [AddGroup G] (h : Nat.Coprime (Nat.card G) n) (g : G) :
                                                Nat.gcdB (Nat.card G) n n g = g
                                                @[simp]
                                                theorem powCoprime_symm_apply {n : } {G : Type u_6} [Group G] (h : Nat.Coprime (Nat.card G) n) (g : G) :
                                                (powCoprime h).symm g = g ^ Nat.gcdB (Nat.card G) n
                                                @[simp]
                                                theorem nsmulCoprime_symm_apply {n : } {G : Type u_6} [AddGroup G] (h : Nat.Coprime (Nat.card G) n) (g : G) :
                                                (nsmulCoprime h).symm g = Nat.gcdB (Nat.card G) n g
                                                @[simp]
                                                theorem nsmulCoprime_apply {n : } {G : Type u_6} [AddGroup G] (h : Nat.Coprime (Nat.card G) n) (g : G) :
                                                ↑(nsmulCoprime h) g = n g
                                                @[simp]
                                                theorem powCoprime_apply {n : } {G : Type u_6} [Group G] (h : Nat.Coprime (Nat.card G) n) (g : G) :
                                                ↑(powCoprime h) g = g ^ n
                                                noncomputable def powCoprime {n : } {G : Type u_6} [Group G] (h : Nat.Coprime (Nat.card G) n) :
                                                G G

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

                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                Instances For
                                                  theorem nsmulCoprime_zero {n : } {G : Type u_6} [AddGroup G] (h : Nat.Coprime (Nat.card G) n) :
                                                  ↑(nsmulCoprime h) 0 = 0
                                                  theorem powCoprime_one {n : } {G : Type u_6} [Group G] (h : Nat.Coprime (Nat.card G) n) :
                                                  ↑(powCoprime h) 1 = 1
                                                  theorem nsmulCoprime_neg {n : } {G : Type u_6} [AddGroup G] (h : Nat.Coprime (Nat.card G) n) {g : G} :
                                                  ↑(nsmulCoprime h) (-g) = -↑(nsmulCoprime h) g
                                                  theorem powCoprime_inv {n : } {G : Type u_6} [Group G] (h : Nat.Coprime (Nat.card G) n) {g : G} :
                                                  ↑(powCoprime h) g⁻¹ = (↑(powCoprime h) g)⁻¹
                                                  theorem add_inf_eq_bot_of_coprime {G : Type u_6} [AddGroup G] {H : AddSubgroup G} {K : AddSubgroup G} [Fintype { x // x H }] [Fintype { x // x K }] (h : Nat.Coprime (Fintype.card { x // x H }) (Fintype.card { x // x K })) :
                                                  H K =
                                                  theorem inf_eq_bot_of_coprime {G : Type u_6} [Group G] {H : Subgroup G} {K : Subgroup G} [Fintype { x // x H }] [Fintype { x // x K }] (h : Nat.Coprime (Fintype.card { x // x H }) (Fintype.card { x // x K })) :
                                                  H K =
                                                  theorem image_range_orderOf {G : Type u_1} [Group G] {x : G} [Fintype G] [DecidableEq G] :
                                                  theorem gcd_nsmul_card_eq_zero_iff {G : Type u_1} [AddGroup G] {x : G} {n : } [Fintype G] :
                                                  n x = 0 Nat.gcd n (Fintype.card G) x = 0
                                                  abbrev gcd_nsmul_card_eq_zero_iff.match_1 {G : Type u_1} {n : } [Fintype G] (motive : Nat.gcd n (Fintype.card G) nProp) :
                                                  (x : Nat.gcd n (Fintype.card G) n) → ((m : ) → (hm : n = Nat.gcd n (Fintype.card G) * m) → motive (_ : c, n = Nat.gcd n (Fintype.card G) * c)) → motive x
                                                  Equations
                                                  Instances For
                                                    theorem pow_gcd_card_eq_one_iff {G : Type u_1} [Group G] {x : G} {n : } [Fintype G] :
                                                    x ^ n = 1 x ^ Nat.gcd n (Fintype.card G) = 1
                                                    theorem addSubmonoidOfIdempotent.proof_1 {M : Type u_1} [AddLeftCancelMonoid M] (S : Set M) (hS2 : S + S = S) (a : M) (ha : a S) (t : ) :
                                                    (t + 1) a S
                                                    def addSubmonoidOfIdempotent {M : Type u_6} [AddLeftCancelMonoid M] [Fintype M] (S : Set M) (hS1 : Set.Nonempty S) (hS2 : S + S = S) :

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

                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    Instances For
                                                      def submonoidOfIdempotent {M : Type u_6} [LeftCancelMonoid M] [Fintype M] (S : Set M) (hS1 : Set.Nonempty S) (hS2 : S * S = S) :

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

                                                      Equations
                                                      • One or more equations did not get rendered due to their size.
                                                      Instances For
                                                        theorem addSubgroupOfIdempotent.proof_2 {G : Type u_1} [AddGroup G] [Fintype G] (S : Set G) (hS1 : Set.Nonempty S) (hS2 : S + S = S) :
                                                        0 (addSubmonoidOfIdempotent S hS1 hS2).toAddSubsemigroup.carrier
                                                        theorem addSubgroupOfIdempotent.proof_3 {G : Type u_1} [AddGroup G] [Fintype G] (S : Set G) (hS1 : Set.Nonempty S) (hS2 : S + S = S) {a : G} (ha : a { toAddSubsemigroup := { carrier := S, add_mem' := (_ : ∀ {a b : G}, a (addSubmonoidOfIdempotent S hS1 hS2).toAddSubsemigroup.carrierb (addSubmonoidOfIdempotent S hS1 hS2).toAddSubsemigroup.carriera + b (addSubmonoidOfIdempotent S hS1 hS2).toAddSubsemigroup.carrier) }, zero_mem' := (_ : 0 (addSubmonoidOfIdempotent S hS1 hS2).toAddSubsemigroup.carrier) }.toAddSubsemigroup.carrier) :
                                                        def addSubgroupOfIdempotent {G : Type u_6} [AddGroup G] [Fintype G] (S : Set G) (hS1 : Set.Nonempty S) (hS2 : S + S = S) :

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

                                                        Equations
                                                        • One or more equations did not get rendered due to their size.
                                                        Instances For
                                                          theorem addSubgroupOfIdempotent.proof_1 {G : Type u_1} [AddGroup G] [Fintype G] (S : Set G) (hS1 : Set.Nonempty S) (hS2 : S + S = S) :
                                                          ∀ {a b : G}, a (addSubmonoidOfIdempotent S hS1 hS2).toAddSubsemigroup.carrierb (addSubmonoidOfIdempotent S hS1 hS2).toAddSubsemigroup.carriera + b (addSubmonoidOfIdempotent S hS1 hS2).toAddSubsemigroup.carrier
                                                          def subgroupOfIdempotent {G : Type u_6} [Group G] [Fintype G] (S : Set G) (hS1 : Set.Nonempty S) (hS2 : S * S = S) :

                                                          A nonempty idempotent subset of a finite group is a subgroup

                                                          Equations
                                                          • One or more equations did not get rendered due to their size.
                                                          Instances For
                                                            def smulCardAddSubgroup {G : Type u_6} [AddGroup G] [Fintype G] (S : Set G) (hS : Set.Nonempty S) :

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

                                                            Equations
                                                            • One or more equations did not get rendered due to their size.
                                                            Instances For
                                                              theorem smulCardAddSubgroup.proof_1 {G : Type u_1} [AddGroup G] [Fintype G] (S : Set G) (hS : Set.Nonempty S) :
                                                              @[simp]
                                                              theorem smulCardAddSubgroup_coe {G : Type u_6} [AddGroup G] [Fintype G] (S : Set G) (hS : Set.Nonempty S) :
                                                              @[simp]
                                                              theorem powCardSubgroup_coe {G : Type u_6} [Group G] [Fintype G] (S : Set G) (hS : Set.Nonempty S) :
                                                              def powCardSubgroup {G : Type u_6} [Group G] [Fintype G] (S : Set G) (hS : Set.Nonempty S) :

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

                                                              Equations
                                                              • One or more equations did not get rendered due to their size.
                                                              Instances For
                                                                theorem orderOf_abs_ne_one {G : Type u_1} [LinearOrderedRing G] {x : G} (h : |x| 1) :
                                                                theorem Prod.add_orderOf {α : Type u_4} {β : Type u_5} [AddMonoid α] [AddMonoid β] (x : α × β) :
                                                                theorem Prod.orderOf {α : Type u_4} {β : Type u_5} [Monoid α] [Monoid β] (x : α × β) :
                                                                orderOf x = Nat.lcm (orderOf x.fst) (orderOf x.snd)
                                                                theorem add_orderOf_fst_dvd_add_orderOf {α : Type u_4} {β : Type u_5} [AddMonoid α] [AddMonoid β] {x : α × β} :
                                                                theorem orderOf_fst_dvd_orderOf {α : Type u_4} {β : Type u_5} [Monoid α] [Monoid β] {x : α × β} :
                                                                theorem add_orderOf_snd_dvd_add_orderOf {α : Type u_4} {β : Type u_5} [AddMonoid α] [AddMonoid β] {x : α × β} :
                                                                theorem orderOf_snd_dvd_orderOf {α : Type u_4} {β : Type u_5} [Monoid α] [Monoid β] {x : α × β} :
                                                                theorem IsOfFinAddOrder.fst {α : Type u_4} {β : Type u_5} [AddMonoid α] [AddMonoid β] {x : α × β} (hx : IsOfFinAddOrder x) :
                                                                theorem IsOfFinOrder.fst {α : 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.snd {α : Type u_4} {β : Type u_5} [Monoid α] [Monoid β] {x : α × β} (hx : IsOfFinOrder x) :
                                                                theorem IsOfFinAddOrder.prod_mk {α : Type u_4} {β : Type u_5} [AddMonoid α] [AddMonoid β] {a : α} {b : β} :
                                                                theorem IsOfFinOrder.prod_mk {α : Type u_4} {β : Type u_5} [Monoid α] [Monoid β] {a : α} {b : β} :