|
| 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