diff options
| author | Enrico Tassi | 2018-04-17 16:57:13 +0200 |
|---|---|---|
| committer | Enrico Tassi | 2018-04-17 16:57:13 +0200 |
| commit | eaa90cf9520e43d0b05fc6431a479e6b9559ef0e (patch) | |
| tree | 8499953a468a8d8be510dd0d60232cbd8984c1ec /mathcomp/odd_order/BGsection11.v | |
| parent | c1ec9cd8e7e50f73159613c492aad4c6c40bc3aa (diff) | |
move odd_order to its own repository
Diffstat (limited to 'mathcomp/odd_order/BGsection11.v')
| -rw-r--r-- | mathcomp/odd_order/BGsection11.v | 443 |
1 files changed, 0 insertions, 443 deletions
diff --git a/mathcomp/odd_order/BGsection11.v b/mathcomp/odd_order/BGsection11.v deleted file mode 100644 index ae376c3..0000000 --- a/mathcomp/odd_order/BGsection11.v +++ /dev/null @@ -1,443 +0,0 @@ -(* (c) Copyright 2006-2016 Microsoft Corporation and Inria. *) -(* Distributed under the terms of CeCILL-B. *) -Require Import mathcomp.ssreflect.ssreflect. -From mathcomp -Require Import ssrbool ssrfun eqtype ssrnat seq div path fintype. -From mathcomp -Require Import bigop finset prime fingroup morphism perm automorphism quotient. -From mathcomp -Require Import action gproduct gfunctor pgroup cyclic center commutator. -From mathcomp -Require Import gseries nilpotent sylow abelian maximal hall. -From mathcomp -Require Import BGsection1 BGsection3 BGsection4 BGsection5 BGsection6. -From mathcomp -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 _) //. - by rewrite (subsetP (gFnorm_trans _ _) g nPg) ?gFnorms. -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_eqP 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. - by rewrite quotient_normal // -defA !gFnormal_trans. -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 => //; apply: (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 => ->; apply: 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. -suffices nregQ: 'C_Q(A) != 1. - 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 sQ0Q: Q0 \subset Q by apply: gFsub. -have nQ0A: A \subset 'N(Q0) by apply: gFnorm_trans. -have ntQ0: Q0 != 1 by apply: contraNneq ntQ => /(trivg_center_pgroup qQ)->. -apply: contraNneq (sM'q) => regQ; apply/exists_inP; exists Q => //. -suffices nsQ0M: Q0 <| M by rewrite -(mmax_normal _ nsQ0M) ?gFnorms. -have sQ0M: Q0 \subset M := subset_trans sQ0Q (pHall_sub sylQ_M). -have qQ0: q.-group Q0 := pgroupS sQ0Q 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 defQ0: [~: A, Q0] = Q0. - rewrite -{2}[Q0](coprime_abelian_cent_dprod nQ0A) //. - by rewrite setIAC regQ setI1g dprodg1 commGC. - by rewrite (coprimeSg (subset_trans sQ0Q 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 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]. -Qed. - -End Section11. |
