@@ -6,6 +6,8 @@ Authors: Thomas Browning
66
77import data.finset.pointwise
88import group_theory.complement
9+ import group_theory.finiteness
10+ import group_theory.index
911import 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
2327open_locale pointwise
@@ -99,4 +103,47 @@ begin
99103 exact closure_mul_image_eq_top hR hR1 hS,
100104end
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+
102149end subgroup
0 commit comments