@@ -301,3 +301,56 @@ theorem ker_transferSylow_disjoint (Q : Subgroup G) (hQ : IsPGroup p Q) :
301
301
end BurnsideTransfer
302
302
303
303
end MonoidHom
304
+
305
+ namespace IsCyclic
306
+
307
+ open Subgroup
308
+
309
+ -- we could supress the variable `p`, but that might introduce `motive not type correct` issues.
310
+ variable {G : Type *} [Group G] [Finite G] {p : ℕ} (hp : (Nat.card G).minFac = p) {P : Sylow p G}
311
+
312
+ include hp in
313
+ theorem normalizer_le_centralizer (hP : IsCyclic P) : P.normalizer ≤ centralizer (P : Set G) := by
314
+ subst hp
315
+ by_cases hn : Nat.card G = 1
316
+ · have := (Nat.card_eq_one_iff_unique.mp hn).1
317
+ rw [Subsingleton.elim P.normalizer (centralizer P)]
318
+ have := Fact.mk (Nat.minFac_prime hn)
319
+ have key := card_dvd_of_injective _ (QuotientGroup.kerLift_injective P.normalizerMonoidHom)
320
+ rw [normalizerMonoidHom_ker, ← index, ← relindex] at key
321
+ refine relindex_eq_one.mp (Nat.eq_one_of_dvd_coprimes ?_ dvd_rfl key)
322
+ obtain ⟨k, hk⟩ := P.2 .exists_card_eq
323
+ rcases eq_zero_or_pos k with h0 | h0
324
+ · rw [hP.card_mulAut, hk, h0, pow_zero, Nat.totient_one]
325
+ apply Nat.coprime_one_right
326
+ rw [hP.card_mulAut, hk, Nat.totient_prime_pow Fact.out h0]
327
+ refine (Nat.Coprime.pow_right _ ?_).mul_right ?_
328
+ · replace key : P.IsCommutative := by
329
+ let h := hP.commGroup
330
+ exact ⟨⟨CommGroup.mul_comm⟩⟩
331
+ apply Nat.Coprime.coprime_dvd_left (relindex_dvd_of_le_left P.normalizer P.le_centralizer)
332
+ apply Nat.Coprime.coprime_dvd_left (relindex_dvd_index_of_le P.le_normalizer)
333
+ rw [Nat.coprime_comm, Nat.Prime.coprime_iff_not_dvd Fact.out]
334
+ exact P.not_dvd_index
335
+ · apply Nat.Coprime.coprime_dvd_left (relindex_dvd_card (centralizer P) P.normalizer)
336
+ have h1 := Nat.gcd_dvd_left (Nat.card G) ((Nat.card G).minFac - 1 )
337
+ have h2 := Nat.gcd_le_right (m := Nat.card G) ((Nat.card G).minFac - 1 )
338
+ (tsub_pos_iff_lt.mpr (Nat.minFac_prime hn).one_lt)
339
+ contrapose! h2
340
+ refine Nat.sub_one_lt_of_le (Nat.card G).minFac_pos (Nat.minFac_le_of_dvd ?_ h1)
341
+ exact (Nat.two_le_iff _).mpr ⟨ne_zero_of_dvd_ne_zero Nat.card_pos.ne' h1, h2⟩
342
+
343
+ include hp in
344
+ /-- A cyclic Sylow subgroup for the smallest prime has a normal complement. -/
345
+ theorem isComplement' (hP : IsCyclic P) :
346
+ (MonoidHom.transferSylow P (hP.normalizer_le_centralizer hp)).ker.IsComplement' P := by
347
+ subst hp
348
+ by_cases hn : Nat.card G = 1
349
+ · have := (Nat.card_eq_one_iff_unique.mp hn).1
350
+ rw [Subsingleton.elim (MonoidHom.transferSylow P (hP.normalizer_le_centralizer rfl)).ker ⊥,
351
+ Subsingleton.elim P.1 ⊤]
352
+ exact isComplement'_bot_top
353
+ have := Fact.mk (Nat.minFac_prime hn)
354
+ exact MonoidHom.ker_transferSylow_isComplement' P (hP.normalizer_le_centralizer rfl)
355
+
356
+ end IsCyclic
0 commit comments