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

Commit adeda57

Browse files
committed
feat(group_theory/finite_abelian): a finitely generated torsion abelian group is finite (#15402)
1 parent 71d0115 commit adeda57

File tree

1 file changed

+41
-6
lines changed

1 file changed

+41
-6
lines changed

src/group_theory/finite_abelian.lean

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ Copyright (c) 2022 Pierre-Alexandre Bazin. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Pierre-Alexandre Bazin
55
-/
6-
import data.zmod.quotient
76
import algebra.module.pid
7+
import data.zmod.quotient
88

99
/-!
1010
# Structure of finite(ly generated) abelian groups
@@ -17,15 +17,39 @@ import algebra.module.pid
1717
1818
-/
1919

20-
2120
open_locale direct_sum
2221

22+
universe u
23+
24+
namespace module
25+
26+
variables (M : Type u)
27+
28+
lemma finite_of_fg_torsion [add_comm_group M] [module ℤ M] [module.finite ℤ M]
29+
(hM : module.is_torsion ℤ M) : _root_.finite M :=
30+
begin
31+
rcases module.equiv_direct_sum_of_is_torsion hM with ⟨ι, _, p, h, e, ⟨l⟩⟩,
32+
haveI : ∀ i : ι, fact $ 0 < (p i ^ e i).nat_abs :=
33+
λ i, fact.mk $ int.nat_abs_pos_of_ne_zero $ pow_ne_zero (e i) (h i).ne_zero,
34+
haveI : ∀ i : ι, _root_.finite $ ℤ ⧸ submodule.span ℤ {p i ^ e i} :=
35+
λ i, finite.of_equiv _ (p i ^ e i).quotient_span_equiv_zmod.symm.to_equiv,
36+
haveI : _root_.finite ⨁ i, ℤ ⧸ (submodule.span ℤ {p i ^ e i} : submodule ℤ ℤ) :=
37+
finite.of_equiv _ dfinsupp.equiv_fun_on_fintype.symm,
38+
exact finite.of_equiv _ l.symm.to_equiv
39+
end
40+
41+
end module
42+
43+
variables (G : Type u)
44+
2345
namespace add_comm_group
2446

47+
variable [add_comm_group G]
48+
2549
/-- **Structure theorem of finitely generated abelian groups** : Any finitely generated abelian
2650
group is the product of a power of `ℤ` and a direct sum of some `zmod (p i ^ e i)` for some
27-
prime powers `p i ^ e i`.-/
28-
theorem equiv_free_prod_direct_sum_zmod (G : Type*) [add_comm_group G] [hG : add_group.fg G] :
51+
prime powers `p i ^ e i`. -/
52+
theorem equiv_free_prod_direct_sum_zmod [hG : add_group.fg G] :
2953
∃ (n : ℕ) (ι : Type) [fintype ι] (p : ι → ℕ) [∀ i, nat.prime $ p i] (e : ι → ℕ),
3054
nonempty $ G ≃+ (fin n →₀ ℤ) × ⨁ (i : ι), zmod (p i ^ e i) :=
3155
begin
@@ -39,8 +63,8 @@ begin
3963
end
4064

4165
/-- **Structure theorem of finite abelian groups** : Any finite abelian group is a direct sum of
42-
some `zmod (p i ^ e i)` for some prime powers `p i ^ e i`.-/
43-
theorem equiv_direct_sum_zmod_of_fintype (G : Type*) [add_comm_group G] [fintype G] :
66+
some `zmod (p i ^ e i)` for some prime powers `p i ^ e i`. -/
67+
theorem equiv_direct_sum_zmod_of_fintype [fintype G] :
4468
∃ (ι : Type) [fintype ι] (p : ι → ℕ) [∀ i, nat.prime $ p i] (e : ι → ℕ),
4569
nonempty $ G ≃+ ⨁ (i : ι), zmod (p i ^ e i) :=
4670
begin
@@ -52,4 +76,15 @@ begin
5276
λ a, ⟨finsupp.single 0 a, finsupp.single_eq_same⟩).false.elim }
5377
end
5478

79+
lemma finite_of_fg_torsion [hG' : add_group.fg G] (hG : add_monoid.is_torsion G) : finite G :=
80+
@module.finite_of_fg_torsion _ _ _ (module.finite.iff_add_group_fg.mpr hG') $
81+
add_monoid.is_torsion_iff_is_torsion_int.mp hG
82+
5583
end add_comm_group
84+
85+
namespace comm_group
86+
87+
lemma finite_of_fg_torsion [comm_group G] [group.fg G] (hG : monoid.is_torsion G) : finite G :=
88+
@finite.of_equiv _ _ (add_comm_group.finite_of_fg_torsion (additive G) hG) multiplicative.of_add
89+
90+
end comm_group

0 commit comments

Comments
 (0)