Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 05d8188

Browse files
committed
feat(group_theory/torsion): define torsion groups (#11850)
I grepped for torsion group and didn't find anything -- hopefully adding this makes sense here.
1 parent 3cc9ac4 commit 05d8188

File tree

3 files changed

+101
-2
lines changed

3 files changed

+101
-2
lines changed

src/group_theory/exponent.lean

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,18 @@ if h : exponent_exists G then nat.find h else 0
6464
variable {G}
6565

6666
@[to_additive]
67-
lemma exponent_eq_zero_iff : exponent G = 0 ↔ ¬ exponent_exists G :=
67+
lemma exponent_exists_iff_ne_zero : exponent_exists G ↔ exponent G ≠ 0 :=
6868
begin
6969
rw [exponent],
7070
split_ifs,
7171
{ simp [h, @not_lt_zero' ℕ] }, --if this isn't done this way, `to_additive` freaks
72-
{ tauto }
72+
{ tauto },
7373
end
7474

75+
@[to_additive]
76+
lemma exponent_eq_zero_iff : exponent G = 0 ↔ ¬ exponent_exists G :=
77+
by simp only [exponent_exists_iff_ne_zero, not_not]
78+
7579
@[to_additive]
7680
lemma exponent_eq_zero_of_order_zero {g : G} (hg : order_of g = 0) : exponent G = 0 :=
7781
exponent_eq_zero_iff.mpr $ λ ⟨n, hn, hgn⟩, order_of_eq_zero_iff'.mp hg n hn $ hgn g

src/group_theory/order_of_element.lean

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import algebra.iterate_hom
88
import algebra.pointwise
99
import dynamics.periodic_pts
1010
import group_theory.coset
11+
import group_theory.quotient_group
1112

1213
/-!
1314
# Order of an element
@@ -68,6 +69,23 @@ lemma is_of_fin_order_iff_pow_eq_one (x : G) :
6869
is_of_fin_order x ↔ ∃ n, 0 < n ∧ x ^ n = 1 :=
6970
by { convert iff.rfl, simp [is_periodic_pt_mul_iff_pow_eq_one] }
7071

72+
/-- Elements of finite order are of finite order in subgroups.-/
73+
@[to_additive is_of_fin_add_order_iff_coe]
74+
lemma is_of_fin_order_iff_coe {G : Type u} [group G] (H : subgroup G) (x : H) :
75+
is_of_fin_order x ↔ is_of_fin_order (x : G) :=
76+
by { rw [is_of_fin_order_iff_pow_eq_one, is_of_fin_order_iff_pow_eq_one], norm_cast }
77+
78+
variables
79+
80+
/-- Elements of finite order are of finite order in quotient groups.-/
81+
@[to_additive is_of_fin_add_order_iff_quotient]
82+
lemma is_of_fin_order.quotient {G : Type u} [group G] (N : subgroup G) [N.normal] (x : G) :
83+
is_of_fin_order x → is_of_fin_order (x : G ⧸ N) := begin
84+
rw [is_of_fin_order_iff_pow_eq_one, is_of_fin_order_iff_pow_eq_one],
85+
rintros ⟨n, ⟨npos, hn⟩⟩,
86+
exact ⟨n, ⟨npos, (quotient_group.con N).eq.mpr $ hn ▸ (quotient_group.con N).eq.mp rfl⟩⟩,
87+
end
88+
7189
end is_of_fin_order
7290

7391
/-- `order_of x` is the order of the element `x`, i.e. the `n ≥ 1`, s.t. `x ^ n = 1` if it exists.

src/group_theory/torsion.lean

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
/-
2+
Copyright (c) 2022 Julian Berman. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Julian Berman
5+
-/
6+
7+
import group_theory.exponent
8+
import group_theory.order_of_element
9+
import group_theory.quotient_group
10+
11+
/-!
12+
# Torsion groups
13+
14+
This file defines torsion groups, i.e. groups where all elements have finite order.
15+
16+
## Main definitions
17+
18+
* `monoid.is_torsion` is a predicate asserting a monoid `G` is a torsion monoid, i.e. that all
19+
elements are of finite order. Torsion groups are also known as periodic groups.
20+
* `add_monoid.is_torsion` the additive version of `monoid.is_torsion`.
21+
22+
## Future work
23+
24+
* Define `tor G` for the torsion subgroup of a group
25+
* torsion-free groups
26+
-/
27+
28+
universe u
29+
30+
variable {G : Type u}
31+
32+
open_locale classical
33+
34+
namespace monoid
35+
36+
variables (G) [monoid G]
37+
38+
/--A predicate on a monoid saying that all elements are of finite order.-/
39+
@[to_additive "A predicate on an additive monoid saying that all elements are of finite order."]
40+
def is_torsion := ∀ g : G, is_of_fin_order g
41+
42+
end monoid
43+
44+
open monoid
45+
46+
variables [group G] {N : subgroup G}
47+
48+
/--Subgroups of torsion groups are torsion groups. -/
49+
@[to_additive "Subgroups of additive torsion groups are additive torsion groups."]
50+
lemma is_torsion.subgroup (tG : is_torsion G) (H : subgroup G) : is_torsion H :=
51+
λ h, (is_of_fin_order_iff_coe _ h).mpr $ tG h
52+
53+
/--Quotient groups of torsion groups are torsion groups. -/
54+
@[to_additive "Quotient groups of additive torsion groups are additive torsion groups."]
55+
lemma is_torsion.quotient_group [nN : N.normal] (tG : is_torsion G) : is_torsion (G ⧸ N) :=
56+
λ h, quotient_group.induction_on' h $ λ g, (tG g).quotient N g
57+
58+
/--If a group exponent exists, the group is torsion. -/
59+
@[to_additive exponent_exists.is_add_torsion]
60+
lemma exponent_exists.is_torsion (h : exponent_exists G) : is_torsion G := begin
61+
obtain ⟨n, npos, hn⟩ := h,
62+
intro g,
63+
exact (is_of_fin_order_iff_pow_eq_one g).mpr ⟨n, npos, hn g⟩,
64+
end
65+
66+
/--The group exponent exists for any bounded torsion group. -/
67+
@[to_additive is_add_torsion.exponent_exists]
68+
lemma is_torsion.exponent_exists
69+
(tG : is_torsion G) (bounded : (set.range (λ g : G, order_of g)).finite) :
70+
exponent_exists G :=
71+
exponent_exists_iff_ne_zero.mpr $
72+
(exponent_ne_zero_iff_range_order_of_finite (λ g, order_of_pos' (tG g))).mpr bounded
73+
74+
/--Finite groups are torsion groups.-/
75+
@[to_additive is_add_torsion_of_fintype]
76+
lemma is_torsion_of_fintype [fintype G] : is_torsion G :=
77+
exponent_exists.is_torsion $ exponent_exists_iff_ne_zero.mpr exponent_ne_zero_of_fintype

0 commit comments

Comments
 (0)