diff options
| author | Enrico Tassi | 2015-03-09 11:07:53 +0100 |
|---|---|---|
| committer | Enrico Tassi | 2015-03-09 11:24:38 +0100 |
| commit | fc84c27eac260dffd8f2fb1cb56d599f1e3486d9 (patch) | |
| tree | c16205f1637c80833a4c4598993c29fa0fd8c373 /mathcomp/odd_order/BGsection11.v | |
Initial commit
Diffstat (limited to 'mathcomp/odd_order/BGsection11.v')
| -rw-r--r-- | mathcomp/odd_order/BGsection11.v | 438 |
1 files changed, 438 insertions, 0 deletions
diff --git a/mathcomp/odd_order/BGsection11.v b/mathcomp/odd_order/BGsection11.v new file mode 100644 index 0000000..6fccf96 --- /dev/null +++ b/mathcomp/odd_order/BGsection11.v @@ -0,0 +1,438 @@ +(* (c) Copyright Microsoft Corporation and Inria. All rights reserved. *) +Require Import ssreflect ssrbool ssrfun eqtype ssrnat seq div path fintype. +Require Import bigop finset prime fingroup morphism perm automorphism quotient. +Require Import action gproduct gfunctor pgroup cyclic center commutator. +Require Import gseries nilpotent sylow abelian maximal hall. +Require Import BGsection1 BGsection3 BGsection4 BGsection5 BGsection6. +Require Import BGsection7 BGsection10. + +(******************************************************************************) +(* This file covers B & G, section 11; it has only one definition: *) +(* exceptional_FTmaximal p M A0 A <=> *) +(* p, M and A0 satisfy the conditions of Hypothesis 11.1 in B & G, i.e., *) +(* M is an "exceptional" maximal subgroup in the terminology of B & G. *) +(* In addition, A is elementary abelian p-subgroup of M of rank 2, that *) +(* contains A0. The existence of A is guaranteed by Lemma 10.5, but as *) +(* in the only two lemmas that make use of the results in this section *) +(* (Lemma 12.3 and Theorem 12.5) A is known, we elected to make the *) +(* dependency on A explicit. *) +(******************************************************************************) + +Set Implicit Arguments. +Unset Strict Implicit. +Unset Printing Implicit Defensive. + +Import GroupScope. + +Section Section11. + +Variable gT : minSimpleOddGroupType. +Local Notation G := (TheMinSimpleOddGroup gT). + +Implicit Types p q r : nat. +Implicit Types A E H K M N P Q R S T U V W X Y : {group gT}. + +Variables (p : nat) (M A0 A P : {group gT}). + +(* This definition corresponsd to Hypothesis 11.1, where the condition on A *) +(* has been made explicit. *) +Definition exceptional_FTmaximal := + [/\ p \in \sigma(M)^', A \in 'E_p^2(M), A0 \in 'E_p^1(A) & 'N(A0) \subset M]. + +Hypotheses (maxM : M \in 'M) (excM : exceptional_FTmaximal). +Hypotheses (sylP : p.-Sylow(M) P) (sAP : A \subset P). + +(* Splitting the excM hypothesis. *) +Let sM'p : p \in \sigma(M)^'. Proof. by case: excM. Qed. +Let Ep2A : A \in 'E_p^2(M). Proof. by case: excM. Qed. +Let Ep1A0 : A0 \in 'E_p^1(A). Proof. by case: excM. Qed. +Let sNA0_M : 'N(A0) \subset M. Proof. by case: excM. Qed. + +(* Arithmetics of p. *) +Let p_pr : prime p := pnElem_prime Ep2A. +Let p_gt1 : p > 1 := prime_gt1 p_pr. +Let p_gt0 : p > 0 := prime_gt0 p_pr. + +(* Group orders. *) +Let oA : #|A| = (p ^ 2)%N := card_pnElem Ep2A. +Let oA0 : #|A0| = p := card_pnElem Ep1A0. + +(* Structure of A. *) +Let abelA : p.-abelem A. Proof. by case/pnElemP: Ep2A. Qed. +Let pA : p.-group A := abelem_pgroup abelA. +Let cAA : abelian A := abelem_abelian abelA. + +(* Various set inclusions. *) +Let sA0A : A0 \subset A. Proof. by case/pnElemP: Ep1A0. Qed. +Let sPM : P \subset M := pHall_sub sylP. +Let sAM : A \subset M := subset_trans sAP sPM. +Let sCA0_M : 'C(A0) \subset M := subset_trans (cent_sub A0) sNA0_M. +Let sCA_M : 'C(A) \subset M := subset_trans (centS sA0A) sCA0_M. + +(* Alternative E_p^1 memberships for A0; the first is the one used to state *) +(* Hypothesis 11.1 in B & G, the second is the form expected by Lemma 10.5. *) +(* Note that #|A0| = p (oA0 above) would wokr just as well. *) +Let Ep1A0_M : A0 \in 'E_p^1(M) := subsetP (pnElemS p 1 sAM) A0 Ep1A0. +Let Ep1A0_G : A0 \in 'E_p^1(G) := subsetP (pnElemS p 1 (subsetT M)) A0 Ep1A0_M. + +(* This does not depend on exceptionalM, and could move to Section 10. *) +Lemma sigma'_Sylow_contra : p \in \sigma(M)^' -> ~~ ('N(P) \subset M). +Proof. by apply: contra => sNM; apply/exists_inP; exists P. Qed. + +(* First preliminary remark of Section 11; only depends on sM'p and sylP. *) +Let not_sNP_M: ~~ ('N(P) \subset M) := sigma'_Sylow_contra sM'p. + +(* Second preliminary remark of Section 11; only depends on sM'p, Ep1A0_M, *) +(* and sNA0_M. *) +Lemma p_rank_exceptional : 'r_p(M) = 2. +Proof. exact: sigma'_norm_mmax_rank2 (pgroupS sA0A pA) _. Qed. +Let rM := p_rank_exceptional. + +(* Third preliminary remark of Section 11. *) +Lemma exceptional_pmaxElem : A \in 'E*_p(G). +Proof. +have [_ _ dimA]:= pnElemP Ep2A. +apply/pmaxElemP; split=> [|E EpE sAE]; first by rewrite !inE subsetT. +have [//|ltAE]: A :=: E \/ A \proper E := eqVproper sAE. +have [_ abelE] := pElemP EpE; have [pE cEE _] := and3P abelE. +suffices: logn p #|E| <= 'r_p(M) by rewrite leqNgt rM -dimA properG_ltn_log. +by rewrite logn_le_p_rank // inE (subset_trans cEE) ?(subset_trans (centS sAE)). +Qed. +Let EpmA := exceptional_pmaxElem. + +(* This is B & G, Lemma 11.1. *) +Lemma exceptional_TIsigmaJ g q Q1 Q2 : + g \notin M -> A \subset M :^ g -> + q.-Sylow(M`_\sigma) Q1 -> A \subset 'N(Q1) -> + q.-Sylow(M`_\sigma :^ g) Q2 -> A \subset 'N(Q2) -> + (*a*) Q1 :&: Q2 = 1 + /\ (*b*) (forall X, X \in 'E_p^1(A) -> 'C_Q1(X) = 1 \/ 'C_Q2(X) = 1). +Proof. +move=> notMg sAMg sylQ1 nQ1A sylQ2 nQ2A. +have [-> | ntQ1] := eqsVneq Q1 1. + by split=> [|? _]; last left; apply: (setIidPl (sub1G _)). +have [sQ1Ms qQ1 _] := and3P sylQ1. +have{qQ1} [q_pr q_dv_Q1 _] := pgroup_pdiv qQ1 ntQ1. +have{sQ1Ms q_dv_Q1} sMq: q \in \sigma(M). + exact: pgroupP (pgroupS sQ1Ms (pcore_pgroup _ _)) q q_pr q_dv_Q1. +have{sylQ1} sylQ1: q.-Sylow(M) Q1. + by rewrite (subHall_Sylow (Msigma_Hall maxM)). +have sQ1M := pHall_sub sylQ1. +have{sylQ2} sylQ2g': q.-Sylow(M) (Q2 :^ g^-1). + by rewrite (subHall_Sylow (Msigma_Hall _)) // -(pHallJ2 _ _ _ g) actKV. +have sylQ2: q.-Sylow(G) Q2. + by rewrite -(pHallJ _ _ (in_setT g^-1)) (sigma_Sylow_G maxM). +suffices not_Q1_CA_Q2: gval Q2 \notin Q1 :^: 'O_\pi(A)^'('C(A)). + have ncA: normed_constrained A. + have ntA: A :!=: 1 by rewrite -cardG_gt1 oA (ltn_exp2l 0). + exact: plength_1_normed_constrained ntA EpmA (mFT_proper_plength1 _). + have q'A: q \notin \pi(A). + by apply: contraL sMq; move/(pnatPpi pA); move/eqnP->. + have maxnAq Q: q.-Sylow(G) Q -> A \subset 'N(Q) -> Q \in |/|*(A; q). + move=> sylQ; case/(max_normed_exists (pHall_pgroup sylQ)) => R maxR sQR. + have [qR _] := mem_max_normed maxR. + by rewrite -(group_inj (sub_pHall sylQ qR sQR (subsetT R))). + have maxQ1 := maxnAq Q1 (sigma_Sylow_G maxM sMq sylQ1) nQ1A. + have maxQ2 := maxnAq Q2 sylQ2 nQ2A. + have transCAQ := normed_constrained_meet_trans ncA q'A _ _ maxQ1 maxQ2. + split=> [|X EpX]. + apply: contraNeq not_Q1_CA_Q2 => ntQ12; apply/imsetP. + apply: transCAQ (sAM) (mmax_proper maxM) _ _. + by rewrite (setIidPl sQ1M). + by apply: contraNneq ntQ12 => tiQ2M; rewrite setIC -subG1 -tiQ2M setIS. + apply/pred2P; apply: contraR not_Q1_CA_Q2; case/norP=> ntCQ1 ntCQ2. + have [sXA _ oX] := pnElemPcard EpX. + apply/imsetP; apply: transCAQ (centSS _ sXA cAA) _ ntCQ1 ntCQ2 => //. + by rewrite mFT_cent_proper // -cardG_gt1 oX prime_gt1. +apply: contra notMg; case/imsetP=> k cAk defQ2. +have{cAk} Mk := subsetP sCA_M k (subsetP (pcore_sub _ _) k cAk). +have{k Mk defQ2} sQ2M: Q2 \subset M by rewrite defQ2 conj_subG. +have [sQ2g'M qQ2g' _] := and3P sylQ2g'. +by rewrite (sigma_Sylow_trans _ sylQ2g') // actKV. +Qed. + +(* This is B & G, Corollary 11.2. *) +Corollary exceptional_TI_MsigmaJ g : + g \notin M -> A \subset M :^ g -> + (*a*) M`_\sigma :&: M :^ g = 1 + /\ (*b*) M`_\sigma :&: 'C(A0 :^ g) = 1. +Proof. +move=> notMg sAMg; set Ms := M`_\sigma; set H := [group of Ms :&: M :^ g]. +have [H1 | ntH] := eqsVneq H 1. + by split=> //; apply/trivgP; rewrite -H1 setIS //= centJ conjSg. +pose q := pdiv #|H|. +suffices: #|H|`_q == 1%N by rewrite p_part_eq1 pi_pdiv cardG_gt1 ntH. +have nsMsM: Ms <| M := pcore_normal _ _; have [_ nMsM] := andP nsMsM. +have sHMs: H \subset Ms := subsetIl _ _. +have sHMsg: H \subset Ms :^ g. + rewrite -sub_conjgV (sub_Hall_pcore (Msigma_Hall _)) //. + by rewrite pgroupJ (pgroupS sHMs) ?pcore_pgroup. + by rewrite sub_conjgV subsetIr. +have nMsA := subset_trans sAM nMsM. +have nHA: A \subset 'N(H) by rewrite normsI // normsG. +have nMsgA: A \subset 'N(Ms :^ g) by rewrite normJ (subset_trans sAMg) ?conjSg. +have coMsA: coprime #|Ms| #|A|. + by rewrite oA coprime_expr ?(pnat_coprime (pcore_pgroup _ _)) ?pnatE. +have coHA: coprime #|H| #|A| := coprimeSg sHMs coMsA. +have coMsgA: coprime #|Ms :^ g| #|A| by rewrite cardJg. +have solA: solvable A := abelian_sol cAA. +have [Q0 sylQ0 nQ0A] := sol_coprime_Sylow_exists q solA nHA coHA. +have [sQ0H qQ0 _] := and3P sylQ0. +have supQ0 := sol_coprime_Sylow_subset _ _ solA (subset_trans sQ0H _) qQ0 nQ0A. +have [Q1 [sylQ1 nQ1A sQ01]] := supQ0 _ nMsA coMsA sHMs. +have [Q2 [sylQ2 nQ2A sQ02]] := supQ0 _ nMsgA coMsgA sHMsg. +have tiQ12: Q1 :&: Q2 = 1. + by have [-> _] := exceptional_TIsigmaJ notMg sAMg sylQ1 nQ1A sylQ2 nQ2A. +by rewrite -(card_Hall sylQ0) -trivg_card1 -subG1 -tiQ12 subsetI sQ01. +Qed. + +(* This is B & G, Theorem 11.3. *) +Theorem exceptional_sigma_nil : nilpotent M`_\sigma. +Proof. +have [g nPg notMg] := subsetPn not_sNP_M. +set Ms := M`_\sigma; set F := Ms <*> A0 :^ g. +have sA0gM: A0 :^ g \subset M. + by rewrite (subset_trans _ sPM) // -(normP nPg) conjSg (subset_trans sA0A). +have defF: Ms ><| A0 :^ g = F. + rewrite sdprodEY ?coprime_TIg //. + by rewrite (subset_trans sA0gM) ?gFnorm. + by rewrite cardJg oA0 (pnat_coprime (pcore_pgroup _ _)) ?pnatE. +have regA0g: 'C_Ms(A0 :^ g) = 1. + case/exceptional_TI_MsigmaJ: notMg => //. + by rewrite -sub_conjgV (subset_trans _ sPM) // sub_conjgV (normP _). +rewrite (prime_Frobenius_sol_kernel_nil defF) ?cardJg ?oA0 //. +by rewrite (solvableS _ (mmax_sol maxM)) // join_subG pcore_sub. +Qed. + +(* This is B & G, Corollary 11.4. *) +Corollary exceptional_sigma_uniq H : + H \in 'M(A) -> H`_\sigma :&: M `_\sigma != 1 -> H :=: M. +Proof. +rewrite setIC => /setIdP[maxH sAH] ntMsHs. +have [g _ defH]: exists2 g, g \in G & H :=: M :^ g. + apply/imsetP; apply: contraR ntMsHs => /sigma_disjoint[] // _ _. + by case/(_ exceptional_sigma_nil)=> ->. +rewrite defH conjGid //; apply: contraR ntMsHs => notMg. +have [|tiMsMg _] := exceptional_TI_MsigmaJ notMg; first by rewrite -defH. +by rewrite -subG1 -tiMsMg -defH setIS ?pcore_sub. +Qed. + +(* This is B & G, Theorem 11.5. *) +Theorem exceptional_Sylow_abelian P1 : p.-Sylow(M) P1 -> abelian P1. +Proof. +have nregA Q: gval Q != 1 -> A \subset 'N(Q) -> coprime #|Q| #|A| -> + exists2 X, X \in 'E_p^1(A) & 'C_Q(X) != 1. +- move=> ntQ nQA coQA; apply/exists_inP; apply: contraR ntQ. + rewrite negb_exists_in -subG1; move/forall_inP=> regA. + have ncycA: ~~ cyclic A by rewrite (abelem_cyclic abelA) oA pfactorK. + rewrite -(coprime_abelian_gen_cent1 _ _ nQA) // gen_subG. + apply/bigcupsP=> x /setD1P[ntx Ax]. + apply/negPn; rewrite /= -cent_cycle subG1 regA // p1ElemE // !inE. + by rewrite cycle_subG Ax /= -orderE (abelem_order_p abelA). +suffices{P1} cPP: abelian P. + by move=> sylP1; have [m _ ->] := Sylow_trans sylP sylP1; rewrite abelianJ. +have [g nPg notMg] := subsetPn not_sNP_M. +pose Ms := M`_\sigma; pose q := pdiv #|Ms|; have pP := pHall_pgroup sylP. +have nMsP: P \subset 'N(Ms) by rewrite (subset_trans sPM) ?gFnorm. +have coMsP: coprime #|Ms| #|P|. + exact: pnat_coprime (pcore_pgroup _ _) (pi_pnat pP sM'p). +have [Q1 sylQ1 nQ1P]:= sol_coprime_Sylow_exists q (pgroup_sol pP) nMsP coMsP. +have ntQ1: Q1 :!=: 1. + rewrite -cardG_gt1 (card_Hall sylQ1) p_part_gt1 pi_pdiv cardG_gt1. + by rewrite Msigma_neq1. +have nQ1A: A \subset 'N(Q1) := subset_trans sAP nQ1P. +have coQ1A: coprime #|Q1| #|A|. + by rewrite (coprimeSg (pHall_sub sylQ1)) // (coprimegS sAP). +have [X1 EpX1 nregX11] := nregA _ ntQ1 nQ1A coQ1A. +pose Q2 := Q1 :^ g; have sylQ2: q.-Sylow(Ms :^ g) Q2 by rewrite pHallJ2. +have{ntQ1} ntQ2: Q2 != 1 by rewrite -!cardG_gt1 cardJg in ntQ1 *. +have nQ2A: A \subset 'N(Q2) by rewrite (subset_trans sAP) ?norm_conj_norm. +have{coQ1A} coQ2A: coprime #|Q2| #|A| by rewrite cardJg. +have{nregA ntQ2 coQ2A} [X2 EpX2 nregX22] := nregA _ ntQ2 nQ2A coQ2A. +have [|_ regA]:= exceptional_TIsigmaJ notMg _ sylQ1 nQ1A sylQ2 nQ2A. + by rewrite (subset_trans sAP) // -(normP nPg) conjSg. +have regX21: 'C_Q1(X2) = 1 by case: (regA X2) nregX22 => // ->; rewrite eqxx. +have regX12: 'C_Q2(X1) = 1 by case: (regA X1) nregX11 => // ->; rewrite eqxx. +pose X := 'Ohm_1('Z(P))%G. +have eqCQ12_X: ('C_Q1(X) == 1) = ('C_Q2(X) == 1). + rewrite -(inj_eq (@conjsg_inj _ g)) conjs1g conjIg -/Q2 -centJ (normP _) //. + rewrite (subsetP (char_norm_trans (Ohm_char 1 _) _) g nPg) //. + by rewrite char_norms ?center_char. +have{EpX1} EpX1: X1 \in 'E_p^1(A) :\ X. + rewrite 2!inE EpX1 andbT; apply: contraNneq nregX11 => defX1. + by rewrite defX1 eqCQ12_X -defX1 regX12. +have{EpX2 eqCQ12_X} EpX2: X2 \in 'E_p^1(A) :\ X. + rewrite 2!inE EpX2 andbT; apply: contraNneq nregX22 => defX2. + by rewrite defX2 -eqCQ12_X -defX2 regX21. +apply: contraR nregX11 => not_cPP. +have{not_cPP} transNPA: [transitive 'N_P(A), on 'E_p^1(A) :\ X | 'JG]. + have [|_ _]:= basic_p2maxElem_structure _ pP sAP not_cPP; last by []. + by rewrite inE (subsetP (pnElemS p 2 (subsetT M))). +have [y PnAy ->] := atransP2 transNPA EpX2 EpX1; have [Py _] := setIP PnAy. +by rewrite centJ -(normsP nQ1P y Py) -conjIg regX21 conjs1g. +Qed. + +(* This is B & G, Corollary 11.6. *) +Corollary exceptional_structure (Ms := M`_\sigma) : + [/\ (*a*) A :=: 'Ohm_1(P), + (*b*) 'C_Ms(A) = 1 + & (*c*) exists2 A1, A1 \in 'E_p^1(A) & exists2 A2, A2 \in 'E_p^1(A) & + [/\ A1 :!=: A2, 'C_Ms(A1) = 1 & 'C_Ms(A2) = 1]]. +Proof. +pose iMNA := #|'N(A) : M|. +have defA: A :=: 'Ohm_1(P). + apply/eqP; rewrite eqEcard -{1}(Ohm1_id abelA) OhmS //= oA -rM. + rewrite -(p_rank_Sylow sylP) p_rank_abelian ?exceptional_Sylow_abelian //. + by rewrite -card_pgroup // (pgroupS _ (pHall_pgroup sylP)) ?Ohm_sub. +have iMNAgt1: iMNA > 1. + rewrite indexg_gt1 defA; apply: contra (subset_trans _) not_sNP_M. + by rewrite char_norms ?Ohm_char. +have iMNAgt2: iMNA > 2. + pose q := pdiv iMNA; have q_iMNA: q %| iMNA := pdiv_dvd iMNA. + rewrite (leq_trans _ (dvdn_leq (ltnW _) q_iMNA)) // ltn_neqAle eq_sym. + rewrite (sameP eqP (prime_oddPn _)) ?prime_gt1 ?pdiv_prime //. + by rewrite (dvdn_odd q_iMNA) // (dvdn_odd (dvdn_indexg _ _)) ?mFT_odd. +rewrite [iMNA](cardD1 (gval M)) orbit_refl !ltnS lt0n in iMNAgt1 iMNAgt2. +have{iMNAgt1} [Mg1 /= NM_Mg1] := pred0Pn iMNAgt1. +rewrite (cardD1 Mg1) inE /= NM_Mg1 ltnS lt0n in iMNAgt2. +have{iMNAgt2} [Mg2 /= NM_Mg2] := pred0Pn iMNAgt2. +case/andP: NM_Mg1 => neM_Mg1 /rcosetsP[g1 nAg1 defMg1]. +have{neM_Mg1} notMg1: g1 \notin M. + by apply: contra neM_Mg1 => M_g1; rewrite defMg1 rcoset_id. +case/and3P: NM_Mg2 => neMg12 neM_Mg2 /rcosetsP[g2 nAg2 defMg2]. +have{neM_Mg2} notMg2: g2 \notin M. + by apply: contra neM_Mg2 => M_g2; rewrite defMg2 rcoset_id. +pose A1 := (A0 :^ g1)%G; pose A2 := (A0 :^ g2)%G. +have EpA1: A1 \in 'E_p^1(A) by rewrite -(normP nAg1) pnElemJ. +have EpA2: A2 \in 'E_p^1(A) by rewrite -(normP nAg2) pnElemJ. +have{neMg12} neqA12: A1 :!=: A2. + rewrite -(canF_eq (conjsgKV g2)) -conjsgM (sameP eqP normP). + rewrite (contra (subsetP sNA0_M _)) // -mem_rcoset. + by apply: contra neMg12 => g1Mg2; rewrite defMg1 defMg2 (rcoset_transl g1Mg2). +have{notMg1 nAg1} regA1: 'C_Ms(A1) = 1. + by case/exceptional_TI_MsigmaJ: notMg1; rewrite // -(normP nAg1) conjSg. +have{notMg2 nAg2} regA2: 'C_Ms(A2) = 1. + by case/exceptional_TI_MsigmaJ: notMg2; rewrite // -(normP nAg2) conjSg. +split=> //; last by exists A1 => //; exists A2 => //. +by apply/trivgP; rewrite -regA1 setIS ?centS //; case/pnElemP: EpA1. +Qed. + +(* This is B & G, Theorem 11.7 (the main result on exceptional subgroups). *) +Theorem exceptional_mul_sigma_normal : M`_\sigma <*> A <| M. +Proof. +set Ms := M`_\sigma; have pP := pHall_pgroup sylP; have solM := mmax_sol maxM. +have [E hallE sPE] := Hall_superset solM sPM (pi_pnat pP sM'p). +have sAE := subset_trans sAP sPE; have [sEM s'E _] := and3P hallE. +have [_ _ dimA] := pnElemP Ep2A. +have rE: 'r(E) = 2. + apply/eqP; rewrite eqn_leq -{2}dimA -rank_abelem ?rankS // andbT leqNgt. + have [q q_pr ->]:= rank_witness E; apply/negP=> rqEgt2. + have piEq: q \in \pi(E) by rewrite -p_rank_gt0 -(subnKC rqEgt2). + case/negP: (pnatPpi s'E piEq); rewrite /= alpha_sub_sigma // !inE. + by rewrite (leq_trans rqEgt2) ?p_rankS. +have rFEle2: 'r('F(E)) <= 2 by rewrite -rE rankS ?Fitting_sub. +have solE := solvableS sEM solM; have oddE := mFT_odd E. +pose tau : nat_pred := [pred q | q > p]; pose K := 'O_tau(E). +have hallK: tau.-Hall(E) K by rewrite rank2_ge_pcore_Hall. +pose ptau : nat_pred := [pred q | q >= p]; pose KP := K <*> P. +have nKP: P \subset 'N(K) by rewrite (subset_trans sPE) ?gFnorm. +have coKP: coprime #|K| #|P|. + by rewrite (pnat_coprime (pcore_pgroup _ _)) ?(pi_pnat pP) //= !inE ltnn. +have hallKP: ptau.-Hall(E) KP. + rewrite pHallE join_subG pcore_sub sPE /= norm_joinEr ?coprime_cardMg //. + apply/eqP; rewrite -(partnC tau (part_gt0 _ _)) (card_Hall sylP). + rewrite (card_Hall hallK) partn_part => [|q]; last exact: leqW. + rewrite (card_Hall hallE) -!partnI; congr (_ * _)%N; apply: eq_partn => q. + by rewrite 4!inE andbC /= 8!inE -leqNgt -eqn_leq eq_sym; case: eqP => // <-. +have nsKP_E: KP <| E. + by rewrite [KP](eq_Hall_pcore _ hallKP) ?pcore_normal ?rank2_ge_pcore_Hall. +have [cKA | not_cKA]:= boolP (A \subset 'C(K)). + pose KA := K <*> A; have defKA: K \x A = KA. + by rewrite dprodEY // coprime_TIg // (coprimegS sAP). + have defA: 'Ohm_1(P) = A by case exceptional_structure. + have{defA} defA: 'Ohm_1('O_p(KP)) = A. + apply/eqP; rewrite -defA eqEsubset OhmS /=; last first. + rewrite pcore_sub_Hall ?(pHall_subl _ _ sylP) ?joing_subr //. + exact: subset_trans (pHall_sub hallKP) sEM. + rewrite -Ohm_id defA OhmS // pcore_max // /normal join_subG. + rewrite (subset_trans sAP) ?joing_subr // cents_norm 1?centsC //=. + by rewrite -defA gFnorm. + have nMsE: E \subset 'N(Ms) by rewrite (subset_trans sEM) ?gFnorm. + have tiMsE: Ms :&: E = 1. + by rewrite coprime_TIg ?(pnat_coprime (pcore_pgroup _ _)). + have <-: Ms * E = M. + apply/eqP; rewrite eqEcard mulG_subG pcore_sub sEM /= TI_cardMg //. + by rewrite (card_Hall hallE) (card_Hall (Msigma_Hall maxM)) ?partnC. + rewrite norm_joinEr -?quotientK ?(subset_trans sAE) //= cosetpre_normal. + rewrite quotient_normal // -defA (char_normal_trans (Ohm_char _ _)) //. + by rewrite (char_normal_trans (pcore_char p _)). +pose q := pdiv #|K : 'C_K(A)|. +have q_pr: prime q by rewrite pdiv_prime // indexg_gt1 subsetI subxx centsC. +have [nKA coKA] := (subset_trans sAP nKP, coprimegS sAP coKP). +have [Q sylQ nQA]: exists2 Q : {group gT}, q.-Sylow(K) Q & A \subset 'N(Q). + by apply: sol_coprime_Sylow_exists => //; exact: (pgroup_sol pA). +have [sQK qQ q'iQK] := and3P sylQ; have [sKE tauK _]:= and3P hallK. +have{q'iQK} not_cQA: ~~ (A \subset 'C(Q)). + apply: contraL q'iQK => cQA; rewrite p'natE // negbK. + rewrite -(Lagrange_index (subsetIl K 'C(A))) ?dvdn_mulr ?pdiv_dvd //. + by rewrite subsetI sQK centsC. +have ntQ: Q :!=: 1 by apply: contraNneq not_cQA => ->; exact: cents1. +have q_dv_K: q %| #|K| := dvdn_trans (pdiv_dvd _) (dvdn_indexg _ _). +have sM'q: q \in (\sigma(M))^' := pgroupP (pgroupS sKE s'E) q q_pr q_dv_K. +have{q_dv_K} tau_q: q \in tau := pgroupP tauK q q_pr q_dv_K. +have sylQ_E: q.-Sylow(E) Q := subHall_Sylow hallK tau_q sylQ. +have sylQ_M: q.-Sylow(M) Q := subHall_Sylow hallE sM'q sylQ_E. +have q'p: p != q by rewrite neq_ltn [p < q]tau_q. +have [regQ | nregQ] := eqVneq 'C_Q(A) 1; last first. + have ncycQ: ~~ cyclic Q. + apply: contra not_cQA => cycQ. + rewrite (coprime_odd_faithful_Ohm1 qQ) ?mFT_odd ?(coprimeSg sQK) //. + rewrite centsC; apply: contraR nregQ => not_sQ1_CA. + rewrite setIC TI_Ohm1 // setIC prime_TIg //. + by rewrite (Ohm1_cyclic_pgroup_prime cycQ qQ ntQ). + have {ncycQ} rQ: 'r_q(Q) = 2. + apply/eqP; rewrite eqn_leq ltnNge -odd_pgroup_rank1_cyclic ?mFT_odd //. + by rewrite -rE -rank_pgroup ?rankS // (pHall_sub sylQ_E). + have [B Eq2B]: exists B, B \in 'E_q^2(Q) by apply/p_rank_geP; rewrite rQ. + have maxB: B \in 'E*_q(G). + apply: subsetP (subsetP (pnElemS q 2 (pHall_sub sylQ_M)) B Eq2B). + by rewrite sigma'_rank2_max // -(p_rank_Sylow sylQ_M). + have CAq: q %| #|'C(A)|. + apply: dvdn_trans (cardSg (subsetIr Q _)). + by have [_ ? _] := pgroup_pdiv (pgroupS (subsetIl Q _) qQ) nregQ. + have [Qstar maxQstar sQ_Qstar] := max_normed_exists qQ nQA. + have [|Qm] := max_normed_2Elem_signaliser q'p _ maxQstar CAq. + by rewrite inE (subsetP (pnElemS p 2 (subsetT M))). + case=> _ sAQm [_ _ cQstarQm]; rewrite (centSS sAQm sQ_Qstar) // in not_cQA. + apply: cQstarQm; apply/implyP=> _; apply/set0Pn; exists B. + have{Eq2B} Eq2B := subsetP (pnElemS q 2 sQ_Qstar) B Eq2B. + rewrite inE Eq2B (subsetP (pmaxElemS q (subsetT _))) // inE maxB inE. + by have [? _ _] := pnElemP Eq2B. +pose Q0 := 'Z(Q); have charQ0: Q0 \char Q := center_char Q. +have nQ0A: A \subset 'N(Q0) := char_norm_trans charQ0 nQA. +have defQ0: [~: A, Q0] = Q0. + rewrite -{2}[Q0](coprime_abelian_cent_dprod nQ0A) ?center_abelian //. + by rewrite setIAC regQ (setIidPl (sub1G _)) dprodg1 commGC. + by rewrite (coprimeSg (subset_trans (center_sub Q) sQK)). +have [_ _ [A1 EpA1 [A2 EpA2 [neqA12 regA1 regA2]]]] := exceptional_structure. +have defA: A1 \x A2 = A by apply/(p2Elem_dprodP Ep2A EpA1 EpA2). +have{defQ0} defQ0: [~: A1, Q0] * [~: A2, Q0] = Q0. + have{defA} [[_ defA cA12 _] [sA2A _ _]] := (dprodP defA, pnElemP EpA2). + by rewrite -commMG ?defA // normsR ?(cents_norm cA12) // (subset_trans sA2A). +have nsQ0M: Q0 <| M. + have sQ0M: Q0 \subset M := subset_trans (center_sub Q) (pHall_sub sylQ_M). + have qQ0: q.-group Q0 := pgroupS (center_sub Q) qQ. + have p'Q0: p^'.-group Q0 by apply: (pi_pnat qQ0); rewrite eq_sym in q'p. + have sM'Q0: \sigma(M)^'.-group Q0 := pi_pnat qQ0 sM'q. + have cQ0Q0: abelian Q0 := center_abelian Q. + have sA_NQ0: A \subset 'N_M(Q0) by rewrite subsetI sAM. + have sEpA_EpN := subsetP (pnElemS p 1 sA_NQ0). + have nsRQ0 := commG_sigma'_1Elem_cyclic maxM sQ0M sM'Q0 sM'p (sEpA_EpN _ _). + rewrite -defQ0 -!(commGC Q0). + by apply: normalM; [case/nsRQ0: EpA1 | case/nsRQ0: EpA2]. +case/exists_inP: sM'q; exists Q => //. +rewrite (subset_trans (char_norms charQ0)) ?(mmax_normal maxM nsQ0M) //= -/Q0. +by apply: contraNneq ntQ; move/(trivg_center_pgroup qQ)->. +Qed. + +End Section11. |
