@@ -248,31 +248,29 @@ def fixed_points_mul_left_cosets_equiv_quotient (H : subgroup G) [fintype (H : s
248
248
(λ a, (@mem_fixed_points_mul_left_cosets_iff_mem_normalizer _ _ _ _inst_2 _).symm)
249
249
(by intros; refl)
250
250
251
- /-- The first of the **Sylow theorems** -/
252
- theorem exists_subgroup_card_pow_prime [fintype G] (p : ℕ) : ∀ {n : ℕ} [hp : fact p.prime]
253
- (hdvd : p ^ n ∣ card G), ∃ H : subgroup G, fintype.card H = p ^ n
254
- | 0 := λ _ _, ⟨(⊥ : subgroup G), by convert card_bot⟩
255
- | (n+1 ) := λ hp hdvd,
256
- let ⟨H, hH2⟩ := @exists_subgroup_card_pow_prime _ hp
257
- (dvd.trans (pow_dvd_pow _ (nat.le_succ _)) hdvd) in
251
+ /-- If `H` is a subgroup of `G` of cardinality `p ^ n`,
252
+ then `H` is contained in a subgroup of cardinality `p ^ (n + 1)`
253
+ if `p ^ (n + 1)` divides the cardinality of `G` -/
254
+ theorem exists_subgroup_card_pow_succ [fintype G] {p : ℕ} {n : ℕ} [hp : fact p.prime]
255
+ (hdvd : p ^ (n + 1 ) ∣ card G) {H : subgroup G} (hH : fintype.card H = p ^ n) :
256
+ ∃ K : subgroup G, fintype.card K = p ^ (n + 1 ) ∧ H ≤ K :=
258
257
let ⟨s, hs⟩ := exists_eq_mul_left_of_dvd hdvd in
259
258
have hcard : card (quotient H) = s * p :=
260
259
(nat.mul_left_inj (show card H > 0 , from fintype.card_pos_iff.2
261
260
⟨⟨1 , H.one_mem⟩⟩)).1
262
- (by rwa [← card_eq_card_quotient_mul_card_subgroup H, hH2 , hs,
261
+ (by rwa [← card_eq_card_quotient_mul_card_subgroup H, hH , hs,
263
262
pow_succ', mul_assoc, mul_comm p]),
264
263
have hm : s * p % p =
265
264
card (quotient (subgroup.comap ((normalizer H).subtype : normalizer H →* G) H)) % p :=
266
265
card_congr (fixed_points_mul_left_cosets_equiv_quotient H) ▸ hcard ▸
267
- @card_modeq_card_fixed_points _ _ _ _ _ _ _ p _ hp hH2 ,
266
+ @card_modeq_card_fixed_points _ _ _ _ _ _ _ p _ hp hH ,
268
267
have hm' : p ∣ card (quotient (subgroup.comap ((normalizer H).subtype : normalizer H →* G) H)) :=
269
268
nat.dvd_of_mod_eq_zero
270
269
(by rwa [nat.mod_eq_zero_of_dvd (dvd_mul_left _ _), eq_comm] at hm),
271
270
let ⟨x, hx⟩ := @exists_prime_order_of_dvd_card _ (quotient_group.quotient.group _) _ _ hp hm' in
272
271
have hequiv : H ≃ (subgroup.comap ((normalizer H).subtype : normalizer H →* G) H) :=
273
272
⟨λ a, ⟨⟨a.1 , le_normalizer a.2 ⟩, a.2 ⟩, λ a, ⟨a.1 .1 , a.2 ⟩,
274
273
λ ⟨_, _⟩, rfl, λ ⟨⟨_, _⟩, _⟩, rfl⟩,
275
- -- begin proof of ∃ H : subgroup G, fintype.card H = p ^ n
276
274
⟨subgroup.map ((normalizer H).subtype) (subgroup.comap
277
275
(quotient_group.mk' (comap H.normalizer.subtype H)) (gpowers x)),
278
276
begin
@@ -284,9 +282,42 @@ begin
284
282
rw [set.card_image_of_injective
285
283
(subgroup.comap (mk' (comap H.normalizer.subtype H)) (gpowers x) : set (H.normalizer))
286
284
subtype.val_injective,
287
- pow_succ', ← hH2 , fintype.card_congr hequiv, ← hx, order_eq_card_gpowers,
285
+ pow_succ', ← hH , fintype.card_congr hequiv, ← hx, order_eq_card_gpowers,
288
286
← fintype.card_prod],
289
287
exact @fintype.card_congr _ _ (id _) (id _) (preimage_mk_equiv_subgroup_times_set _ _)
288
+ end ,
289
+ begin
290
+ assume y hy,
291
+ simp only [exists_prop, subgroup.coe_subtype, mk'_apply, subgroup.mem_map, subgroup.mem_comap],
292
+ refine ⟨⟨y, le_normalizer hy⟩, ⟨0 , _⟩, rfl⟩,
293
+ rw [gpow_zero, eq_comm, quotient_group.eq_one_iff],
294
+ simpa using hy
290
295
end ⟩
291
296
297
+ /-- If `H` is a subgroup of `G` of cardinality `p ^ n`,
298
+ then `H` is contained in a subgroup of cardinality `p ^ m`
299
+ if `n ≤ m` and `p ^ m` divides the cardinality of `G` -/
300
+ theorem exists_subgroup_card_pow_prime_le [fintype G] (p : ℕ) : ∀ {n m : ℕ} [hp : fact p.prime]
301
+ (hdvd : p ^ m ∣ card G) (H : subgroup G) (hH : card H = p ^ n) (hnm : n ≤ m),
302
+ ∃ K : subgroup G, card K = p ^ m ∧ H ≤ K
303
+ | n m := λ hp hdvd H hH hnm,
304
+ (lt_or_eq_of_le hnm).elim
305
+ (λ hnm : n < m,
306
+ have h0m : 0 < m, from (lt_of_le_of_lt n.zero_le hnm),
307
+ have wf : m - 1 < m, from nat.sub_lt h0m zero_lt_one,
308
+ have hnm1 : n ≤ m - 1 , from nat.le_sub_right_of_add_le hnm,
309
+ let ⟨K, hK⟩ := @exists_subgroup_card_pow_prime_le n (m - 1 ) hp
310
+ (nat.pow_dvd_of_le_of_pow_dvd (nat.sub_le_self _ _) hdvd) H hH hnm1 in
311
+ have hdvd' : p ^ ((m - 1 ) + 1 ) ∣ card G, by rwa [nat.sub_add_cancel h0m],
312
+ let ⟨K', hK'⟩ := @exists_subgroup_card_pow_succ _ _ _ _ _ hp hdvd' K hK.1 in
313
+ ⟨K', by rw [hK'.1 , nat.sub_add_cancel h0m], le_trans hK.2 hK'.2 ⟩)
314
+ (λ hnm : n = m, ⟨H, by simp [hH, hnm]⟩)
315
+
316
+ /-- A generalisation of **Sylow's first theorem** . If `p ^ n` divides
317
+ the cardinality of `G`, then there is a subgroup of cardinality `p ^ n` -/
318
+ theorem exists_subgroup_card_pow_prime [fintype G] (p : ℕ) {n : ℕ} [fact p.prime]
319
+ (hdvd : p ^ n ∣ card G) : ∃ K : subgroup G, fintype.card K = p ^ n :=
320
+ let ⟨K, hK⟩ := exists_subgroup_card_pow_prime_le p hdvd ⊥ (by simp) n.zero_le in
321
+ ⟨K, hK.1 ⟩
322
+
292
323
end sylow
0 commit comments