Exponent of a group #
This file defines the exponent of a group, or more generally a monoid. For a group G
it is defined
to be the minimal n≥1
such that g ^ n = 1
for all g ∈ G
. For a finite group G
,
it is equal to the lowest common multiple of the order of all elements of the group G
.
Main definitions #
Monoid.ExponentExists
is a predicate on a monoidG
saying that there is some positiven
such thatg ^ n = 1
for allg ∈ G
.Monoid.exponent
defines the exponent of a monoidG
as the minimal positiven
such thatg ^ n = 1
for allg ∈ G
, by convention it is0
if no suchn
exists.AddMonoid.ExponentExists
the additive version ofMonoid.ExponentExists
.AddMonoid.exponent
the additive version ofMonoid.exponent
.
Main results #
Monoid.lcm_order_eq_exponent
: For a finite left cancel monoidG
, the exponent is equal to theFinset.lcm
of the order of its elements.Monoid.exponent_eq_iSup_orderOf(')
: For a commutative cancel monoid, the exponent is equal to⨆ g : G, orderOf g
(or zero if it has any order-zero elements).
TODO #
- Refactor the characteristic of a ring to be the exponent of its underlying additive group.
The exponent of an additive group is the smallest positive integer n
such that
n • g = 0
for all g ∈ G
if it exists, otherwise it is zero by convention.
Equations
- AddMonoid.exponent G = if h : AddMonoid.ExponentExists G then Nat.find h else 0
Instances For
The exponent of a group is the smallest positive integer n
such that g ^ n = 1
for all
g ∈ G
if it exists, otherwise it is zero by convention.
Equations
- Monoid.exponent G = if h : Monoid.ExponentExists G then Nat.find h else 0
Instances For
abbrev
AddMonoid.exponent_eq_zero_addOrder_zero.match_1
{G : Type u_1}
[AddMonoid G]
(motive : AddMonoid.ExponentExists G → Prop)
:
Equations
- AddMonoid.exponent_eq_zero_addOrder_zero.match_1 motive x h_1 = Exists.casesOn x fun w h => And.casesOn h fun left right => h_1 w left right
Instances For
theorem
AddMonoid.exponent_eq_zero_addOrder_zero
{G : Type u}
[AddMonoid G]
{g : G}
(hg : addOrderOf g = 0)
:
AddMonoid.exponent G = 0
theorem
Monoid.exponent_eq_zero_of_order_zero
{G : Type u}
[Monoid G]
{g : G}
(hg : orderOf g = 0)
:
Monoid.exponent G = 0
theorem
AddMonoid.exponent_nsmul_eq_zero
{G : Type u}
[AddMonoid G]
(g : G)
:
AddMonoid.exponent G • g = 0
theorem
AddMonoid.nsmul_eq_mod_exponent
{G : Type u}
[AddMonoid G]
{n : ℕ}
(g : G)
:
n • g = (n % AddMonoid.exponent G) • g
theorem
Monoid.pow_eq_mod_exponent
{G : Type u}
[Monoid G]
{n : ℕ}
(g : G)
:
g ^ n = g ^ (n % Monoid.exponent G)
theorem
Monoid.exponent_pos_of_exists
{G : Type u}
[Monoid G]
(n : ℕ)
(hpos : 0 < n)
(hG : ∀ (g : G), g ^ n = 1)
:
0 < Monoid.exponent G
theorem
AddMonoid.exponent_min'
{G : Type u}
[AddMonoid G]
(n : ℕ)
(hpos : 0 < n)
(hG : ∀ (g : G), n • g = 0)
:
AddMonoid.exponent G ≤ n
theorem
Monoid.exponent_min'
{G : Type u}
[Monoid G]
(n : ℕ)
(hpos : 0 < n)
(hG : ∀ (g : G), g ^ n = 1)
:
Monoid.exponent G ≤ n
theorem
AddMonoid.exponent_min
{G : Type u}
[AddMonoid G]
(m : ℕ)
(hpos : 0 < m)
(hm : m < AddMonoid.exponent G)
:
theorem
Monoid.exponent_min
{G : Type u}
[Monoid G]
(m : ℕ)
(hpos : 0 < m)
(hm : m < Monoid.exponent G)
:
@[simp]
theorem
AddMonoid.exp_eq_zero_of_subsingleton
{G : Type u}
[AddMonoid G]
[Subsingleton G]
:
AddMonoid.exponent G = 1
@[simp]
theorem
Monoid.exp_eq_one_of_subsingleton
{G : Type u}
[Monoid G]
[Subsingleton G]
:
Monoid.exponent G = 1
theorem
AddMonoid.exponent_dvd_of_forall_nsmul_eq_zero
(G : Type u_1)
[AddMonoid G]
(n : ℕ)
(hG : ∀ (g : G), n • g = 0)
:
AddMonoid.exponent G ∣ n
theorem
Monoid.exponent_dvd_of_forall_pow_eq_one
(G : Type u_1)
[Monoid G]
(n : ℕ)
(hG : ∀ (g : G), g ^ n = 1)
:
Monoid.exponent G ∣ n
theorem
AddMonoid.lcm_addOrderOf_dvd_exponent
(G : Type u)
[AddMonoid G]
[Fintype G]
:
Finset.lcm Finset.univ addOrderOf ∣ AddMonoid.exponent G
theorem
Monoid.lcm_orderOf_dvd_exponent
(G : Type u)
[Monoid G]
[Fintype G]
:
Finset.lcm Finset.univ orderOf ∣ Monoid.exponent G
theorem
Nat.Prime.exists_addOrderOf_eq_pow_padic_val_nat_add_exponent
(G : Type u)
[AddMonoid G]
{p : ℕ}
(hp : Nat.Prime p)
:
∃ g, addOrderOf g = p ^ ↑(Nat.factorization (AddMonoid.exponent G)) p
theorem
Nat.Prime.exists_orderOf_eq_pow_factorization_exponent
(G : Type u)
[Monoid G]
{p : ℕ}
(hp : Nat.Prime p)
:
∃ g, orderOf g = p ^ ↑(Nat.factorization (Monoid.exponent G)) p
theorem
AddMonoid.exponent_ne_zero_iff_range_addOrderOf_finite
{G : Type u}
[AddMonoid G]
(h : ∀ (g : G), 0 < addOrderOf g)
:
AddMonoid.exponent G ≠ 0 ↔ Set.Finite (Set.range addOrderOf)
theorem
Monoid.exponent_ne_zero_iff_range_orderOf_finite
{G : Type u}
[Monoid G]
(h : ∀ (g : G), 0 < orderOf g)
:
Monoid.exponent G ≠ 0 ↔ Set.Finite (Set.range orderOf)
theorem
AddMonoid.exponent_eq_zero_iff_range_addOrderOf_infinite
{G : Type u}
[AddMonoid G]
(h : ∀ (g : G), 0 < addOrderOf g)
:
AddMonoid.exponent G = 0 ↔ Set.Infinite (Set.range addOrderOf)
theorem
Monoid.exponent_eq_zero_iff_range_orderOf_infinite
{G : Type u}
[Monoid G]
(h : ∀ (g : G), 0 < orderOf g)
:
Monoid.exponent G = 0 ↔ Set.Infinite (Set.range orderOf)
theorem
AddMonoid.lcm_addOrder_eq_exponent
{G : Type u}
[AddMonoid G]
[Fintype G]
:
Finset.lcm Finset.univ addOrderOf = AddMonoid.exponent G
theorem
Monoid.lcm_order_eq_exponent
{G : Type u}
[Monoid G]
[Fintype G]
:
Finset.lcm Finset.univ orderOf = Monoid.exponent G
theorem
AddMonoid.exponent_ne_zero_of_finite
{G : Type u}
[AddLeftCancelMonoid G]
[Finite G]
:
AddMonoid.exponent G ≠ 0
theorem
Monoid.exponent_ne_zero_of_finite
{G : Type u}
[LeftCancelMonoid G]
[Finite G]
:
Monoid.exponent G ≠ 0
theorem
AddMonoid.exponent_eq_iSup_addOrderOf
{G : Type u}
[AddCommMonoid G]
(h : ∀ (g : G), 0 < addOrderOf g)
:
AddMonoid.exponent G = ⨆ (g : G), addOrderOf g
theorem
Monoid.exponent_eq_iSup_orderOf
{G : Type u}
[CommMonoid G]
(h : ∀ (g : G), 0 < orderOf g)
:
Monoid.exponent G = ⨆ (g : G), orderOf g
theorem
AddMonoid.exponent_eq_iSup_addOrderOf'
{G : Type u}
[AddCommMonoid G]
:
AddMonoid.exponent G = if ∃ g, addOrderOf g = 0 then 0 else ⨆ (g : G), addOrderOf g
theorem
Monoid.exponent_eq_iSup_orderOf'
{G : Type u}
[CommMonoid G]
:
Monoid.exponent G = if ∃ g, orderOf g = 0 then 0 else ⨆ (g : G), orderOf g
theorem
AddMonoid.exponent_eq_max'_addOrderOf
{G : Type u}
[AddCancelCommMonoid G]
[Fintype G]
:
AddMonoid.exponent G = Finset.max' (Finset.image addOrderOf Finset.univ) (_ : ∃ x, x ∈ Finset.image addOrderOf Finset.univ)
theorem
Monoid.exponent_eq_max'_orderOf
{G : Type u}
[CancelCommMonoid G]
[Fintype G]
:
Monoid.exponent G = Finset.max' (Finset.image orderOf Finset.univ) (_ : ∃ x, x ∈ Finset.image orderOf Finset.univ)
theorem
card_dvd_exponent_pow_rank
(G : Type u)
[CommGroup G]
[Group.FG G]
:
Nat.card G ∣ Monoid.exponent G ^ Group.rank G
theorem
card_dvd_exponent_nsmul_rank'
(G : Type u)
[AddCommGroup G]
[AddGroup.FG G]
{n : ℕ}
(hG : ∀ (g : G), n • g = 0)
:
Nat.card G ∣ n ^ AddGroup.rank G