# Large Nilpotent Subgroups of Sporadic Simple Groups

### THOMAS BREUER
Lehrstuhl D für Mathematik
RWTH, 52056 Aachen, Germany

### June 6th, 2009

We show that any nontrivial nilpotent subgroup U in a sporadic simple group G satisfies |U| ·|NG(U)| < |G|. The proof uses the information in the ATLAS of Finite Groups [CCN+85] and the GAP system [GAP04], in particular its Character Table Library [Bre04] and its library of Tables of Marks.

## 1 The Result

The aim of this writeup is to show the following statement.
Proposition 1 Let G be a sporadic simple group, let U be a nontrivial nilpotent subgroup in G, and let NG(U) denote the normalizer of U in G. Then |U| ·|NG(U)| < |G| holds.
The following criteria are sufficient to prove Proposition 1. Note that we are interested in an argument that uses only information about the character tables of the sporadic simple groups and of their maximal subgroups.
Lemma 2 Let G be a nonabelian finite simple group, and suppose that U is a nontrivial nilpotent subgroup of G such that |U| ·|NG(U)| ≥ |G| holds. Let Π = { p1, p2, …, pn } be the set of prime divisors of |U|, and set n = ∏p ∈ Π p.

(a) G contains an element g of order n and a maximal subgroup M with the properties g ∈ Z(U) and NG(U) ≤ M. Set c: = gcd(|CG(g)|Π, |M|), where |CG(g)|Π denotes the largest divisor of the order of the centralizer of g in G whose prime divisors are elements of the set Π. Then we have |U| ≤ c and hence c ·|M| ≥ |G|, in particular |M|2 ≥ |G|.
(b) If (g, M) is as in part (a) then one of the following holds.

(b1) U is normal in M, and the Fitting subgroup Fit(M) of M satisfies |Fit(M)| ·|M| ≥ |G|.
(b2) U is not normal in M, so NG(U) is a proper subgroup of M, in particular |G| ≤ |U| ·|M|/2 ≤ c ·|M| / 2 holds.

(c) Let (g, M) be as in part (b2) and assume that M contains a normal subgroup K such that [M]: = M/K is an almost simple group with socle S, i. e., [M] has a nonabelian simple normal subgroup S such that C[M](S) is trivial. Then either U ≤ K holds, and hence |K| ·|M| ≥ |G|, or we are in the following situation.
The group [U]: = U K / K is a nontrivial nilpotent normal subgroup of [N]: = NG(U) K / K, and H: = S ∩[N] is a proper subgroup of S. The latter statement holds because otherwise S ∩[U] would be normal in S and thus would be trivial, which would imply that S would centralize [U].
As a consequence, |[N]| divides |[M]/S| ·|H| = |[M]| / [S:H], in particular, [S:H] ≤ |[M]| / |[N]| = |M| / |NG(U) K| ≤ |M| / |NG(U)| ≤ |M| ·|U| / |G| ≤ c / [G:M] holds.

We will apply Lemma 2 as follows.
From the character tables of G and M, the value |Fit(M)| and the maximal possible c can be computed. If part (a) of the lemma applies then we verify that part (b1) does not apply, and that either (b2) or (c) yields a contradiction. Note that we can determine from the character table of M whether M has a normal subgroup K such that M/K is almost simple, and in this case we can compute the order of the socle S of M/K.
For proving the nonexistence of the subgroup H in the situation of part (c), we will show that all subgroups of [M] of index up to d: = c ·[[M]:S] / [G:M] contain S. For that, we will compute the complete list of those possible permutation characters of [M] whose degree is at most d, and then check that the kernels of these characters contain S.
(Note that these computations are cheap because the bound d is small in the cases that occur. There are easier criteria for proving the nonexistence of a subgroup of index at most d in a simple group S, for example in the case |S| > d! / 2 or if the smallest nontrivial irreducible degree of S is at least d; but these criteria do not suffice in our situation.)
We illustrate the application of Lemma 2 with some examples.

J1:
  The first Janko group J1 (see [CCN+85,p. 36]) has order 175 560, and the largest maximal subgroup has order 660. The largest centralizer of a nonidentity element in J1 has order 120, and 660 ·120 = 79 200 < |J1|. Thus J1 satisfies Proposition 1.
𝕄:
  For the Monster group 𝕄 (see [CCN+85,p. 234]), we read off from the list [Wil] of maximal subgroups that the only maximal subgroups M of 𝕄 with the property |M|2 ≥ |𝕄| have the structure 2.B. Already for the second largest maximal subgroups, with the structure 21+24.Co1, the order is smaller than the index in the Monster.
  Only elements g from the classes `2A`, `2B`, and `3A` have the property that the product of |2.B| and the order of the centralizer of g in 𝕄 is not smaller than |𝕄|. So U can be only a 2- or a 3-subgroup of 2.B. However, the 2-part and the 3-part of |2.B| are 242 and 313, respectively, which are smaller than the index of 2.B in 𝕄. Thus 𝕄 satisfies Proposition 1.
Fi23:
  We show that no counterexample to Proposition 1 can arise from maximal subgroups M of the type O8+(3):S3 in the Fischer group Fi23 (see [CCN+85,p. 177]). Several element centralizers in G satisfy Lemma 2 (a), the largest value c arises from elements in the class `6B`, whose centralizers have order 28 ·39, which divides |M|. So |U| ≤ 28 ·39, and a possible counterexample to Proposition 1 must satisfy |NG(U)| ≥ |G| / (28 ·39) = 811 588 377 600. We have |M| = 29 713 078 886 400, which is less than 37 times this minimal order required for NG(U). However, the intersection H of this group with the simple subgroup S ≅ O8+(3) in M cannot be at most 36, because the largest maximal subgroups in S have index 1 080 (see [CCN+85,p. 140]). Arguing not with S but with M, we can show -using only the character table of M- that all proper subgroups of index less than 37 ·6 in M contain S.

## 2 The Proof

The following GAP function utilizes Lemma 2. Its input are the GAP character table `tbl` of a group G, say, and a list `maxesinfo` of character tables of maximal subgroups of G, covering at least all those maximal subgroups M for which |M|2 ≥ |G| holds.
The idea is to collect pairs (M, g) that satisfy part (a) of Lemma 2, and then to show that they do not satisfy part (b) or part (c). For each maximal subgroup M that admits elements g as in Lemma 2, information is printed how this candidate is excluded.
The function returns a list of length three. The first entry is `true` if the criteria of Lemma 2 are sufficient to prove that Proposition 1 is true for G, and `false` otherwise. The second entry is the name of G, and the third entry in the number of maximal subgroups M for which an element g as in Lemma 2 (a) exists.

        gap> ApplyTheLemma:= function( tbl, maxesinfo )
        >     local Gname, Gsize, cents, orders, result, Mtbl, Msize, maxc, i, pi,
        >           pipart, c, Mclasslengths, Fit, excluded, Kclasses, Mbar, Ksize,
        >           Sclasses, Ssize, d;
        >     Gname:= Identifier( tbl );
        >     Gsize:= Size( tbl );
        >     cents:= SizesCentralizers( tbl );
        >     orders:= OrdersClassRepresentatives( tbl );
        >     result:= [ true, Gname, 0 ];
        >     # Run over the relevant maximal subgroups.
        >     for Mtbl in maxesinfo do
        >       Msize:= Size( Mtbl );
        >       # Run over nonidentity class representatives g of squarefree order,
        >       # compute the largest c that occurs.
        >       maxc:= 1;
        >       for i in [ 2 .. NrConjugacyClasses( tbl ) ] do
        >         pi:= Factors( orders[i] );
        >         if IsSet( pi ) then
        >           # The elements in class `i' have squarefree order.
        >           pipart:= Product( Filtered( Factors( cents[i] ),
        >                                       x -> x in pi ) );
        >           c:= Gcd( pipart, Msize );
        >           if maxc < c then
        >             maxc:= c;
        >           fi;
        >         fi;
        >       od;
        >       if maxc * Msize >= Gsize then
        >         # Criterion (a) is satisfied, try to exclude (b) and (c).
        >         result[3]:= result[3] + 1;
        >         Print( Gname, ": consider M = ", Identifier( Mtbl ),
        >                ", c = ", StringPP( maxc ),
        >                ", c * |M| / |G| >= ", Int( maxc * Msize / Gsize ), "\n" );
        >         Mclasslengths:= SizesConjugacyClasses( Mtbl );
        >         Fit:= Mclasslengths{ ClassPositionsOfFittingSubgroup( Mtbl ) };
        >         if Sum( Fit ) * Msize >= Gsize then
        >           # Criterion (b1) is satisfied.
        >           Print( Gname, ": not excludable by (b1)\n" );
        >           result[1]:= false;
        >         elif maxc * Msize < 2 * Gsize then
        >           # Criterion (b2) is not satisfied.
        >           Print( Gname, ":     excluded by (b2)\n" );
        >         else
        >           # Run over the normal subgroups of M.
        >           excluded:= false;
        >           for Kclasses in ClassPositionsOfNormalSubgroups( Mtbl ) do
        >             Mbar:= Mtbl / Kclasses;
        >             Ksize:= Sum( Mclasslengths{ Kclasses } );
        >             if IsAlmostSimpleCharacterTable( Mbar ) and
        >                Ksize * Msize < Gsize then
        >               # We are in the situation of criterion (c).
        >               # The socle is the unique minimal normal subgroup.
        >               Sclasses:= ClassPositionsOfMinimalNormalSubgroups(
        >                              Mbar )[1];
        >               Ssize:= Sum( SizesConjugacyClasses( Mbar ){ Sclasses } );
        >               d:= Int( maxc * Msize * Size( Mbar ) / ( Gsize * Ssize ) );
        >               # Try to show that all subgroups of index up to d in Mbar
        >               # contain the socle.
        >               if ForAll( [ 2 .. d ],
        >                    n -> ForAll( PermChars( Mbar, rec( torso:= [ n ] ) ),
        >                           chi -> IsSubset( ClassPositionsOfKernel( chi ),
        >                                            Sclasses ) ) ) then
        >                 Print( Gname, ":     excluded by (c), |K| = ",
        >                        StringPP( Ksize ), ", degree bound ", d, "\n" );
        >                 excluded:= true;
        >                 break;
        >               fi;
        >             fi;
        >           od;
        >           if not excluded then
        >             Print( Gname, ": not excludable by (c)\n" );
        >             result[1]:= false;
        >           fi;
        >         fi;
        >       fi;
        >     od;
        >     return result;
        > end;;

So our proof relies on the classifications of maximal subgroups of sporadic simple groups, see [CCN+85] and [BN95].
The GAP Character Table Library [Bre04] contains the character tables of the sporadic simple groups and of their maximal subgroups, except that not all character tables of maximal subgroups of the Monster group are available yet. (See Section 1 for the treatment of the Monster group.)
Since the GAP Character Table Library is used for the computations in this section, we first load this package.

        gap> LoadPackage( "ctbllib" );
        true

Now we apply the function to the sporadic simple groups.

        gap> info:= [];;
        gap> for name in AllCharacterTableNames( IsSporadicSimple, true ) do
        >      tbl:= CharacterTable( name );
        >      if HasMaxes( tbl ) then
        >        mx:= List( Maxes( tbl ), CharacterTable );
        >      elif name = "M" then
        >        mx:= [ CharacterTable( "2.B" ) ];
        >      else
        >        Error( "this should not happen ...");
        >      fi;
        >      Add( info, ApplyTheLemma( tbl, mx ) );
        >    od;
        B: consider M = 2.2E6(2).2, c = 2^38, c * |M| / |G| >= 20
        B:     excluded by (c), |K| = 2, degree bound 40
        Co1: consider M = Co2, c = 2^13*3^5, c * |M| / |G| >= 20
        Co1:     excluded by (c), |K| = 1, degree bound 20
        Co1: consider M = 3.Suz.2, c = 2^13*3^5, c * |M| / |G| >= 1
        Co1:     excluded by (b2)
        Co2: consider M = U6(2).2, c = 2^16, c * |M| / |G| >= 28
        Co2:     excluded by (c), |K| = 1, degree bound 56
        Co2: consider M = 2^10:m22:2, c = 2^18, c * |M| / |G| >= 5
        Co2:     excluded by (c), |K| = 2^10, degree bound 11
        Co2: consider M = 2^1+8:s6f2, c = 2^18, c * |M| / |G| >= 4
        Co2:     excluded by (c), |K| = 2^9, degree bound 4
        Co3: consider M = McL.2, c = 2^4*3^4, c * |M| / |G| >= 4
        Co3:     excluded by (c), |K| = 1, degree bound 9
        F3+: consider M = Fi23, c = 2^9*3^9, c * |M| / |G| >= 32
        F3+:     excluded by (c), |K| = 1, degree bound 32
        Fi22: consider M = 2.U6(2), c = 2^7*3^6, c * |M| / |G| >= 26
        Fi22:     excluded by (c), |K| = 2, degree bound 26
        Fi22: consider M = O7(3), c = 2^7*3^6, c * |M| / |G| >= 6
        Fi22:     excluded by (c), |K| = 1, degree bound 6
        Fi22: consider M = Fi22M3, c = 2^7*3^6, c * |M| / |G| >= 6
        Fi22:     excluded by (c), |K| = 1, degree bound 6
        Fi22: consider M = O8+(2).3.2, c = 2^7*3^6, c * |M| / |G| >= 1
        Fi22:     excluded by (b2)
        Fi23: consider M = 2.Fi22, c = 2^8*3^9, c * |M| / |G| >= 159
        Fi23:     excluded by (c), |K| = 2, degree bound 159
        Fi23: consider M = O8+(3).3.2, c = 2^8*3^9, c * |M| / |G| >= 36
        Fi23:     excluded by (c), |K| = 1, degree bound 219
        HS: consider M = M22, c = 2^7, c * |M| / |G| >= 1
        HS:     excluded by (b2)
        M11: consider M = A6.2_3, c = 2^4, c * |M| / |G| >= 1
        M11:     excluded by (b2)
        M12: consider M = M11, c = 2^4, c * |M| / |G| >= 1
        M12:     excluded by (b2)
        M12: consider M = M12M2, c = 2^4, c * |M| / |G| >= 1
        M12:     excluded by (b2)
        M22: consider M = L3(4), c = 2^6, c * |M| / |G| >= 2
        M22:     excluded by (c), |K| = 1, degree bound 2
        M22: consider M = 2^4:a6, c = 2^7, c * |M| / |G| >= 1
        M22:     excluded by (b2)
        M23: consider M = M22, c = 2^7, c * |M| / |G| >= 5
        M23:     excluded by (c), |K| = 1, degree bound 5
        M24: consider M = M23, c = 2^7, c * |M| / |G| >= 5
        M24:     excluded by (c), |K| = 1, degree bound 5
        M24: consider M = 2^4:a8, c = 2^10, c * |M| / |G| >= 1
        M24:     excluded by (b2)
        McL: consider M = U4(3), c = 3^6, c * |M| / |G| >= 2
        McL:     excluded by (c), |K| = 1, degree bound 2
        Ru: consider M = 2F4(2)'.2, c = 2^12, c * |M| / |G| >= 1
        Ru:     excluded by (b2)
        Suz: consider M = G2(4), c = 2^12, c * |M| / |G| >= 2
        Suz:     excluded by (c), |K| = 1, degree bound 2

First of all, we see that Lemma 2 is sufficient to prove Proposition 1, since all candidates were excluded.
Moreover, we see that for ten sporadic simple groups, no candidates had to be considered. (No information was printed about these groups.)

        gap> Filtered( info, x -> x[3] = 0 );
        [ [ true, "HN", 0 ], [ true, "He", 0 ], [ true, "J1", 0 ], [ true, "J2", 0 ],
          [ true, "J3", 0 ], [ true, "J4", 0 ], [ true, "Ly", 0 ], [ true, "M", 0 ],
          [ true, "ON", 0 ], [ true, "Th", 0 ] ]

## 3 Alternative: Use GAP's Tables of Marks

We can easily inspect all conjugacy classes of subgroups of a group G whose table of marks is contained in GAP's Library of Tables of Marks. First we load this GAP package.

        gap> LoadPackage( "tomlib" );
        true

The following GAP function takes the table of marks of a group G and returns the list of pairs [ U, NG(U) ] where U ranges over representatives of conjugacy classes of those nilpotent subgroups of G for which |U| ·|NG(U)| is maximal.

        gap> maximalpairs:= function( tom )
        >    local g, max, result, i, u, n, prod;
        >    g:= UnderlyingGroup( tom );
        >    max:= 1;
        >    result:= [];
        >    for i in [ 1 .. Length( OrdersTom( tom ) ) ] do
        >      u:= RepresentativeTom( tom, i );
        >      if not IsTrivial( u ) and IsNilpotent( u ) then
        >        n:= Normalizer( g, u );
        >        prod:= Size( u ) * Size( n );
        >        if max < prod then
        >          max:= prod;
        >          result:= [ [ u, n ] ];
        >        elif max = prod then
        >          Add( result, [ u, n ] );
        >        fi;
        >      fi;
        >    od;
        >    return result;
        > end;;

So let us collect the data for those sporadic simple groups for which the table of marks is known.

        gap> info:= [];;
        gap> for name in AllCharacterTableNames( IsSporadicSimple, true ) do
        >      tom:= TableOfMarks( name );
        >      if tom <> fail then
        >        Add( info, [ name, tom, maximalpairs( tom ) ] );
        >      fi;
        >    od;
        gap> Length( info );
        12

We got results for twelve sporadic simple groups. The following computations show that in ten cases, the simple group G contains a unique class of nontrivial nilpotent subgroups U for which the maximal value of |U| ·|NG(U)| is attained. The ratio of this value and |G| is less than 21%. The following table shows the name of the group G, the orders of U and NG(U), and the integral part of 106 times the ratio.

        gap> List( info, x -> Length( x[3] ) );
        [ 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1 ]
        gap> mat:= [];;
        gap> for entry in info do
        >      pair:= entry[3][1];                          # [ U, N_G(U) ]
        >      bound:= Size( pair[1] ) * Size( pair[2] );   # |U|*|N_G(U)|
        >      size:= Size( UnderlyingGroup( entry[2] ) );  # |G|
        >      Add( mat, [ entry[1],
        >                  StringPP( Size( pair[1] ) ), StringPP( Size( pair[2] ) ),
        >                  Int( 10^6 * bound / size ) ] );
        >  if Size( pair[1] ) * Size( pair[2] ) > 20/100 * size then Error("!"); fi;
        >    od;
        gap> PrintArray( mat );
        [ [           Co3,           3^5,  2^5*3^7*5*11,          1886 ],
          [            HS,           2^6,       2^9*3*7,         15515 ],
          [            He,           2^6,    2^10*3^3*5,          2195 ],
          [            J1,            19,        2*3*19,         12337 ],
          [            J2,           2^6,       2^7*3^2,        121904 ],
          [            J3,           3^5,       2^3*3^5,          9404 ],
          [           M11,           3^2,       2^4*3^2,        163636 ],
          [           M12,           2^5,         2^6*3,         64646 ],
          [           M22,           2^4,     2^7*3^2*5,        207792 ],
          [           M23,           2^4,   2^7*3^2*5*7,         63241 ],
          [           M24,           2^6,    2^10*3^3*5,         36137 ],
          [           McL,           3^5,     2^4*3^6*5,         15779 ] ]

Moreover, we see that in most cases, the group U for which the maximum is attained is not the largest p-subgroup in the simple group in question.

## References

[BN95]
  T. Breuer and S. P. Norton, Improvements to the Atlas, London Mathematical Society Monographs. New Series, vol. 11, p. 297-327, The Clarendon Press Oxford University Press, New York, 1995, Appendix 2 by T. Breuer and S. Norton, Oxford Science Publications. MR1367961 (96k:20016)
[Bre04]
  T. Breuer, The GAP Character Table Library, Version 1.1.3, `http://www.math.rwth-aachen.de/` ``~`Thomas.Breuer/` `ctbllib`, Mar 2004, GAP package.
[CCN+85]
  J. H. Conway, R. T. Curtis, S. P. Norton, R. A. Parker, and R. A. Wilson, Atlas of finite groups, Oxford University Press, Eynsham, 1985, Maximal subgroups and ordinary characters for simple groups, With computational assistance from J. G. Thackray. MR827219 (88g:20025)
[GAP04]
  The GAP Group, GAP-Groups, Algorithms, and Programming, Version 4.4, 2004, `http://www.gap-system.org`.
[Wil]
  R. A. Wilson, ATLAS: Monster group M, `http://brauer.maths.qmul.ac.uk/` `Atlas/``v3/` `spor/M`.

File translated from TEX by TTH, version 3.59.
On 12 Jun 2009, 11:05.