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/BGsection13.v | |
| parent | c1ec9cd8e7e50f73159613c492aad4c6c40bc3aa (diff) | |
move odd_order to its own repository
Diffstat (limited to 'mathcomp/odd_order/BGsection13.v')
| -rw-r--r-- | mathcomp/odd_order/BGsection13.v | 1123 |
1 files changed, 0 insertions, 1123 deletions
diff --git a/mathcomp/odd_order/BGsection13.v b/mathcomp/odd_order/BGsection13.v deleted file mode 100644 index de9ddaf..0000000 --- a/mathcomp/odd_order/BGsection13.v +++ /dev/null @@ -1,1123 +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 frobenius. -From mathcomp -Require Import BGsection1 BGsection3 BGsection4 BGsection5 BGsection6. -From mathcomp -Require Import BGsection7 BGsection9 BGsection10 BGsection12. - -(******************************************************************************) -(* This file covers B & G, section 13; the title subject of the section, *) -(* prime and regular actions, was defined in the frobenius.v file. *) -(******************************************************************************) - -Set Implicit Arguments. -Unset Strict Implicit. -Unset Printing Implicit Defensive. - -Import GroupScope. - -Section Section13. - -Variable gT : minSimpleOddGroupType. -Local Notation G := (TheMinSimpleOddGroup gT). -Implicit Types p q q_star r : nat. -Implicit Types A E H K L M Mstar N P Q Qstar R S T U V W X Y Z : {group gT}. - -Section OneComplement. - -Variables M E : {group gT}. -Hypotheses (maxM : M \in 'M) (hallE : \sigma(M)^'.-Hall(M) E). - -Let sEM : E \subset M := pHall_sub hallE. -Let sM'E : \sigma(M)^'.-group E := pHall_pgroup hallE. - -(* This is B & G, Lemma 13.1. *) -Lemma Msigma_setI_mmax_central p H : - H \in 'M -> p \in \pi(E) -> p \in \pi(H) -> p \notin \tau1(H) -> - [~: M`_\sigma :&: H, M :&: H] != 1 -> gval H \notin M :^: G -> - [/\ (*a*) forall P, P \subset M :&: H -> p.-group P -> - P \subset 'C(M`_\sigma :&: H), - (*b*) p \notin \tau2(H) - & (*c*) p \in \tau1(M) -> p \in \beta(G)]. -Proof. -move=> maxH piEp piHp t1H'p; set R := [~: _, _] => ntR notMGH. -have [q sMq piH'q]: exists2 q, q \in \sigma(M) & q \in \pi(H^`(1)). - pose q := pdiv #|R|; have q_pr: prime q by rewrite pdiv_prime ?cardG_gt1. - have q_dv : q %| _ := dvdn_trans (pdiv_dvd _) (cardSg _). - exists q; last by rewrite mem_primes q_pr cardG_gt0 q_dv ?commgSS ?subsetIr. - rewrite (pgroupP (pcore_pgroup _ M)) ?q_dv //. - have sR_MsM: R \subset [~: M`_\sigma, M] by rewrite commgSS ?subsetIl. - by rewrite (subset_trans sR_MsM) // commg_subl gFnorm. -have [Y sylY] := Sylow_exists q H^`(1); have [sYH' qY _] := and3P sylY. -have nsHbH: H`_\beta <| H := pcore_normal _ _; have [_ nHbH] := andP nsHbH. -have sYH := subset_trans sYH' (der_sub 1 H); have nHbY := subset_trans sYH nHbH. -have nsHbY_H: H`_\beta <*> Y <| H. - rewrite -{2}(quotientGK nsHbH) -quotientYK ?cosetpre_normal //. - have ->: Y / H`_\beta = 'O_q(H^`(1) / H`_\beta). - by apply: nilpotent_Hall_pcore; rewrite ?Mbeta_quo_nil ?quotient_pHall. - by rewrite quotient_der ?gFnormal_trans. -have sYNY: Y \subset 'N_H(Y) by rewrite subsetI sYH normG. -have{nsHbY_H} defH: H`_\beta * 'N_H(Y) = H. - rewrite -(mulSGid sYNY) mulgA -(norm_joinEr nHbY). - rewrite (Frattini_arg _ (pHall_subl _ _ sylY)) ?joing_subr //. - by rewrite join_subG Mbeta_der1. -have ntY: Y :!=: 1 by rewrite -cardG_gt1 (card_Hall sylY) p_part_gt1. -have{ntY} [_] := sigma_Jsub maxM (pi_pgroup qY sMq) ntY. -have maxY_H: H \in 'M(Y) by apply/setIdP. -move/(_ E p H hallE piEp _ maxY_H notMGH) => b'p_t3Hp. -case t2Hp: (p \in \tau2(H)). - have b'p: p \notin \beta(G) by case/tau2_not_beta: t2Hp. - have rpH: 'r_p(H) = 2 by apply/eqP; case/andP: t2Hp. - have p'Hb: p^'.-group H`_\beta. - rewrite (pi_p'group (pcore_pgroup _ H)) // inE /=. - by rewrite -predI_sigma_beta // negb_and b'p orbT. - case: b'p_t3Hp; rewrite // -(p_rank_p'quotient p'Hb) ?subIset ?nHbH //=. - by rewrite -quotientMidl defH p_rank_p'quotient ?rpH. -have [S sylS] := Sylow_exists p H; have [sSH pS _] := and3P sylS. -have sSH': S \subset H^`(1). - have [sHp | sH'p] := boolP (p \in \sigma(H)). - apply: subset_trans (Msigma_der1 maxH). - by rewrite (sub_Hall_pcore (Msigma_Hall _)) // (pi_pgroup pS). - have sH'_S: \sigma(H)^'.-group S by rewrite (pi_pgroup pS). - have [F hallF sSF] := Hall_superset (mmax_sol maxH) sSH sH'_S. - have t3Hp: p \in \tau3(H). - have:= partition_pi_sigma_compl maxH hallF p. - by rewrite (pi_sigma_compl hallF) inE /= sH'p piHp (negPf t1H'p) t2Hp. - have [[F1 hallF1] [F3 hallF3]] := ex_tau13_compl hallF. - have [F2 _ complFi] := ex_tau2_compl hallF hallF1 hallF3. - have [[sF3F' nsF3F] _ _ _ _] := sigma_compl_context maxH complFi. - apply: subset_trans (subset_trans sF3F' (dergS 1 (pHall_sub hallF))). - by rewrite (sub_normal_Hall hallF3) ?(pi_pgroup pS). -have sylS_H' := pHall_subl sSH' (der_sub 1 H) sylS. -split=> // [P sPMH pP | t1Mp]; last first. - apply/idPn=> b'p; have [_ /(_ t1Mp)/negP[]] := b'p_t3Hp b'p. - have p'Hb: p^'.-group H`_\beta. - rewrite (pi_p'group (pcore_pgroup _ H)) // inE /=. - by rewrite -predI_sigma_beta // negb_and b'p orbT. - rewrite -p_rank_gt0 -(p_rank_p'quotient p'Hb) ?comm_subG ?subIset ?nHbH //=. - rewrite quotient_der ?subIset ?nHbH // -quotientMidl defH -quotient_der //=. - rewrite p_rank_p'quotient ?comm_subG // -(rank_Sylow sylS_H'). - by rewrite (rank_Sylow sylS) p_rank_gt0. -have nsHaH: H`_\alpha <| H := pcore_normal _ _; have [_ nHaH] := andP nsHaH. -have [sPM sPH] := subsetIP sPMH; have nHaS := subset_trans sSH nHaH. -have nsHaS_H: H`_\alpha <*> S <| H. - rewrite -[H in _ <| H](quotientGK nsHaH) -quotientYK ?cosetpre_normal //. - have ->: S / H`_\alpha = 'O_p(H^`(1) / H`_\alpha). - by apply: nilpotent_Hall_pcore; rewrite ?Malpha_quo_nil ?quotient_pHall. - by rewrite quotient_der ?gFnormal_trans. -have [sHaS_H nHaS_H] := andP nsHaS_H. -have sP_HaS: P \subset H`_\alpha <*> S. - have [x Hx sPSx] := Sylow_subJ sylS sPH pP; apply: subset_trans sPSx _. - by rewrite sub_conjg (normsP nHaS_H) ?groupV ?joing_subr. -have coHaS_Ms: coprime #|H`_\alpha <*> S| #|M`_\sigma|. - rewrite (p'nat_coprime _ (pcore_pgroup _ _)) // -pgroupE norm_joinEr //. - rewrite pgroupM andbC (pi_pgroup pS) ?(pnatPpi (pHall_pgroup hallE)) //=. - apply: sub_pgroup (pcore_pgroup _ _) => r aHr. - have [|_ ti_aH_sM _] := sigma_disjoint maxH maxM; first by rewrite orbit_sym. - by apply: contraFN (ti_aH_sM r) => sMr; apply/andP. -rewrite (sameP commG1P trivgP) -(coprime_TIg coHaS_Ms) commg_subI ?setIS //. -by rewrite subsetI sP_HaS (subset_trans sPM) ?gFnorm. -Qed. - -(* This is B & G, Corollary 13.2. *) -Corollary cent_norm_tau13_mmax p P H : - (p \in \tau1(M)) || (p \in \tau3(M)) -> - P \subset M -> p.-group P -> H \in 'M('N(P)) -> - [/\ (*a*) forall P1, P1 \subset M :&: H -> p.-group P1 -> - P1 \subset 'C(M`_\sigma :&: H), - (*b*) forall X, X \subset E :&: H -> \tau1(H)^'.-group X -> - X \subset 'C(M`_\sigma :&: H) - & (*c*) [~: M`_\sigma :&: H, M :&: H] != 1 -> - p \in \sigma(H) /\ (p \in \tau1(M) -> p \in \beta(H))]. -Proof. -move=> t13Mp sPM pP /setIdP[maxH sNP_H]. -have ntP: P :!=: 1. - by apply: contraTneq sNP_H => ->; rewrite norm1 proper_subn ?mmax_proper. -have st2Hp: (p \in \sigma(H)) || (p \in \tau2(H)). - exact: (prime_class_mmax_norm maxH pP sNP_H). -have not_MGH: gval H \notin M :^: G. - apply: contraL st2Hp => /imsetP[x _ ->]; rewrite sigmaJ tau2J negb_or. - by have:= t13Mp; rewrite -2!andb_orr !inE => /and3P[-> /eqP->]. -set R := [~: _, _]; have [/commG1P | ntR] := altP (R =P 1). - rewrite centsC => cMH; split=> // X sX_EH _; apply: subset_trans cMH => //. - by rewrite (subset_trans sX_EH) ?setSI. -have piEp: p \in \pi(E). - by rewrite (partition_pi_sigma_compl maxM) // orbCA t13Mp orbT. -have piHp: p \in \pi(H). - by rewrite (partition_pi_mmax maxH) orbCA orbC -!orbA st2Hp !orbT. -have t1H'p: p \notin \tau1(H). - by apply: contraL st2Hp; rewrite negb_or !inE => /and3P[-> /eqP->]. -case: (Msigma_setI_mmax_central maxH piEp) => // cMsH t2H'p b_p. -split=> // [X sX_EH t1'X | _]. - have [sXE sXH] := subsetIP sX_EH. - rewrite -(Sylow_gen X) gen_subG; apply/bigcupsP=> Q; case/SylowP=> q _ sylQ. - have [-> | ntQ] := eqsVneq Q 1; first exact: sub1G. - have piXq: q \in \pi(X) by rewrite -p_rank_gt0 -(rank_Sylow sylQ) rank_gt0. - have [[piEq piHq] t1H'q] := (piSg sXE piXq, piSg sXH piXq, pnatPpi t1'X piXq). - have [sQX qQ _] := and3P sylQ; have sXM := subset_trans sXE sEM. - case: (Msigma_setI_mmax_central maxH piEq) => // -> //. - by rewrite subsetI !(subset_trans sQX). -rewrite (negPf t2H'p) orbF in st2Hp. -by rewrite -predI_sigma_beta // {3}/in_mem /= st2Hp. -Qed. - -(* This is B & G, Corollary 13.3(a). *) -Lemma cyclic_primact_Msigma p P : - p.-Sylow(E) P -> cyclic P -> semiprime M`_\sigma P. -Proof. -move=> sylP cycP x /setD1P[]; rewrite -cycle_eq1 -cycle_subG => ntX sXP. -have [sPE pP _] := and3P sylP; rewrite -cent_cycle. -have sPM := subset_trans sPE sEM; have sXM := subset_trans sXP sPM. -have pX := pgroupS sXP pP; have ltXG := mFT_pgroup_proper pX. -have t13p: (p \in \tau1(M)) || (p \in \tau3(M)). - rewrite (tau1E maxM hallE) (tau3E maxM hallE) -p_rank_gt0 -(rank_Sylow sylP). - rewrite eqn_leq rank_gt0 (subG1_contra sXP) //= andbT -andb_orl orNb. - by rewrite -abelian_rank1_cyclic ?cyclic_abelian. -have [H maxNH] := mmax_exists (mFT_norm_proper ntX ltXG). -have [cMsX _ _] := cent_norm_tau13_mmax t13p sXM pX maxNH. -have [_ sNH] := setIdP maxNH. -apply/eqP; rewrite eqEsubset andbC setIS ?centS // subsetI subsetIl /= centsC. -apply: subset_trans (cMsX P _ pP) (centS _). - rewrite subsetI sPM (subset_trans (cents_norm _) sNH) //. - by rewrite sub_abelian_cent // cyclic_abelian. -by rewrite setIS // (subset_trans (cent_sub _) sNH). -Qed. - -(* This is B & G, Corollary 13.3(b). *) -Corollary tau3_primact_Msigma E3 : - \tau3(M).-Hall(E) E3 -> semiprime M`_\sigma E3. -Proof. -move=> hallE3 x /setD1P[]; rewrite -cycle_eq1 -cycle_subG => ntX sXE3. -have [sE3E t3E3 _] := and3P hallE3; rewrite -cent_cycle. -have [[E1 hallE1] _] := ex_tau13_compl hallE. -have [E2 _ complEi] := ex_tau2_compl hallE hallE1 hallE3. -have [[sE3E' nsE3E] _ [_ cycE3] _ _] := sigma_compl_context maxM complEi. -apply/eqP; rewrite eqEsubset andbC setIS ?centS // subsetI subsetIl /= centsC. -pose p := pdiv #[x]; have p_pr: prime p by rewrite pdiv_prime ?cardG_gt1. -have t3p: p \in \tau3(M) by rewrite (pgroupP (pgroupS sXE3 t3E3)) ?pdiv_dvd. -have t13p: [|| p \in \tau1(M) | p \in \tau3(M)] by rewrite t3p orbT. -have [y Xy oy]:= Cauchy p_pr (pdiv_dvd _). -have ntY: <[y]> != 1 by rewrite -cardG_gt1 -orderE oy prime_gt1. -have pY: p.-group <[y]> by rewrite /pgroup -orderE oy pnat_id. -have [H maxNH] := mmax_exists (mFT_norm_proper ntY (mFT_pgroup_proper pY)). -have sYE3: <[y]> \subset E3 by rewrite cycle_subG (subsetP sXE3). -have sYE := subset_trans sYE3 sE3E; have sYM := subset_trans sYE sEM. -have [_ cMsY _] := cent_norm_tau13_mmax t13p sYM pY maxNH. -have [_ sNH] := setIdP maxNH. -have sE3H': E3 \subset H^`(1). - rewrite (subset_trans sE3E') ?dergS // (subset_trans _ sNH) ?normal_norm //. - by rewrite (char_normal_trans _ nsE3E) // sub_cyclic_char. -apply: subset_trans (cMsY E3 _ _) (centS _). -- rewrite subsetI sE3E (subset_trans (cents_norm _) sNH) //. - by rewrite sub_abelian_cent ?cyclic_abelian. -- rewrite (pgroupS sE3H') //; apply/pgroupP=> q _ q_dv_H'. - by rewrite !inE q_dv_H' !andbF. -by rewrite setIS // (subset_trans _ sNH) // cents_norm ?centS ?cycle_subG. -Qed. - -(* This is B & G, Theorem 13.4. *) -(* Note how the non-structural steps in the proof (top of p. 99, where it is *) -(* deduced that C_M_alpha(P) <= C_M_alpha(R) from q \notin \alpha, and then *) -(* C_M_alpha(P) = C_M_alpha(R) from r \in tau_1(M) !!), are handled cleanly *) -(* on lines 5-12 of the proof by a conditional expression for the former, and *) -(* a without loss tactic for the latter. *) -(* Also note that the references to 10.12 and 12.2 are garbled (some are *) -(* missing, and some are exchanged!). *) -Theorem cent_tau1Elem_Msigma p r P R (Ms := M`_\sigma) : - p \in \tau1(M) -> P \in 'E_p^1(E) -> R \in 'E_r^1('C_E(P)) -> - 'C_Ms(P) \subset 'C_Ms(R). -Proof. -have /andP[sMsM nMsM]: Ms <| M := pcore_normal _ M. -have coMsE: coprime #|Ms| #|E| := coprime_sigma_compl hallE. -pose Ma := M`_\alpha; have sMaMs: Ma \subset Ms := Malpha_sub_Msigma maxM. -rewrite pnElemI -setIdE => t1Mp EpP /setIdP[ErR cPR]. -without loss symPR: p r P R EpP ErR cPR t1Mp / - r \in \tau1(M) -> 'C_Ma(P) \subset 'C_Ma(R) -> 'C_Ma(P) = 'C_Ma(R). -- move=> IH; apply: (IH p r) => // t1Mr sCaPR; apply/eqP; rewrite eqEsubset. - rewrite sCaPR -(setIidPl sMaMs) -!setIA setIS ?(IH r p) 1?centsC // => _. - by case/eqVproper; rewrite // /proper sCaPR andbF. -do [rewrite !subsetI !subsetIl /=; set cRCaP := _ \subset _] in symPR *. -pose Mz := 'O_(if cRCaP then \sigma(M) else \alpha(M))(M); pose C := 'C_Mz(P). -suffices: C \subset 'C(R) by rewrite /C /Mz /cRCaP; case: ifP => // ->. -have sMzMs: Mz \subset Ms by rewrite /Mz; case: ifP => // _. -have sCMs: C \subset Ms by rewrite subIset ?sMzMs. -have [[sPE abelP dimP] [sRE abelR dimR]] := (pnElemP EpP, pnElemP ErR). -have [sPM sRM] := (subset_trans sPE sEM, subset_trans sRE sEM). -have [[pP cPP _] [rR _]] := (and3P abelP, andP abelR). -have coCR: coprime #|C| #|R| := coprimeSg sCMs (coprimegS sRE coMsE). -have ntP: P :!=: 1 by apply: nt_pnElem EpP _. -pose ST := [set S | Sylow C (gval S) & R \subset 'N(S)]. -have sST_CP S: S \in ST -> S \subset C by case/setIdP=> /SylowP[q _ /andP[]]. -rewrite -{sST_CP}[C](Sylow_transversal_gen sST_CP) => [|q _]; last first. - have nMzR: R \subset 'N(Mz) by rewrite (subset_trans sRM) // gFnorm. - have{nMzR} nCR: R \subset 'N(C) by rewrite normsI // norms_cent // cents_norm. - have solC := solvableS (subset_trans sCMs sMsM) (mmax_sol maxM). - have [S sylS nSR] := coprime_Hall_exists q nCR coCR solC. - by exists S; rewrite // inE (p_Sylow sylS) nSR. -rewrite gen_subG; apply/bigcupsP=> S /setIdP[/SylowP[q _ sylS] nSR] {ST}. -have [sSC qS _] := and3P sylS. -have [sSMs [sSMz cPS]] := (subset_trans sSC sCMs, subsetIP sSC). -rewrite (sameP commG1P eqP) /=; set Q := [~: S, R]; apply/idPn => ntQ. -have sQS: Q \subset S by [rewrite commg_subl]; have qQ := pgroupS sQS qS. -have piQq: q \in \pi(Q) by rewrite -p_rank_gt0 -(rank_pgroup qQ) rank_gt0. -have{piQq} [nQR piSq] := (commg_normr R S : R \subset 'N(Q), piSg sQS piQq). -have [H maxNH] := mmax_exists (mFT_norm_proper ntP (mFT_pgroup_proper pP)). -have [maxH sNH] := setIdP maxNH; have sCPH := subset_trans (cent_sub _) sNH. -have [sPH sRH] := (subset_trans cPP sCPH, subset_trans cPR sCPH). -have [sSM sSH] := (subset_trans sSMs sMsM, subset_trans cPS sCPH). -have [sQM sQH] := (subset_trans sQS sSM, subset_trans sQS sSH). -have ntMsH_R: [~: Ms :&: H, R] != 1. - by rewrite (subG1_contra _ ntQ) ?commSg // subsetI sSMs. -have sR_EH: R \subset E :&: H by apply/subsetIP. -have ntMsH_MH: [~: Ms :&: H, M :&: H] != 1. - by rewrite (subG1_contra _ ntMsH_R) ?commgS // (subset_trans sR_EH) ?setSI. -have t13Mp: p \in [predU \tau1(M) & \tau3(M)] by apply/orP; left. -have [_ cMsH_t1H' [//|sHp bHp]] := cent_norm_tau13_mmax t13Mp sPM pP maxNH. -have{cMsH_t1H'} t1Hr: r \in \tau1(H). - apply: contraR ntMsH_R => t1H'r; rewrite (sameP eqP commG1P) centsC. - by rewrite cMsH_t1H' // (pi_pgroup rR). -have ntCHaRQ: 'C_(H`_\alpha)(R <*> Q) != 1. - rewrite centY (subG1_contra _ ntP) ?subsetI //= centsC cPR centsC. - rewrite (subset_trans sQS cPS) (subset_trans _ (Mbeta_sub_Malpha H)) //. - by rewrite (sub_Hall_pcore (Mbeta_Hall maxH)) // (pi_pgroup pP) ?bHp. -have not_MGH: gval H \notin M :^: G. - by apply: contraL sHp => /imsetP[x _ ->]; rewrite sigmaJ; case/andP: t1Mp. -have neqHM: H :!=: M := contra_orbit _ _ not_MGH. -have cSS: abelian S. - apply: contraR neqHM => /(nonabelian_Uniqueness qS)uniqS. - by rewrite (eq_uniq_mmax (def_uniq_mmax uniqS maxM sSM) maxH sSH). -have tiQcR: 'C_Q(R) = 1 by rewrite coprime_abel_cent_TI // (coprimeSg sSC). -have sMq: q \in \sigma(M) := pnatPpi (pcore_pgroup _ M) (piSg sSMs piSq). -have aH'q: q \notin \alpha(H). - have [|_ tiHaMs _] := sigma_disjoint maxH maxM; first by rewrite orbit_sym. - by apply: contraFN (tiHaMs q) => aHq; apply/andP. -have piRr: r \in \pi(R) by rewrite -p_rank_gt0 p_rank_abelem ?dimR. -have ErH_R: R \in 'E_r^1(H) by rewrite !inE sRH abelR dimR. -have{piRr} sM'r: r \in \sigma(M)^' := pnatPpi (pgroupS sRE sM'E) piRr. -have r'q: q \in r^' by apply: contraTneq sMq => ->. -have ntHa: H`_\alpha != 1 by rewrite (subG1_contra _ ntCHaRQ) ?subsetIl. -have uniqNQ: 'M('N(Q)) = [set H]. - apply: contraNeq ntCHaRQ; rewrite joingC. - by case/(cent_Malpha_reg_tau1 _ _ r'q ErH_R) => //; case=> //= _ -> _. -have maxNQ_H: H \in 'M('N(Q)) :\ M by rewrite uniqNQ !inE neqHM /=. -have{maxNQ_H} [_ _] := sigma_subgroup_embedding maxM sMq sQM qQ ntQ maxNQ_H. -have [sHq [_ st1HM [_ ntMa]] | _ [_ _ sM'MH]] := ifP; last first. - have piPp: p \in \pi(P) by rewrite -p_rank_gt0 p_rank_abelem ?dimP. - have sPMH: P \subset M :&: H by apply/subsetIP. - by have/negP[] := pnatPpi (pgroupS sPMH (pHall_pgroup sM'MH)) piPp. -have{st1HM} t1Mr: r \in \tau1(M). - by case/orP: (st1HM r t1Hr); rewrite //= (contraNF ((alpha_sub_sigma _) r)). -have aM'q: q \notin \alpha(M). - have [_ tiMaHs _] := sigma_disjoint maxM maxH not_MGH. - by apply: contraFN (tiMaHs q) => aMq; apply/andP. -have ErM_R: R \in 'E_r^1(M) by rewrite !inE sRM abelR dimR. -have: 'M('N(Q)) != [set M] by rewrite uniqNQ (inj_eq (@set1_inj _)). -case/(cent_Malpha_reg_tau1 _ _ r'q ErM_R) => //. -case=> //= ntCMaP tiCMaPQ _; case/negP: ntCMaP. -rewrite -subG1 -{}tiCMaPQ centY setICA subsetIidr /= -/Ma -/Q centsC. -apply/commG1P/three_subgroup; apply/commG1P. - by rewrite commGC (commG1P _) ?sub1G ?subsetIr. -apply: subset_trans (subsetIr Ma _); rewrite /= -symPR //. - rewrite commg_subl normsI //; last by rewrite norms_cent // cents_norm. - by rewrite (subset_trans sSM) ?gFnorm. -apply: contraR aM'q => not_cRCaP; apply: pnatPpi (pgroupS sSMz _) piSq. -by rewrite (negPf not_cRCaP) pcore_pgroup. -Qed. - -(* This is B & G, Theorem 13.5. *) -Theorem tau1_primact_Msigma E1 : \tau1(M).-Hall(E) E1 -> semiprime M`_\sigma E1. -Proof. -move=> hallE1 x /setD1P[]; rewrite -cycle_eq1 -cycle_subG => ntX sXE1. -rewrite -cent_cycle; have [sE1E t1E1 _] := and3P hallE1. -have [_ [E3 hallE3]] := ex_tau13_compl hallE. -have{hallE3} [E2 _ complEi] := ex_tau2_compl hallE hallE1 hallE3. -have [_ _ [cycE1 _] _ _ {E2 E3 complEi}] := sigma_compl_context maxM complEi. -apply/eqP; rewrite eqEsubset andbC setIS ?centS //= subsetI subsetIl /=. -have [p _ rX] := rank_witness <[x]>; rewrite -rank_gt0 {}rX in ntX. -have t1p: p \in \tau1(M) by rewrite (pnatPpi t1E1) // (piSg sXE1) -?p_rank_gt0. -have{ntX} [P EpP] := p_rank_geP ntX; have{EpP} [sPX abelP dimP] := pnElemP EpP. -have{sXE1} sPE1 := subset_trans sPX sXE1. -have{dimP} EpP: P \in 'E_p^1(E) by rewrite !inE abelP dimP (subset_trans sPE1). -apply: {x sPX abelP} subset_trans (setIS _ (centS sPX)) _; rewrite centsC. -rewrite -(Sylow_gen E1) gen_subG; apply/bigcupsP=> S; case/SylowP=> r _ sylS. -have [[sSE1 rS _] [-> | ntS]] := (and3P sylS, eqsVneq S 1); first exact: sub1G. -have [cycS sSE] := (cyclicS sSE1 cycE1, subset_trans sSE1 sE1E). -have /p_rank_geP[R ErR]: 0 < 'r_r(S) by rewrite -rank_pgroup ?rank_gt0. -have{ErR} [sRS abelR dimR] := pnElemP ErR; have sRE1 := subset_trans sRS sSE1. -have{abelR dimR} ErR: R \in 'E_r^1('C_E(P)). - rewrite !inE abelR dimR (subset_trans sRE1) // subsetI sE1E. - by rewrite sub_abelian_cent ?cyclic_abelian. -rewrite centsC (subset_trans (cent_tau1Elem_Msigma t1p EpP ErR)) //. -have [y defR]: exists y, R :=: <[y]> by apply/cyclicP; apply: cyclicS cycS. -have sylS_E: r.-Sylow(E) S. - apply: subHall_Sylow hallE1 (pnatPpi t1E1 _) (sylS). - by rewrite -p_rank_gt0 -(rank_Sylow sylS) rank_gt0. -rewrite defR cent_cycle (cyclic_primact_Msigma sylS_E cycS) ?subsetIr //. -by rewrite !inE -cycle_subG -cycle_eq1 -defR (nt_pnElem ErR). -Qed. - -(* This is B & G, Lemma 13.6. *) -(* The wording at the top of the proof is misleading: it should say: by *) -(* Corollary 12.14, it suffices to show that we can't have both q \in beta(M) *) -(* and X \notsubset M_sigma^(1). Also, the reference to 12.13 should be 12.19 *) -(* or 10.9 (we've used 12.19 here). *) -Lemma cent_cent_Msigma_tau1_uniq E1 P q X (Ms := M`_\sigma) : - \tau1(M).-Hall(E) E1 -> P \subset E1 -> P :!=: 1 -> - X \in 'E_q^1('C_Ms(P)) -> - 'M('C(X)) = [set M] /\ (forall S, q.-Sylow(Ms) S -> 'M(S) = [set M]). -Proof. -move=> hallE1 sPE1 ntP EqX; have [sE1E t1E1 _] := and3P hallE1. -rewrite (cent_semiprime (tau1_primact_Msigma hallE1)) //= -/Ms in EqX. -have{P ntP sPE1} ntE1 := subG1_contra sPE1 ntP. -have /andP[sMsM nMsM]: Ms <| M := pcore_normal _ M. -have coMsE: coprime #|Ms| #|E| := coprime_sigma_compl hallE. -have [solMs nMsE] := (solvableS sMsM (mmax_sol maxM), subset_trans sEM nMsM). -apply: cent_der_sigma_uniq => //. - by move: EqX; rewrite -(setIidPr sMsM) -setIA pnElemI => /setIP[]. -have{EqX} [[sXcMsE1 abelX _] ntX] := (pnElemP EqX, nt_pnElem EqX isT). -apply: contraR ntX => /norP[b'q not_sXMs']; rewrite -subG1. -have [S sylS nSE] := coprime_Hall_exists q nMsE coMsE solMs. -have{abelX} [[sSMs qS _] [qX _]] := (and3P sylS, andP abelX). -have sScMsE': S \subset 'C_Ms(E^`(1)). - have [H hallH cHE'] := der_compl_cent_beta' maxM hallE. - have [Q sylQ] := Sylow_exists q H; have [sQH qQ _] := and3P sylQ. - have{cHE' sQH} cQE' := centsS sQH cHE'; have sE'E := der_sub 1 E. - have [nMsE' coMsE'] := (coprimegS sE'E coMsE, subset_trans sE'E nMsE). - have{H hallH sylQ} sylQ := subHall_Sylow hallH b'q sylQ. - have nSE' := subset_trans sE'E nSE; have nQE' := cents_norm cQE'. - have [x cE'x ->] := coprime_Hall_trans coMsE' nMsE' solMs sylS nSE' sylQ nQE'. - by rewrite conj_subG // subsetI (pHall_sub sylQ) centsC. -without loss{qX} sXS: X sXcMsE1 not_sXMs' / X \subset S. - have [nMsE1 coMsE1 IH] := (subset_trans sE1E nMsE, coprimegS sE1E coMsE). - have [nSE1 [sXMs cE1X]] := (subset_trans sE1E nSE, subsetIP sXcMsE1). - have [|Q [sylQ nQE1 sXQ]] := coprime_Hall_subset nMsE1 coMsE1 solMs sXMs qX. - by rewrite cents_norm // centsC. - have [//|x cE1x defS] := coprime_Hall_trans nMsE1 _ solMs sylS nSE1 sylQ nQE1. - have Ms_x: x \in Ms by case/setIP: cE1x. - rewrite -(conjs1g x^-1) -sub_conjg IH //; last by rewrite defS conjSg. - by rewrite -(conjGid cE1x) conjSg. - by rewrite -(normsP (der_norm 1 _) x) ?conjSg. -have [sXMs cE1X] := subsetIP sXcMsE1. -have [_ [E3 hallE3]] := ex_tau13_compl hallE. -have{hallE3} [E2 hallE2 complEi] := ex_tau2_compl hallE hallE1 hallE3. -have{not_sXMs' E3 complEi} ntE2: E2 :!=: 1. - apply: contraNneq not_sXMs' => E2_1. - have [[sE3E' _] _ _ [defE _] _] := sigma_compl_context maxM complEi. - have [sCMsE_Ms' _ _] := sigma_compl_embedding maxM hallE. - have{defE} [_ defE _ _] := sdprodP defE; rewrite E2_1 sdprod1g in defE. - rewrite (subset_trans _ sCMsE_Ms') // -defE centM setIA subsetI. - by rewrite (subset_trans (subset_trans sXS sScMsE')) ?setIS ?centS. -have{ntE2 E2 hallE2} [p p_pr t2p]: exists2 p, prime p & p \in \tau2(M). - have [[p p_pr rE2] [_ t2E2 _]] := (rank_witness E2, and3P hallE2). - by exists p; rewrite ?(pnatPpi t2E2) // -p_rank_gt0 -rE2 rank_gt0. -have [A Ep2A Ep2A_M] := ex_tau2Elem hallE t2p. -have [_ _ tiCMsA _ _] := tau2_context maxM t2p Ep2A_M. -have [[nsAE _] _ _ _] := tau2_compl_context maxM hallE t2p Ep2A. -have [sAE abelA _] := pnElemP Ep2A; have [pA cAA _] := and3P abelA. -have cCAE1_X: X \subset 'C('C_A(E1)). - rewrite centsC; apply/subsetP=> y; case/setIP=> Ay cE1y. - have [-> | nty] := eqVneq y 1; first exact: group1. - have oY: #[y] = p := abelem_order_p abelA Ay nty. - have [r _ rE1] := rank_witness E1. - have{rE1} rE1: 'r_r(E1) > 0 by rewrite -rE1 rank_gt0. - have [R ErR] := p_rank_geP rE1; have{ErR} [sRE1 abelR dimR] := pnElemP ErR. - have t1r: r \in \tau1(M) by rewrite (pnatPpi t1E1) -?p_rank_gt0. - have ErR: R \in 'E_r^1(E) by rewrite !inE abelR dimR (subset_trans sRE1). - have EpY: <[y]>%G \in 'E_p^1('C_E(R)). - rewrite p1ElemE // !inE -oY eqxx subsetI (centsS sRE1) cycle_subG //=. - by rewrite (subsetP sAE). - rewrite -sub_cent1 -cent_cycle (subset_trans sXcMsE1) //. - apply: subset_trans (setIS _ (centS sRE1)) _. - rewrite -subsetIidl setIAC subsetI subsetIr andbT. - exact: cent_tau1Elem_Msigma t1r ErR EpY. -have nAE1 := subset_trans sE1E (normal_norm nsAE). -have coAE1: coprime #|A| #|E1|. - by apply: pnat_coprime pA (pi_p'group t1E1 (contraL _ t2p)); apply: tau2'1. -rewrite -tiCMsA -(coprime_cent_prod nAE1 coAE1) ?abelian_sol // centM setIA. -rewrite subsetI cCAE1_X (subset_trans (subset_trans sXS sScMsE')) ?setIS //. -by rewrite centS ?commgSS. -Qed. - -End OneComplement. - -(* This is B & G, Lemma 13.7. *) -(* We've had to plug a gap in this proof: on p. 100, l. 6-7 it is asserted *) -(* the conclusion (E1 * E3 acts in a prime manner on M_sigma) follows from *) -(* the fact that E1 and E3 have coprime orders and act in a prime manner with *) -(* the same set of fixed points. This seems to imply the following argument: *) -(* For any x \in M_sigma, *) -(* C_(E1 * E3)[x] = C_E1[x] * C_E3[x] is either E1 * E3 or 1, *) -(* i.e., E1 * E3 acts in a prime manner on M_sigma. *) -(* This is improper because the distributivity of centralisers over coprime *) -(* products only hold under normality conditions that do not hold in this *) -(* instance. The correct argument, which involves using the prime action *) -(* assumption a second time, only relies on the fact that E1 and E3 are Hall *) -(* subgroups of the group E1 * E3. The fact that E3 <| E (Lemma 12.1(a)), *) -(* implicitly needed to justify that E1 * E3 is a group, can also be used to *) -(* simplify the argument, and we do so. *) -Lemma tau13_primact_Msigma M E E1 E2 E3 : - M \in 'M -> sigma_complement M E E1 E2 E3 -> ~ semiregular E3 E1 -> - semiprime M`_\sigma (E3 <*> E1). -Proof. -move=> maxM complEi not_regE13; set Ms := M`_\sigma. -have [hallE hallE1 hallE2 hallE3 _] := complEi. -have [[sE1E t1E1 _] [sE3E t3E3 _]] := (and3P hallE1, and3P hallE3). -have [[sEM _ _] [_ t2E2 _]] := (and3P hallE, and3P hallE2). -have [[_ nsE3E] _ [_ cycE3] [defE _] tiE3cE]:= sigma_compl_context maxM complEi. -have [[_ nE3E] [sMsM nMsM]] := (andP nsE3E, andP (pcore_normal _ M : Ms <| M)). -have [P]: exists2 P, P \in 'E^1(E1) & 'C_E3(P) != 1. - apply/exists_inP; rewrite -negb_forall_in; apply/forall_inP=> regE13. - apply: not_regE13 => x /setD1P[]; rewrite -cycle_subG -cycle_eq1 -rank_gt0. - case/rank_geP=> P E1xP sXE1; apply/trivgP; move: E1xP. - rewrite /= -(setIidPr sXE1) nElemI -setIdE => /setIdP[E1_P sPX]. - by rewrite -(eqP (regE13 P E1_P)) -cent_cycle setIS ?centS. -rewrite -{1}(setIidPr sE1E) nElemI -setIdE => /setIdP[/nElemP[p EpP] sPE1]. -rewrite -{1}(setIidPl sE3E) -setIA setIC -rank_gt0 => /rank_geP[R]. -rewrite nElemI -setIdE => /setIdP[/nElemP[r ErR] sRE3]. -have t1p: p \in \tau1(M). - rewrite (pnatPpi (pgroupS sPE1 t1E1)) //= (card_p1Elem EpP). - by rewrite pi_of_prime ?inE ?(pnElem_prime EpP) //. -have prE1 := tau1_primact_Msigma maxM hallE hallE1. -have prE3 := tau3_primact_Msigma maxM hallE hallE3. -have sCsPR: 'C_Ms(P) \subset 'C_Ms(R) by apply: cent_tau1Elem_Msigma EpP ErR. -have [eqCsPR | ltCsPR] := eqVproper sCsPR. - move=> x; case/setD1P; rewrite -cycle_eq1 -cycle_subG => ntX sXE31. - apply/eqP; rewrite -cent_cycle eqEsubset andbC setIS ?centS //=. - have eqCsE13: 'C_Ms(E1) = 'C_Ms(E3). - rewrite -(cent_semiprime prE1 sPE1) ?(nt_pnElem EpP) //. - by rewrite -(cent_semiprime prE3 sRE3) ?(nt_pnElem ErR). - rewrite centY setICA eqCsE13 -setICA setIid. - have sE31E: E3 <*> E1 \subset E by apply/joing_subP. - have nE3E1 := subset_trans sE1E nE3E. - pose y := x.`_\tau1(M); have sYX: <[y]> \subset <[x]> := cycleX x _. - have sXE := subset_trans sXE31 sE31E; have sYE := subset_trans sYX sXE. - have [t1'x | not_t1'x] := boolP (\tau1(M)^'.-elt x). - rewrite (cent_semiprime prE3 _ ntX) // (sub_normal_Hall hallE3) //. - apply: pnat_dvd t3E3; rewrite -(Gauss_dvdr _ (p'nat_coprime t1'x t1E1)). - by rewrite mulnC (dvdn_trans _ (dvdn_cardMg _ _)) -?norm_joinEr ?cardSg. - have{not_t1'x} ntY: #[y] != 1%N by rewrite order_constt partn_eq1. - apply: subset_trans (setIS _ (centS sYX)) _. - have [solE nMsE] := (sigma_compl_sol hallE, subset_trans sEM nMsM). - have [u Eu sYuE1] := Hall_Jsub solE hallE1 sYE (p_elt_constt _ _). - rewrite -(conjSg _ _ u) !conjIg -!centJ (normsP nMsE) ?(normsP nE3E) //=. - by rewrite -eqCsE13 (cent_semiprime prE1 sYuE1) // trivg_card1 cardJg. -have ntCsR: 'C_Ms(R) != 1. - by rewrite -proper1G (sub_proper_trans _ ltCsPR) ?sub1G. -have ntR: R :!=: 1 by rewrite (nt_pnElem ErR). -have [cEPR abelR dimR] := pnElemP ErR; have [rR _ _] := and3P abelR. -have{cEPR} [sRE cPR] := subsetIP cEPR; have sRM := subset_trans sRE sEM. -have E2_1: E2 :=: 1. - have [x defR] := cyclicP (cyclicS sRE3 cycE3). - apply: contraNeq ntCsR; rewrite -rank_gt0; have [q _ ->] := rank_witness E2. - rewrite p_rank_gt0 defR cent_cycle. move/(pnatPpi t2E2) => t2q. - have [A Eq2A _] := ex_tau2Elem hallE t2q. - have [-> //] := tau2_regular maxM complEi t2q Eq2A. - by rewrite !inE -cycle_subG -cycle_eq1 -defR sRE3 (nt_pnElem ErR). -have nRE: E \subset 'N(R) by rewrite (char_norm_trans _ nE3E) ?sub_cyclic_char. -have [H maxNH] := mmax_exists (mFT_norm_proper ntR (mFT_pgroup_proper rR)). -have [maxH sNH] := setIdP maxNH; have sEH := subset_trans nRE sNH. -have ntCsR_P: [~: 'C_Ms(R), P] != 1. - rewrite (sameP eqP commG1P); apply: contra (proper_subn ltCsPR). - by rewrite subsetI subsetIl. -have sCsR_MsH: 'C_Ms(R) \subset Ms :&: H. - exact: setIS Ms (subset_trans (cent_sub R) sNH). -have ntMsH_P: [~: Ms :&: H, P] != 1 by rewrite (subG1_contra _ ntCsR_P) ?commSg. -have tiE1cMsH: 'C_E1(Ms :&: H) = 1. - apply: contraNeq (proper_subn ltCsPR) => ntCE1MsH. - rewrite (cent_semiprime prE1 sPE1) ?(nt_pnElem EpP) //. - rewrite -(cent_semiprime prE1 (subsetIl _ _) ntCE1MsH) /=. - by rewrite subsetI subsetIl centsC subIset // orbC centS. -have t3r: r \in \tau3(M). - by rewrite (pnatPpi t3E3) ?(piSg sRE3) // -p_rank_gt0 p_rank_abelem ?dimR. -have t13r: (r \in \tau1(M)) || (r \in \tau3(M)) by rewrite t3r orbT. -have [sE1H sRH] := (subset_trans sE1E sEH, subset_trans sRE sEH). -have [_ ct1H'R [|sHr _]] := cent_norm_tau13_mmax maxM hallE t13r sRM rR maxNH. - rewrite (subG1_contra _ ntMsH_P) // commgS // (subset_trans sPE1) //. - by rewrite subsetI (subset_trans sE1E). -have t1H_E1: \tau1(H).-group E1. - apply/pgroupP=> q q_pr /Cauchy[] // x E1x ox. - apply: contraLR (prime_gt1 q_pr) => t1H'q; rewrite -ox cardG_gt1 negbK. - rewrite -subG1 -tiE1cMsH subsetI cycle_subG E1x /= ct1H'R //. - by rewrite (setIidPl sEH) cycle_subG (subsetP sE1E). - by rewrite /pgroup -orderE ox pnatE. -have sH'_E1: \sigma(H)^'.-group E1 by apply: sub_pgroup t1H_E1 => q /andP[]. -have [F hallF sE1F] := Hall_superset (mmax_sol maxH) sE1H sH'_E1. -have [F1 hallF1 sE1F1] := Hall_superset (sigma_compl_sol hallF) sE1F t1H_E1. -have{sHr} sRHs: R \subset H`_\sigma. - by rewrite (sub_Hall_pcore (Msigma_Hall maxH)) ?(pi_pgroup rR). -have cRE1: E1 \subset 'C(R). - rewrite centsC (centsS sE1F1) // -subsetIidl subsetI subxx -sRHs -subsetI. - have prF1 := tau1_primact_Msigma maxH hallF hallF1. - rewrite -(cent_semiprime prF1 (subset_trans sPE1 sE1F1)); last first. - exact: nt_pnElem EpP _. - by rewrite subsetI sRHs. -case/negP: ntR; rewrite -subG1 -tiE3cE subsetI sRE3 centsC -(sdprodW defE). -by rewrite E2_1 sdprod1g mul_subG // sub_abelian_cent ?cyclic_abelian. -Qed. - -(* This is B & G, Lemma 13.8. *) -(* We had to plug a significant hole in the proof text: in the sixth *) -(* paragraph of the proof, it is asserted that because M = N_M(Q)M_alpha and *) -(* r is in pi(C_M(P)), P centralises some non-trivial r-subgroup of N_M(Q). *) -(* This does not seem to follow directly, even taking into account that r is *) -(* not in alpha(M): while it is true that N_M(Q) contains a Sylow r-subgroup *) -(* of M, this subgroup does not need to contain an r-group centralized by P. *) -(* We can only establish the required result by making use of the fact that M *) -(* has a normal p-complement K (because p is in tau_1(M)), as then N_K(Q) *) -(* will contain a p-invariant Sylow r-subgroup S of K and M (coprime action) *) -(* and then any r-subgroup of M centralised by P will be in K, and hence *) -(* conjugate in C_K(P) to a subgroup of S (coprime action again). *) -Lemma tau1_mmaxI_asymmetry M Mstar p P q Q q_star Qstar : - (*1*) [/\ M \in 'M, Mstar \in 'M & gval Mstar \notin M :^: G] -> - (*2*) [/\ p \in \tau1(M), p \in \tau1(Mstar) & P \in 'E_p^1(M :&: Mstar)] -> - (*3*) [/\ q.-Sylow(M :&: Mstar) Q, q_star.-Sylow(M :&: Mstar) Qstar, - P \subset 'N(Q) & P \subset 'N(Qstar)] -> - (*4*) 'C_Q(P) = 1 /\ 'C_Qstar(P) = 1 -> - (*5*) 'N(Q) \subset Mstar /\ 'N(Qstar) \subset M -> - False. -Proof. -move: Mstar q_star Qstar => L u U. (* Abbreviate Mstar by L, Qstar by U. *) -move=> [maxM maxL notMGL] [t1Mp t1Lp EpP] [sylQ sylU nQP nUP]. -move=> [regPQ regPU] [sNQL sNUM]; rewrite setIC in sylU. (* for symmetry *) -have notLGM: gval M \notin L :^: G by rewrite orbit_sym. (* for symmetry *) -have{EpP} [ntP [sPML abelP dimP]] := (nt_pnElem EpP isT, pnElemP EpP). -have{sPML} [[sPM sPL] [pP _ _]] := (subsetIP sPML, and3P abelP). -have solCP: solvable 'C(P) by rewrite mFT_sol ?mFT_cent_proper. -pose Qprops M q Q := [&& q.-Sylow(M) Q, q != p, q \notin \beta(M), - 'C_(M`_\beta)(P) != 1 & 'C_(M`_\beta)(P <*> Q) == 1]. -have{sylQ sylU} [hypQ hypU]: Qprops M q Q /\ Qprops L u U. - apply/andP; apply/nandP=> not_hypQ. - without loss{not_hypQ}: L u U M q Q maxM maxL notMGL notLGM t1Mp t1Lp sPM sPL - sylQ sylU nQP nUP regPQ regPU sNQL sNUM / ~~ Qprops M q Q. - - by move=> IH; case: not_hypQ; [apply: (IH L u U) | apply: (IH M q Q)]. - case/and5P; have [_ qQ _] := and3P sylQ. - have{sylQ} sylQ: q.-Sylow(M) Q. - by rewrite -Sylow_subnorm -(setIidPr sNQL) setIA Sylow_subnorm. - have ntQ: Q :!=: 1. - by apply: contraTneq sNQL => ->; rewrite norm1 proper_subn ?mmax_proper. - have p'q: q != p. - apply: contraNneq ntQ => def_q; rewrite (trivg_center_pgroup qQ) //. - apply/trivgP; rewrite -regPQ setIS // centS //. - by rewrite (norm_sub_max_pgroup (Hall_max sylQ)) ?def_q. - have EpP: P \in 'E_p^1(M) by apply/pnElemP. - have [|_ [// | abM]] := cent_Malpha_reg_tau1 maxM t1Mp p'q EpP ntQ nQP regPQ. - apply: contraNneq notMGL => uniqNQ. - by rewrite (eq_uniq_mmax uniqNQ) ?orbit_refl. - by rewrite joingC /alpha_core abM !(eq_pcore _ abM) => _ -> -> ->. -have bML_CMbP: forall M L, [predU \beta(M) & \beta(L)].-group 'C_(M`_\beta)(P). - move=> ? ?; apply: pgroupS (subsetIl _ _) (sub_pgroup _ (pcore_pgroup _ _)). - by move=> ?; rewrite !inE => ->. -have [H hallH sCMbP_H] := Hall_superset solCP (subsetIr _ _) (bML_CMbP M L). -have [[s _ rFH] [cPH bH _]] := (rank_witness 'F(H), and3P hallH). -have{sCMbP_H rFH cPH} piFHs: s \in \pi('F(H)). - rewrite -p_rank_gt0 -rFH rank_gt0 (trivg_Fitting (solvableS cPH solCP)). - by rewrite (subG1_contra sCMbP_H) //; case/and5P: hypQ. -without loss{bH} bMs: L u U M q Q maxM maxL notMGL notLGM t1Mp t1Lp sPM sPL - nQP nUP regPQ regPU sNQL sNUM hypQ hypU hallH / s \in \beta(M). -- move=> IH; have:= pnatPpi bH (piSg (Fitting_sub H) piFHs). - case/orP; [apply: IH hypQ hypU hallH | apply: IH hypU hypQ _] => //. - by apply: etrans (eq_pHall _ _ _) hallH => ?; apply: orbC. -without loss{bML_CMbP} sCMbP_H: H hallH piFHs / 'C_(M`_\beta)(P) \subset H. - have [x cPx sCMbP_Hx] := Hall_subJ solCP hallH (subsetIr _ _) (bML_CMbP M L). - by move=> IH; apply: IH sCMbP_Hx; rewrite ?pHallJ //= FittingJ cardJg. -pose X := 'O_s(H); have sylX := nilpotent_pcore_Hall s (Fitting_nil H). -have{piFHs sylX} ntX: X != 1. - by rewrite -rank_gt0 /= -p_core_Fitting (rank_Sylow sylX) p_rank_gt0. -have [[cPH bH _] [sXH nXH]] := (and3P hallH, andP (pcore_normal s H : X <| H)). -have [cPX sX] := (subset_trans sXH cPH, pcore_pgroup s H : s.-group X). -have{hypQ} [sylQ p'q bM'q ntCMbP] := and5P hypQ; apply: negP. -apply: subG1_contra (ntX); rewrite /= centY !subsetI (subset_trans _ cPH) //=. -have nsMbM : M`_\beta <| M := pcore_normal _ M; have [sMbM nMbM] := andP nsMbM. -have hallMb := Mbeta_Hall maxM; have [_ bMb _] := and3P hallMb. -have{ntX} sHM: H \subset M. - have [g sXMg]: exists g, X \subset M :^ g. - have [S sylS] := Sylow_exists s M`_\beta; have [sSMb _ _] := and3P sylS. - have sylS_G := subHall_Sylow (Mbeta_Hall_G maxM) bMs sylS. - have [g _ sXSg] := Sylow_subJ sylS_G (subsetT X) sX. - by exists g; rewrite (subset_trans sXSg) // conjSg (subset_trans sSMb). - have [t _ rFC] := rank_witness 'F('C_(M`_\beta)(P)). - pose Y := 'O_t('C_(M`_\beta)(P)). - have [sYC tY] := (pcore_sub t _ : Y \subset _, pcore_pgroup t _ : t.-group Y). - have sYMb := subset_trans sYC (subsetIl _ _); have bMY := pgroupS sYMb bMb. - have{rFC} ntY: Y != 1. - rewrite -rank_gt0 /= -p_core_Fitting. - rewrite (rank_Sylow (nilpotent_pcore_Hall t (Fitting_nil _))) -rFC. - by rewrite rank_gt0 (trivg_Fitting (solvableS (subsetIr _ _) solCP)). - have bMt: t \in \beta(M). - by rewrite (pnatPpi bMY) // -p_rank_gt0 -rank_pgroup ?rank_gt0. - have sHMg: H \subset M :^ g. - rewrite (subset_trans nXH) // beta_norm_sub_mmax ?mmaxJ // /psubgroup sXMg. - by rewrite (pi_pgroup sX) 1?betaJ. - have sYMg: Y \subset M :^ g := subset_trans (subset_trans sYC sCMbP_H) sHMg. - have sNY_M: 'N(Y) \subset M. - by rewrite beta_norm_sub_mmax // /psubgroup (subset_trans sYMb). - have [_ trCY _] := sigma_group_trans maxM (beta_sub_sigma maxM bMt) tY. - have [|| h cYh /= defMg] := (atransP2 trCY) M (M :^ g). - - by rewrite inE orbit_refl (subset_trans (normG _) sNY_M). - - by rewrite inE mem_orbit ?in_setT. - by rewrite defMg conjGid // (subsetP sNY_M) ?(subsetP (cent_sub _)) in sHMg. -have sXMb: X \subset M`_\beta. - by rewrite (sub_Hall_pcore hallMb) ?(subset_trans sXH sHM) ?(pi_pgroup sX). -rewrite sXMb (sameP commG1P eqP) /= -/X -subG1. -have [sQL [sQM qQ _]] := (subset_trans (normG Q) sNQL, and3P sylQ). -have nsLbL : L`_\beta <| L := pcore_normal _ L; have [sLbL nLbL] := andP nsLbL. -have nLbQ := subset_trans sQL nLbL. -have [<- ti_aLsM _] := sigma_disjoint maxL maxM notLGM. -rewrite subsetI (subset_trans _ (Mbeta_sub_Msigma maxM)) ?andbT; last first. - by rewrite (subset_trans (commgSS sXMb sQM)) // commg_subl nMbM. -have defQ: [~: Q, P] = Q. - rewrite -{2}(coprime_cent_prod nQP) ?(pgroup_sol qQ) ?regPQ ?mulg1 //. - by rewrite (p'nat_coprime (pi_pnat qQ _) pP). -suffices sXL: X \subset L. - apply: subset_trans (Mbeta_sub_Malpha L). - rewrite -quotient_sub1 ?comm_subG ?quotientR ?(subset_trans _ nLbL) //. - have <-: (M`_\beta :&: L) / L`_\beta :&: 'O_q(L^`(1) / L`_\beta) = 1. - rewrite coprime_TIg // coprime_morphl // (coprimeSg (subsetIl _ _)) //. - exact: pnat_coprime (pcore_pgroup _ _) (pi_pnat (pcore_pgroup _ _) _). - rewrite commg_subI // subsetI. - rewrite quotientS /=; last by rewrite subsetI sXMb. - by rewrite quotient_der ?gFnorm_trans ?normsG ?quotientS. - rewrite (sub_Hall_pcore (nilpotent_pcore_Hall _ (Mbeta_quo_nil _))) //. - rewrite quotient_pgroup ?quotient_norms //. - by rewrite normsI ?(subset_trans sQM nMbM) ?normsG. - by rewrite quotientS // -defQ commgSS // (subset_trans nQP). -have{hypU} [r bLr piHr]: exists2 r, r \in \beta(L) & r \in \pi(H). - have [_ _ _] := and5P hypU; rewrite -rank_gt0. - have [r _ ->] := rank_witness 'C_(L`_\beta)(P); rewrite p_rank_gt0 => piCr _. - have [piLb_r piCPr] := (piSg (subsetIl _ _) piCr, piSg (subsetIr _ _) piCr). - have bLr: r \in \beta(L) := pnatPpi (pcore_pgroup _ L) piLb_r. - exists r; rewrite //= (card_Hall hallH) pi_of_part // inE /= piCPr. - by rewrite inE /= bLr orbT. -have sM'r: r \notin \sigma(M). - by apply: contraFN (ti_aLsM r) => sMr; rewrite inE /= beta_sub_alpha. -have defM: M`_\beta * 'N_M(Q) = M. - have nMbQ := subset_trans sQM nMbM. - have nsMbQ_M: M`_\beta <*> Q <| M. - rewrite -{2}(quotientGK nsMbM) -quotientYK ?cosetpre_normal //. - suffices ->: Q / M`_\beta = 'O_q(M^`(1) / M`_\beta). - by rewrite quotient_der ?nMbM ?gFnormal_trans. - apply: nilpotent_Hall_pcore; first exact: Mbeta_quo_nil. - rewrite quotient_pHall // (pHall_subl _ _ sylQ) ?gFsub //. - by rewrite -defQ commgSS // (subset_trans nUP). - have sylQ_MbQ := pHall_subl (joing_subr _ Q) (normal_sub nsMbQ_M) sylQ. - rewrite -{3}(Frattini_arg nsMbQ_M sylQ_MbQ) /= norm_joinEr // -mulgA. - by congr (_ * _); rewrite mulSGid // subsetI sQM normG. -have [[sM'p _ not_pM'] [sL'p _]] := (and3P t1Mp, andP t1Lp). -have{not_pM'} [R ErR nQR]: exists2 R, R \in 'E_r^1('C_M(P)) & R \subset 'N(Q). - have p'r: r \in p^' by apply: contraNneq sL'p => <-; apply: beta_sub_sigma. - have p'M': p^'.-group M^`(1). - by rewrite p'groupEpi mem_primes (negPf not_pM') !andbF. - pose K := 'O_p^'(M); have [sKM nKM] := andP (pcore_normal _ M : K <| M). - have hallK: p^'.-Hall(M) K. - rewrite -(pquotient_pHall _ (der_normal 1 M)) ?quotient_pgroup //. - rewrite -pquotient_pcore ?der_normal // nilpotent_pcore_Hall //. - by rewrite abelian_nil ?der_abelian. - by rewrite (normalS _ sKM) ?pcore_max ?der_normal. - have sMbK: M`_\beta \subset K. - by rewrite (subset_trans (Mbeta_der1 maxM)) // pcore_max ?der_normal. - have coKP: coprime #|K| #|P| := p'nat_coprime (pcore_pgroup _ M) pP. - have [solK sNK] := (solvableS sKM (mmax_sol maxM), subsetIl K 'N(Q)). - have [nKP coNP] := (subset_trans sPM nKM, coprimeSg sNK coKP). - have nNP: P \subset 'N('N_K(Q)) by rewrite normsI // norms_norm. - have [S sylS nSP] := coprime_Hall_exists r nNP coNP (solvableS sNK solK). - have /subsetIP[sSK nQS]: S \subset 'N_K(Q) := pHall_sub sylS. - have sylS_K: r.-Sylow(K) S. - rewrite pHallE sSK /= -/K -(setIidPr sKM) -defM -group_modl // setIAC. - rewrite (setIidPr sKM) -LagrangeMr partnM // -(card_Hall sylS). - rewrite part_p'nat ?mul1n 1?(pnat_dvd (dvdn_indexg _ _)) //. - by apply: (pi_p'nat bMb); apply: contra sM'r; apply: beta_sub_sigma. - have rC: 'r_r('C_M(P)) > 0 by rewrite p_rank_gt0 (piSg _ piHr) // subsetI sHM. - have{rC} [R ErR] := p_rank_geP rC; have [sRcMP abelR _] := pnElemP ErR. - have{sRcMP abelR} [[sRM cPR] [rR _]] := (subsetIP sRcMP, andP abelR). - have nRP: P \subset 'N(R) by rewrite cents_norm 1?centsC. - have sRK: R \subset K by rewrite sub_Hall_pcore ?(pi_pgroup rR). - have [T [sylT nTP sRT]] := coprime_Hall_subset nKP coKP solK sRK rR nRP. - have [x cKPx defS] := coprime_Hall_trans nKP coKP solK sylS_K nSP sylT nTP. - rewrite -(conjGid (subsetP (setSI _ sKM) x cKPx)). - by exists (R :^ x)%G; rewrite ?pnElemJ ?(subset_trans _ nQS) // defS conjSg. -have [sRcMP abelR _] := pnElemP ErR; have ntR := nt_pnElem ErR isT. -have{sRcMP abelR} [[sRM cPR] [rR _]] := (subsetIP sRcMP, andP abelR). -have sNR_L: 'N(R) \subset L. - by rewrite beta_norm_sub_mmax /psubgroup ?(subset_trans nQR) ?(pi_pgroup rR). -have sPR_M: P <*> R \subset M by rewrite join_subG (subset_trans nUP). -have sM'_PR: \sigma(M)^'.-group (P <*> R). - by rewrite cent_joinEr // pgroupM (pi_pgroup rR) // (pi_pgroup pP). -have [E hallE sPRE] := Hall_superset (mmax_sol maxM) sPR_M sM'_PR. -have{sPRE} [sPE sRE] := joing_subP sPRE. -have EpP: P \in 'E_p^1(E) by apply/pnElemP. -have{ErR} ErR: R \in 'E_r^1('C_E(P)). - by rewrite -(setIidPr (pHall_sub hallE)) setIAC pnElemI inE ErR inE. -apply: subset_trans (cents_norm (subset_trans _ (subsetIr M`_\sigma _))) sNR_L. -apply: subset_trans (cent_tau1Elem_Msigma maxM hallE t1Mp EpP ErR). -by rewrite subsetI cPX (subset_trans sXMb) ?Mbeta_sub_Msigma. -Qed. - -(* This is B & G, Theorem 13.9. *) -Theorem sigma_partition M Mstar : - M \in 'M -> Mstar \in 'M -> gval Mstar \notin M :^: G -> - [predI \sigma(M) & \sigma(Mstar)] =i pred0. -Proof. -move: Mstar => L maxM maxL notMGL q; apply/andP=> [[/= sMq sLq]]. -have [E hallE] := ex_sigma_compl maxM; have [sEM sM'E _] := and3P hallE. -have [_ _ nMsE _] := sdprodP (sdprod_sigma maxM hallE). -have coMsE: coprime #|M`_\sigma| #|E| := pnat_coprime (pcore_pgroup _ _) sM'E. -have [|S sylS nSE] := coprime_Hall_exists q nMsE coMsE. - exact: solvableS (pcore_sub _ _) (mmax_sol maxM). -have [sSMs qS _] := and3P sylS. -have sylS_M := subHall_Sylow (Msigma_Hall maxM) sMq sylS. -have ntS: S :!=: 1. - by rewrite -rank_gt0 (rank_Sylow sylS_M) p_rank_gt0 sigma_sub_pi. -without loss sylS_L: L maxL sLq notMGL / q.-Sylow(L) S. - have sylS_G := sigma_Sylow_G maxM sMq sylS_M. - have [T sylT] := Sylow_exists q L; have sylT_G := sigma_Sylow_G maxL sLq sylT. - have [x Gx ->] := Sylow_trans sylT_G (sigma_Sylow_G maxM sMq sylS_M). - case/(_ (L :^ x)%G); rewrite ?mmaxJ ?sigmaJ ?pHallJ2 //. - by rewrite (orbit_transl _ (mem_orbit 'Js L Gx)). -have [[sSL _] [[E1 hallE1] [E3 hallE3]]] := (andP sylS_L, ex_tau13_compl hallE). -have [E2 hallE2 complEi] := ex_tau2_compl hallE hallE1 hallE3. -have E2_1: E2 :==: 1. - apply: contraR ntS; rewrite -rank_gt0; have [p _ ->] := rank_witness E2. - rewrite p_rank_gt0 => /(pnatPpi (pHall_pgroup hallE2))t2p. - have [A Ep2A _] := ex_tau2Elem hallE t2p. - have [_ _ _ ti_sM] := tau2_compl_context maxM hallE t2p Ep2A. - rewrite -subG1; have [<- _] := ti_sM L maxL notMGL; rewrite subsetI sSMs /=. - by rewrite (sub_Hall_pcore (Msigma_Hall maxL) sSL) (pi_pgroup qS). -have: E1 :!=: 1 by have [_ -> //] := sigma_compl_context maxM complEi. -rewrite -rank_gt0; have [p _ ->] := rank_witness E1; case/p_rank_geP=> P EpP. -have [[sPE1 abelP dimP] [sE1E t1E1 _]] := (pnElemP EpP, and3P hallE1). -have ntP: P :!=: 1 by rewrite (nt_pnElem EpP). -have piPp: p \in \pi(P) by rewrite -p_rank_gt0 ?p_rank_abelem ?dimP. -have t1Mp: p \in \tau1(M) by rewrite (pnatPpi _ (piSg sPE1 _)). -have sPE := subset_trans sPE1 sE1E; have sPM := subset_trans sPE sEM. -have [sNM sNL] := (norm_sigma_Sylow sMq sylS_M, norm_sigma_Sylow sLq sylS_L). -have nSP := subset_trans sPE nSE; have sPL := subset_trans nSP sNL. -have regPS: 'C_S(P) = 1. - apply: contraNeq (contra_orbit _ _ notMGL); rewrite -rank_gt0. - rewrite (rank_pgroup (pgroupS _ qS)) ?subsetIl //; case/p_rank_geP=> Q /=. - rewrite -(setIidPr sSMs) setIAC pnElemI; case/setIdP=> EqQ _. - have [_ uniqSq] := cent_cent_Msigma_tau1_uniq maxM hallE hallE1 sPE1 ntP EqQ. - by rewrite (eq_uniq_mmax (uniqSq S sylS) maxL sSL). -have t1Lp: p \in \tau1(L). - have not_cMsL_P: ~~ (P \subset 'C(M`_\sigma :&: L)). - apply: contra ntS => cMsL_P; rewrite -subG1 -regPS subsetIidl centsC. - by rewrite (subset_trans cMsL_P) ?centS // subsetI sSMs. - apply: contraR (not_cMsL_P) => t1L'p. - have [piEp piLp] := (piSg sPE piPp, piSg sPL piPp). - have [] := Msigma_setI_mmax_central maxM hallE maxL piEp piLp t1L'p _ notMGL. - apply: contraNneq not_cMsL_P; move/commG1P; rewrite centsC. - by apply: subset_trans; rewrite subsetI sPM. - by move->; rewrite ?(abelem_pgroup abelP) // subsetI sPM. -case: (@tau1_mmaxI_asymmetry M L p P q S q S) => //. - by rewrite !inE subsetI sPM sPL abelP dimP. -by rewrite (pHall_subl _ (subsetIl M L) sylS_M) // subsetI (pHall_sub sylS_M). -Qed. - -(* This is B & G, Theorem 13.10. *) -Theorem tau13_regular M E E1 E2 E3 p P : - M \in 'M -> sigma_complement M E E1 E2 E3 -> - P \in 'E_p^1(E1) -> ~~ (P \subset 'C(E3)) -> - [/\ (*a*) semiregular E3 E1, - (*b*) semiregular M`_\sigma E3 - & (*c*) 'C_(M`_\sigma)(P) != 1]. -Proof. -move=> maxM complEi EpP not_cE3P. -have nsMsM: M`_\sigma <| M := pcore_normal _ M; have [sMsM nMsM] := andP nsMsM. -have [hallMs sMaMs] := (Msigma_Hall maxM, Malpha_sub_Msigma maxM). -have [[sE3E' nsE3E] _ [_ cycE3] _ _] := sigma_compl_context maxM complEi. -have [hallE hallE1 _ hallE3] := complEi. -have [[_ sM_Ms _] [sEM sM'E _]] := (and3P hallMs, and3P hallE). -have [[sE1E t1E1 _] [sE3E t3E3 _] _] := (and3P hallE1, and3P hallE3). -have [sPE1 abelP dimP] := pnElemP EpP; have [pP _ _] := and3P abelP. -have [ntP t1MP] := (nt_pnElem EpP isT, pgroupS sPE1 t1E1). -have sPE := subset_trans sPE1 sE1E; have sPM := subset_trans sPE sEM. -have piPp: p \in \pi(P) by rewrite -p_rank_gt0 p_rank_abelem ?dimP. -have t1Mp: p \in \tau1(M) := pnatPpi t1MP piPp. -have [Q sylQ not_cPQ]: exists2 Q, Sylow E3 (gval Q) & ~~ (P \subset 'C(Q)). - apply/exists_inP; rewrite -negb_forall_in; apply: contra not_cE3P. - move/forall_inP=> cPE3; rewrite centsC -(Sylow_gen E3) gen_subG. - by apply/bigcupsP=> Q sylQ; rewrite centsC cPE3. -have{sylQ} [q q_pr sylQ] := SylowP _ _ sylQ; have [sQE3 qQ _] := and3P sylQ. -have ntQ: Q :!=: 1 by apply: contraNneq not_cPQ => ->; apply: cents1. -have t3Mq: q \in \tau3(M). - by rewrite (pnatPpi t3E3) // -p_rank_gt0 -(rank_Sylow sylQ) rank_gt0. -have nQP: P \subset 'N(Q). - rewrite (subset_trans sPE) ?normal_norm //. - by rewrite (char_normal_trans _ nsE3E) ?sub_cyclic_char. -have regPQ: 'C_Q(P) = 1. - apply: contraNeq not_cPQ; rewrite setIC => /meet_Ohm1. - rewrite setIC => /prime_meetG/=/implyP. - rewrite (Ohm1_cyclic_pgroup_prime (cyclicS sQE3 cycE3) qQ) // q_pr centsC. - apply: (coprime_odd_faithful_Ohm1 qQ) nQP _ (mFT_odd _). - exact: sub_pnat_coprime tau3'1 (pgroupS sQE3 t3E3) t1MP. -have sQE' := subset_trans sQE3 sE3E'. -have sQM := subset_trans (subset_trans sQE3 sE3E) sEM. -have [L maxNL] := mmax_exists (mFT_norm_proper ntQ (mFT_pgroup_proper qQ)). -have [maxL sNQL] := setIdP maxNL; have sQL := subset_trans (normG Q) sNQL. -have notMGL: gval L \notin M :^: G. - by apply: mmax_norm_notJ maxM maxL qQ sQM sNQL _; rewrite t3Mq !orbT. -have [ntCMaP tiCMaQP]: 'C_(M`_\alpha)(P) != 1 /\ 'C_(M`_\alpha)(Q <*> P) = 1. - have EpMP: P \in 'E_p^1(M) by apply/pnElemP. - have p'q: q != p by apply: contraNneq (tau3'1 t1Mp) => <-. - have [|_ [] //] := cent_Malpha_reg_tau1 maxM t1Mp p'q EpMP ntQ nQP regPQ. - by apply: contraTneq maxNL => ->; rewrite inE (contra_orbit _ _ notMGL). - have sM'q: q \in \sigma(M)^' by case/andP: t3Mq. - exact: subHall_Sylow hallE sM'q (subHall_Sylow hallE3 t3Mq sylQ). -split=> [x E1x | x E3x |]; last exact: subG1_contra (setSI _ sMaMs) ntCMaP. - apply: contraNeq ntCMaP => ntCE3X. - have prE31: semiprime M`_\sigma (E3 <*> E1). - apply: tau13_primact_Msigma maxM complEi _ => regE13. - by rewrite regE13 ?eqxx in ntCE3X. - rewrite -subG1 -tiCMaQP /= -(setIidPl sMaMs) -!setIA setIS //. - rewrite (cent_semiprime prE31 _ ntP) ?setIS ?centS //=. - by rewrite -!genM_join genS ?mulgSS. - by rewrite sub_gen // subsetU // sPE1 orbT. -have prE3 := tau3_primact_Msigma maxM hallE hallE3. -apply/eqP; apply/idPn; rewrite prE3 {x E3x}// -rank_gt0. -have [u _ -> ruC] := rank_witness 'C_(M`_\sigma)(E3). -have sCMs := subsetIl M`_\sigma 'C(E3). -have sMu: u \in \sigma(M) by rewrite (pnatPpi (pgroupS sCMs _)) -?p_rank_gt0. -have nCE: E \subset 'N('C_(M`_\sigma)(E3)). - by rewrite normsI ?norms_cent ?(normal_norm nsE3E) // (subset_trans sEM). -have coCE := coprimeSg sCMs (pnat_coprime (pcore_pgroup _ _) sM'E). -have solC := solvableS (subset_trans sCMs sMsM) (mmax_sol maxM). -have{nCE coCE solC} [U sylU nUE] := coprime_Hall_exists u nCE coCE solC. -have ntU: U :!=: 1 by rewrite -rank_gt0 (rank_Sylow sylU). -have cMsL_Q: Q \subset 'C(M`_\sigma :&: L). - have t13q: (q \in \tau1(M)) || (q \in \tau3(M)) by rewrite t3Mq orbT. - have [-> //] := cent_norm_tau13_mmax maxM hallE t13q sQM qQ maxNL. - by rewrite subsetI sQM. -rewrite /= -(cent_semiprime prE3 sQE3 ntQ) in sylU. -have [sUMs cQU] := subsetIP (pHall_sub sylU). -have{cMsL_Q} sylU_MsL: u.-Sylow(M`_\sigma :&: L) U. - apply: pHall_subl sylU; last by rewrite subsetI subsetIl centsC. - by rewrite subsetI sUMs (subset_trans (cents_norm _) sNQL). -have sylU_ML: u.-Sylow(M :&: L) U. - apply: subHall_Sylow sMu sylU_MsL. - by rewrite /= -(setIidPl sMsM) -setIA (setI_normal_Hall nsMsM) ?subsetIl. -have [sUML uU _] := and3P sylU_ML; have{sUML} [sUM sUL] := subsetIP sUML. -have [sNUM regPU]: 'N(U) \subset M /\ 'C_U(P) = 1. - have [bMu | bM'u] := boolP (u \in \beta(M)). - have [bM_U sMbMa] := (pi_pgroup uU bMu, Mbeta_sub_Malpha M). - split; first by rewrite beta_norm_sub_mmax /psubgroup ?sUM. - apply/trivgP; rewrite -tiCMaQP centY setIA setSI // subsetI cQU. - by rewrite (subset_trans _ sMbMa) // (sub_Hall_pcore (Mbeta_Hall maxM)). - have sylU_Ms: u.-Sylow(M`_\sigma) U. - have [H hallH cHE'] := der_compl_cent_beta' maxM hallE. - rewrite pHallE sUMs (card_Hall sylU) eqn_dvd. - rewrite partn_dvd ?cardG_gt0 ?cardSg ?subsetIl //=. - rewrite -(@partn_part u \beta(M)^') => [|v /eqnP-> //]. - rewrite -(card_Hall hallH) partn_dvd ?cardG_gt0 ?cardSg //. - by rewrite subsetI (pHall_sub hallH) centsC (subset_trans sQE'). - split; first exact: norm_sigma_Sylow (subHall_Sylow hallMs sMu sylU_Ms). - apply: contraNeq (contra_orbit _ _ notMGL); rewrite -rank_gt0. - rewrite (rank_pgroup (pgroupS _ uU)) ?subsetIl // => /p_rank_geP[X] /=. - rewrite -(setIidPr sUMs) setIAC pnElemI -setIdE => /setIdP[EuX sXU]. - have [_ uniqU] := cent_cent_Msigma_tau1_uniq maxM hallE hallE1 sPE1 ntP EuX. - by rewrite (eq_uniq_mmax (uniqU U sylU_Ms) maxL). -have sPL := subset_trans nQP sNQL. -have sPML: P \subset M :&: L by apply/subsetIP. -have t1Lp: p \in \tau1(L). - have not_cMsL_P: ~~ (P \subset 'C(M`_\sigma :&: L)). - apply: contra ntU => cMsL_P; rewrite -subG1 -regPU subsetIidl. - by rewrite centsC (centsS (pHall_sub sylU_MsL)). - apply: contraR (not_cMsL_P) => t1L'p. - have [piEp piLp] := (piSg sPE piPp, piSg sPL piPp). - case: (Msigma_setI_mmax_central maxM hallE maxL piEp piLp) => // [|->] //. - apply: contraNneq not_cMsL_P => /commG1P. - by rewrite centsC; apply: subset_trans sPML. -have EpMLP: P \in 'E_p^1(M :&: L) by apply/pnElemP. -case: (@tau1_mmaxI_asymmetry M L p P q Q u U) => //. -have [sylQ_E [sM'q _]] := (subHall_Sylow hallE3 t3Mq sylQ, andP t3Mq). -have sylQ_M := subHall_Sylow hallE sM'q sylQ_E. -have sQML: Q \subset M :&: L by apply/subsetIP. -by rewrite (subset_trans sPE nUE) (pHall_subl sQML _ sylQ_M) ?subsetIl. -Qed. - -(* This is B & G, Corollary 13.11. *) -Corollary tau13_nonregular M E E1 E2 E3 : - M \in 'M -> sigma_complement M E E1 E2 E3 -> ~ semiregular M`_\sigma E3 -> - [/\ (*a*) E1 :!=: 1, - (*b*) E3 ><| E1 = E, - (*c*) semiprime M`_\sigma E - & (*d*) forall X, X \in 'E^1(E) -> X <| E]. -Proof. -move=> maxM complEi not_regE3Ms. -have [hallE hallE1 hallE2 hallE3 _] := complEi. -have [[sE1E t1E1 _] [sE3E t3E3 _]] := (and3P hallE1, and3P hallE3). -have{hallE2} E2_1: E2 :==: 1. - apply/idPn; rewrite -rank_gt0; have [p _ ->] := rank_witness E2. - rewrite p_rank_gt0 => /(pnatPpi (pHall_pgroup hallE2))t2p. - have [A Ep2A _] := ex_tau2Elem hallE t2p. - by apply: not_regE3Ms; case: (tau2_regular maxM complEi t2p Ep2A). -have [_ ntE1 [cycE1 cycE3] [defE _] _] := sigma_compl_context maxM complEi. -rewrite (eqP E2_1) sdprod1g in defE; have{ntE1} ntE1 := ntE1 E2_1. -have [nsE3E _ mulE31 nE31 _] := sdprod_context defE. -have cE3E1 P: P \in 'E^1(E1) -> P \subset 'C(E3). - by case/nElemP=> p EpP; apply/idPn => /(tau13_regular maxM complEi EpP)[]. -split=> // [|X EpX]. - rewrite -mulE31 -norm_joinEr //. - have [-> | ntE3] := eqsVneq E3 1. - by rewrite joing1G; apply: (tau1_primact_Msigma maxM hallE hallE1). - apply: tau13_primact_Msigma maxM complEi _ => regE13. - have:= ntE1; rewrite -rank_gt0; case/rank_geP=> P EpP. - have cPE3: E3 \subset 'C(P) by rewrite centsC cE3E1. - have [p Ep1P] := nElemP EpP; have [sPE1 _ _] := pnElemP Ep1P. - have ntP: P :!=: 1 by apply: (nt_pnElem Ep1P). - by case/negP: ntE3; rewrite -(setIidPl cPE3) (cent_semiregular regE13 _ ntP). -have [p Ep1X] := nElemP EpX; have [sXE abelX oX] := pnElemPcard Ep1X. -have [p_pr ntX] := (pnElem_prime Ep1X, nt_pnElem Ep1X isT). -have tau31p: p \in [predU \tau3(M) & \tau1(M)]. - rewrite (pgroupP (pgroupS sXE _)) ?oX // -mulE31 pgroupM. - rewrite (sub_pgroup _ t3E3) => [|q t3q]; last by rewrite inE /= t3q. - by rewrite (sub_pgroup _ t1E1) // => q t1q; rewrite inE /= t1q orbT. -have [/= t3p | t1p] := orP tau31p. - rewrite (char_normal_trans _ nsE3E) ?sub_cyclic_char //. - by rewrite (sub_normal_Hall hallE3) // (pi_pgroup (abelem_pgroup abelX)). -have t1X := pi_pgroup (abelem_pgroup abelX) t1p. -have [e Ee sXeE1] := Hall_Jsub (sigma_compl_sol hallE) hallE1 sXE t1X. -rewrite /normal sXE -(conjSg _ _ e) conjGid //= -normJ -mulE31 mulG_subG. -rewrite andbC sub_abelian_norm ?cyclic_abelian ?cents_norm // centsC cE3E1 //. -rewrite -(setIidPr sE1E) nElemI !inE sXeE1 andbT. -by rewrite -(pnElemJ e) conjGid // def_pnElem in Ep1X; case/setIP: Ep1X. -Qed. - -(* This is B & G, Lemma 13.12. *) -Lemma tau12_regular M E p q P A : - M \in 'M -> \sigma(M)^'.-Hall(M) E -> - p \in \tau1(M) -> P \in 'E_p^1(E) -> q \in \tau2(M) -> A \in 'E_q^2(E) -> - 'C_A(P) != 1 -> - 'C_(M`_\sigma)(P) = 1. -Proof. -move=> maxM hallE t1p EpP t2q Eq2A ntCAP; apply: contraNeq (ntCAP) => ntCMsP. -have [[nsAE _] _ uniq_cMs _] := tau2_compl_context maxM hallE t2q Eq2A. -have [sPE abelP dimP] := pnElemP EpP; have [pP _] := andP abelP. -have ntP: P :!=: 1 by apply: nt_pnElem EpP _. -have [solE t1P] := (sigma_compl_sol hallE, pi_pgroup pP t1p). -have [E1 hallE1 sPE1] := Hall_superset solE sPE t1P. -have [_ [E3 hallE3]] := ex_tau13_compl hallE. -have [E2 _ complEi] := ex_tau2_compl hallE hallE1 hallE3. -have not_cAP: ~~ (P \subset 'C(A)). - have [_ regCE1A _] := tau2_regular maxM complEi t2q Eq2A. - apply: contra ntCMsP => cAP; rewrite (cent_semiregular regCE1A _ ntP) //. - exact/subsetIP. -have [sAE abelA dimA] := pnElemP Eq2A; have [qA _] := andP abelA. -pose Y := 'C_A(P)%G; have{abelA dimA} EqY: Y \in 'E_q^1('C_E(P)). - have sYA: Y \subset A := subsetIl A _; have abelY := abelemS sYA abelA. - rewrite !inE setSI // abelY eqn_leq -{2}rank_abelem // rank_gt0 -ltnS -dimA. - by rewrite properG_ltn_log //= /proper subsetIl subsetIidl centsC. -have ntCMsY: 'C_(M`_\sigma)(Y) != 1. - by apply: subG1_contra ntCMsP; apply: cent_tau1Elem_Msigma t1p EpP EqY. -have EqEY: Y \in 'E_q^1(E) by rewrite pnElemI in EqY; case/setIP: EqY. -have uniqCY := uniq_cMs _ EqEY ntCMsY. -have [ntA nAE] := (nt_pnElem Eq2A isT, normal_norm nsAE). -have [L maxNL] := mmax_exists (mFT_norm_proper ntA (mFT_pgroup_proper qA)). -have [sLq t12Lp]: q \in \sigma(L) /\ (p \in \tau1(L)) || (p \in \tau2(L)). - have [sLt2 t12cA' _] := primes_norm_tau2Elem maxM hallE t2q Eq2A maxNL. - split; first by have /andP[] := sLt2 q t2q. - apply: pnatPpi (pgroupS (quotientS _ sPE) t12cA') _. - rewrite -p_rank_gt0 -rank_pgroup ?quotient_pgroup // rank_gt0. - rewrite -subG1 quotient_sub1 ?subsetI ?sPE // (subset_trans sPE) //. - by rewrite normsI ?normG ?norms_cent. -have [maxL sNL] := setIdP maxNL; have sEL := subset_trans nAE sNL. -have sL'p: p \in \sigma(L)^' by move: t12Lp; rewrite -andb_orr => /andP[]. -have [sPL sL'P] := (subset_trans sPE sEL, pi_pgroup pP sL'p). -have{sL'P} [F hallF sPF] := Hall_superset (mmax_sol maxL) sPL sL'P. -have solF := sigma_compl_sol hallF. -have [sAL sL_A] := (subset_trans (normG A) sNL, pi_pgroup qA sLq). -have sALs: A \subset L`_\sigma by rewrite (sub_Hall_pcore (Msigma_Hall maxL)). -have neqLM: L != M by apply: contraTneq sLq => ->; case/andP: t2q. -have{t12Lp} [t1Lp | t2Lp] := orP t12Lp. - have [F1 hallF1 sPF1] := Hall_superset solF sPF (pi_pgroup pP t1Lp). - have EqLsY: Y \in 'E_q^1('C_(L`_\sigma)(P)). - by rewrite !inE setSI //; case/pnElemP: EqY => _ -> ->. - have [defL _] := cent_cent_Msigma_tau1_uniq maxL hallF hallF1 sPF1 ntP EqLsY. - by rewrite -in_set1 -uniqCY defL set11 in neqLM. -have sCPL: 'C(P) \subset L. - have [B Ep2B _] := ex_tau2Elem hallF t2Lp. - have EpFP: P \in 'E_p^1(F) by apply/pnElemP. - have [_ _ uniq_cLs _] := tau2_compl_context maxL hallF t2Lp Ep2B. - by case/mem_uniq_mmax: (uniq_cLs _ EpFP (subG1_contra (setSI _ sALs) ntCAP)). -have Eq2MA: A \in 'E_q^2(M). - by move: Eq2A; rewrite -(setIidPr (pHall_sub hallE)) pnElemI => /setIP[]. -have [_ _ _ tiMsL _] := tau2_context maxM t2q Eq2MA. -by case/negP: ntCMsP; rewrite -subG1 -(tiMsL L) ?setIS // 3!inE neqLM maxL. -Qed. - -(* This is B & G, Lemma 13.13. *) -Lemma tau13_nonregular_sigma M E p P : - M \in 'M -> \sigma(M)^'.-Hall(M) E -> - P \in 'E_p^1(E) -> (p \in \tau1(M)) || (p \in \tau3(M)) -> - 'C_(M`_\sigma)(P) != 1 -> - {in 'M('N(P)), forall Mstar, p \in \sigma(Mstar)}. -Proof. -move=> maxM hallE EpP t13Mp ntCMsP L maxNL /=. -have [maxL sNL] := setIdP maxNL. -have [sPE abelP dimP] := pnElemP EpP; have [pP _] := andP abelP. -have [solE ntP] := (sigma_compl_sol hallE, nt_pnElem EpP isT). -have /orP[// | t2Lp] := prime_class_mmax_norm maxL pP sNL. -have:= ntCMsP; rewrite -rank_gt0 => /rank_geP[Q /nElemP[q EqQ]]. -have [sQcMsP abelQ dimQ] := pnElemP EqQ; have [sQMs cPQ] := subsetIP sQcMsP. -have piQq: q \in \pi(Q) by rewrite -p_rank_gt0 p_rank_abelem ?dimQ. -have sMq: q \in \sigma(M) := pnatPpi (pgroupS sQMs (pcore_pgroup _ M)) piQq. -have rpM: 'r_p(M) = 1%N by move: t13Mp; rewrite -2!andb_orr andbCA; case: eqP. -have sL'q: q \notin \sigma(L). - have notMGL: gval L \notin M :^: G. - by apply: contraL t2Lp => /imsetP[x _ ->]; rewrite tau2J 2!inE rpM andbF. - by apply: contraFN (sigma_partition maxM maxL notMGL q) => sLq; apply/andP. -have [[sL'p _] [qQ _]] := (andP t2Lp, andP abelQ). -have sL'PQ: \sigma(L)^'.-group (P <*> Q). - by rewrite cent_joinEr // pgroupM (pi_pgroup pP) // (pi_pgroup qQ). -have sPQ_L: P <*> Q \subset L. - by rewrite (subset_trans _ sNL) // join_subG normG cents_norm. -have{sPQ_L sL'PQ} [F hallF sPQF] := Hall_superset (mmax_sol maxL) sPQ_L sL'PQ. -have{sPQF} [sPF sQF] := joing_subP sPQF. -have [A Ep2A _] := ex_tau2Elem hallF t2Lp. -have [[nsAF defA1] _ _ _] := tau2_compl_context maxL hallF t2Lp Ep2A. -have EpAP: P \in 'E_p^1(A) by rewrite -defA1; apply/pnElemP. -have{EpAP} sPA: P \subset A by case/pnElemP: EpAP. -have sCQM: 'C(Q) \subset M. - suffices: 'M('C(Q)) = [set M] by case/mem_uniq_mmax. - have [t1Mp | t3Mp] := orP t13Mp. - have [E1 hallE1 sPE1] := Hall_superset solE sPE (pi_pgroup pP t1Mp). - by have [] := cent_cent_Msigma_tau1_uniq maxM hallE hallE1 sPE1 ntP EqQ. - have [E3 hallE3 sPE3] := Hall_superset solE sPE (pi_pgroup pP t3Mp). - have [[E1 hallE1] _] := ex_tau13_compl hallE; have [sE1E _] := andP hallE1. - have [E2 _ complEi] := ex_tau2_compl hallE hallE1 hallE3. - have [regE3 | ntE1 _ prE _] := tau13_nonregular maxM complEi. - by rewrite (cent_semiregular regE3 sPE3 ntP) eqxx in ntCMsP. - rewrite /= (cent_semiprime prE) // -(cent_semiprime prE sE1E ntE1) in EqQ. - by have [] := cent_cent_Msigma_tau1_uniq maxM hallE hallE1 _ ntE1 EqQ. -have not_cQA: ~~ (A \subset 'C(Q)). - have [_ abelA dimA] := pnElemP Ep2A; apply: contraFN (ltnn 1) => cQA. - by rewrite -dimA -p_rank_abelem // -rpM p_rankS ?(subset_trans cQA sCQM). -have t1Lq: q \in \tau1(L). - have [_ nsCF t1Fb] := tau1_cent_tau2Elem_factor maxL hallF t2Lp Ep2A. - rewrite (pnatPpi (pgroupS (quotientS _ sQF) t1Fb)) //. - rewrite -p_rank_gt0 -rank_pgroup ?quotient_pgroup // rank_gt0. - rewrite -subG1 quotient_sub1 ?(subset_trans _ (normal_norm nsCF)) //. - by rewrite subsetI sQF centsC. -have defP: 'C_A(Q) = P. - apply/eqP; rewrite eq_sym eqEcard subsetI sPA centsC cPQ /=. - have [_ abelA dimA] := pnElemP Ep2A; have [pA _] := andP abelA. - rewrite (card_pgroup (pgroupS _ pA)) ?subsetIl // (card_pgroup pP) dimP. - rewrite leq_exp2l ?prime_gt1 ?(pnElem_prime EpP) //. - by rewrite -ltnS -dimA properG_ltn_log // /proper subsetIl subsetIidl. -have EqFQ: Q \in 'E_q^1(F) by apply/pnElemP. -have regQLs: 'C_(L`_\sigma)(Q) = 1. - by rewrite (tau12_regular maxL hallF t1Lq EqFQ t2Lp Ep2A) // defP. -have ntAQ: [~: A, Q] != 1 by rewrite (sameP eqP commG1P). -have [_ _ [_]] := tau1_act_tau2 maxL hallF t2Lp Ep2A t1Lq EqFQ regQLs ntAQ. -by case/negP; rewrite /= defP (subset_trans (cent_sub P)). -Qed. - -End Section13. - |
