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

Commit 7bfaa5c

Browse files
committed
feat(group_theory/schreier): Schreier's lemma in terms of group.fg and group.rank (#13361)
This PR adds statements of Schreier's lemma in terms of `group.fg` and `group.rank`.
1 parent b0805a5 commit 7bfaa5c

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

src/group_theory/schreier.lean

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ Authors: Thomas Browning
66

77
import data.finset.pointwise
88
import group_theory.complement
9+
import group_theory.finiteness
10+
import group_theory.index
911
import tactic.group
1012

1113
/-!
@@ -18,6 +20,8 @@ In this file we prove Schreier's lemma.
1820
- `closure_mul_image_eq` : **Schreier's Lemma**: If `R : set G` is a right_transversal
1921
of `H : subgroup G` with `1 ∈ R`, and if `G` is generated by `S : set G`,
2022
then `H` is generated by the `set` `(R * S).image (λ g, g * (to_fun hR g)⁻¹)`.
23+
- `fg_of_index_ne_zero` : **Schreier's Lemma**: A finite index subgroup of a finitely generated
24+
group is finitely generated.
2125
-/
2226

2327
open_locale pointwise
@@ -99,4 +103,47 @@ begin
99103
exact closure_mul_image_eq_top hR hR1 hS,
100104
end
101105

106+
lemma exists_finset_card_le_mul (hH : H.index ≠ 0) {S : finset G} (hS : closure (S : set G) = ⊤) :
107+
∃ T : finset H, T.card ≤ H.index * S.card ∧ closure (T : set H) = ⊤ :=
108+
begin
109+
haveI : decidable_eq G := classical.dec_eq G,
110+
obtain ⟨R₀, hR : R₀ ∈ right_transversals (H : set G), hR1⟩ := exists_right_transversal (1 : G),
111+
haveI : fintype (G ⧸ H) := fintype_of_index_ne_zero hH,
112+
haveI : fintype R₀ := fintype.of_equiv _ (mem_right_transversals.to_equiv hR),
113+
let R : finset G := set.to_finset R₀,
114+
replace hR : (R : set G) ∈ right_transversals (H : set G) := by rwa set.coe_to_finset,
115+
replace hR1 : (1 : G) ∈ R := by rwa set.mem_to_finset,
116+
refine ⟨_, _, closure_mul_image_eq_top' hR hR1 hS⟩,
117+
calc _ ≤ (R * S).card : finset.card_image_le
118+
... ≤ (R.product S).card : finset.card_image_le
119+
... = R.card * S.card : R.card_product S
120+
... = H.index * S.card : congr_arg (* S.card) _,
121+
calc R.card = fintype.card R : (fintype.card_coe R).symm
122+
... = _ : (fintype.card_congr (mem_right_transversals.to_equiv hR)).symm
123+
... = fintype.card (G ⧸ H) : quotient_group.card_quotient_right_rel H
124+
... = H.index : H.index_eq_card.symm,
125+
end
126+
127+
/-- **Schreier's Lemma**: A finite index subgroup of a finitely generated
128+
group is finitely generated. -/
129+
lemma fg_of_index_ne_zero [hG : group.fg G] (hH : H.index ≠ 0) : group.fg H :=
130+
begin
131+
obtain ⟨S, hS⟩ := hG.1,
132+
obtain ⟨T, -, hT⟩ := exists_finset_card_le_mul hH hS,
133+
exact ⟨⟨T, hT⟩⟩,
134+
end
135+
136+
lemma rank_le_index_mul_rank [hG : group.fg G] {H : subgroup G} (hH : H.index ≠ 0)
137+
[decidable_pred (λ n, ∃ (S : finset G), S.card = n ∧ subgroup.closure (S : set G) = ⊤)]
138+
[decidable_pred (λ n, ∃ (S : finset H), S.card = n ∧ subgroup.closure (S : set H) = ⊤)] :
139+
@group.rank H _ (fg_of_index_ne_zero hH) _ ≤ H.index * group.rank G :=
140+
begin
141+
haveI := fg_of_index_ne_zero hH,
142+
obtain ⟨S, hS₀, hS⟩ := group.rank_spec G,
143+
obtain ⟨T, hT₀, hT⟩ := exists_finset_card_le_mul hH hS,
144+
calc group.rank H ≤ T.card : group.rank_le H hT
145+
... ≤ H.index * S.card : hT₀
146+
... = H.index * group.rank G : congr_arg ((*) H.index) hS₀,
147+
end
148+
102149
end subgroup

0 commit comments

Comments
 (0)