The GAP library of finite perfect groups provides, up to isomorphism, a list of all perfect groups whose sizes are less than 10^6 excluding the following: item For n = 61440, 122880, 172032, 245760, 344064, 491520, 688128, or 983040, the perfect groups of size n have not completely been determined yet. The library neither provides the number of these groups nor the groups themselves. vspace-1mm item For n = 86016, 368640, or 737280, the library does not yet contain the perfect groups of size n, it only provides their their numbers which are 52, 46, or 54, respectively. vspace-2mm
Except for these eleven sizes, the list of altogether 1096 perfect groups in the library is complete. It relies on results of Derek F.~Holt and Wilhelm Plesken which are published in their book it Perfect Groups HP89. Moreover, they have supplied to us files with presentations of 488 of the groups. In terms of these, the remaining 607 nontrivial groups in the library can be described as 276 direct products, 107 central products, and 224 subdirect products. They are computed automatically by suitable GAP functions whenever they are needed.
We are grateful to Derek Holt and Wilhelm Plesken for making their groups available to the GAP community by contributing their files. It should be noted that their book contains a lot of further information for many of the library groups. So we would like to recommend it to any GAP user who is interested in the groups.
The library has been brought into GAP format by Volkmar Felsch.
Like most of the other GAP libraries, the library of finite perfect
groups provides an extraction function, PerfectGroup
. It returns the
specified group in form of a finitely presented group which, in its group
record, bears some additional information that allows you to easily
construct an isomorphic permutation group of some appropriate degree by
just calling the PermGroup
function.
Further, there is a function NumberPerfectGroups
which returns the
number of perfect groups of a given size.
The library does not provide a selection or an example function. There
is, however, a function DisplayInformationPerfectGroups
which allows
the display of some information about arbitrary library groups without
actually loading the large files with their presentations, and without
constructing the groups themselves.
Moereover, there are two functions which allow you to formulate loops
over selected library groups. The first one is the
NumberPerfectLibraryGroups
function which, for any given size, returns
the number of groups in the library which are of that size.
The second one is the SizeNumbersPerfectGroups
function. It allows you
to ask for all library groups which contain certain composition factors.
The answer is provided in form of a list of pairs [size,n] where each
such pair characterizes the n^{rm th} library group of size size.
We will call such a pair [size,n] the size number of the respective
perfect group. As the size numbers are accepted as input arguments by the
PerfectGroup
and the DisplayInformationPerfectGroups
function, you
may use their list to formulate a loop over the associated groups.
Now we shall give an individual description of each library function.
NumberPerfectGroups( size )
NumberPerfectGroups
returns the number of non-isomorphic perfect groups
of size size for each positive integer size up to 10^6 except for
the eight sizes listed at the beginning of this section for which the
number is not yet known. For these values as well as for any argument out
of range it returns the value -1.
NumberPerfectLibraryGroups( size )
NumberPerfectLibraryGroups
returns the number of perfect groups of size
size which are available in the library of finite perfect groups.
The purpose of the function is to provide a simple way to formulate a loop over all library groups of a given size.
SizeNumbersPerfectGroups( factor1, factor2 ... )
SizeNumbersPerfectGroups
returns a list of the it size numbers (see
above) of all library groups that contain the specified factors among
their composition factors. Each argument must either be the name of a
simple group or an integer expression which is the product of the sizes
of one or more cyclic factors. The function ignores the order in which
the argmuments are given and, in fact, replaces any list of more than one
integer expression among the arguments by their product.
The following text strings are accepted as simple group names.
item[] "A5"
, "A6"
, "A7"
, "A8"
, "A9"
or "A(5)"
, "A(6)"
,
"A(7)"
, "A(8)"
, "A(9)"
for the alternating groups A_n, 5
leq n leq 9, vspace-2mm
item[] "L2(
q)"
or "L(2,
q)"
for PSL(2,q), where q is any
prime power with 4 leq q leq 125, vspace-2mm
item[] "L3(
q)"
or "L(3,
q)"
for PSL(3,q) with 2 leq q
leq 5, vspace-2mm
item[] "U3(
q)"
or "U(3,
q)"
for PSU(2,q) with 3 leq q
leq 5, vspace-2mm
item[] "U4(2)
or "U(4,2)"
for PSU(4,2), vspace-2mm
item[] "Sp4(4)"
or "S(4,4)"
for the symplectic group S(4,4),
vspace-2mm
item[] "Sz(8)"
for the Suzuki group Sz(8), vspace-2mm
item[] "M11"
, "M12"
, "M22"
or "M(11)"
, "M(12)"
, "M(22)"
for
the Matthieu groups M_{11}, M_{12}, and M_{22}, and
vspace-2mm
item[] "J1"
, "J2"
or "J(1)"
, "J(2)"
for the Janko groups J_1
and J_2. vspace-2mm
Note that, for most of the groups, the preceding list offers two
different names in order to be consistent with the notation used in
HP89 as well as with the notation used in the
DisplayCompositionSeries
command of GAP. However, as the names are
compared as text strings, you are restricted to the above choice. Even
expressions like "L2(
~32
~)"
or "L2(2^5)"
are not accepted.
As the use of the term PSU(n,q) is not unique in the literature, we state that here it denotes the factor group of SU(n,q) by its centre, where SU(n,q) is the group of all n times n unitary matrices with entries in GF(q^2) and determinant 1.
The purpose of the function is to provide a simple way to formulate a loop over all library groups which contain certain composition factors.
DisplayInformationPerfectGroups( size )
DisplayInformationPerfectGroups( size, n )
DisplayInformationPerfectGroups( [ size, n ] )
DisplayInformationPerfectGroups
displays some information about the
library group G, say, which is specified by the size number
[size,n] or by the two arguments size and n. If, in the second
case, n is omitted, the function will loop over all library groups of
size size.
The information provided for G includes the following items: item a headline containing the size number [size,n] of G in the form size.n (the suffix .n will be suppressed if, up to isomorphism, G is the only perfect group of size size), vspace-2mm item a message if G is simple or quasisimple, i.,e., if the factor group of G by its centre is simple, vspace-2mm item the ``description'' of the structure of G as it is given by Holt and Plesken in HP89 (see below), vspace-2mm item the size of the centre of G (suppressed, if G is simple), vspace-2mm item the prime decomposition of the size of G, vspace-2mm item orbit sizes for a faithful permutation representation of G which is provided by the library (see below), vspace-2mm item a reference to each occurrence of G in the tables of section 5.3 of HP89. Each of these references consists of a class number and an internal number (i,j) under which G is listed in that class. For some groups, there is more than one reference because these groups belong to more than one of the classes in the book. vspace-2mm Example:
gap> DisplayInformationPerfectGroups( 30720, 3 ); #I Perfect group 30720.3: A5 ( 2^4 E N 2^1 E 2^4 ) A #I centre = 1 size = 2^11*3*5 orbit size = 240 #I Holt-Plesken class 1 (9,3) gap> DisplayInformationPerfectGroups( 30720, 6 ); #I Perfect group 30720.6: A5 ( 2^4 x 2^4 ) C N 2^1 #I centre = 2 size = 2^11*3*5 orbit size = 384 #I Holt-Plesken class 1 (9,6) gap> DisplayInformationPerfectGroups( Factorial( 8 ) / 2 ); #I Perfect group 20160.1: A5 x L3(2) 2^1 #I centre = 2 size = 2^6*3^2*5*7 orbit sizes = 5 + 16 #I Holt-Plesken class 31 (1,1) (occurs also in class 32) #I Perfect group 20160.2: A5 2^1 x L3(2) #I centre = 2 size = 2^6*3^2*5*7 orbit sizes = 7 + 24 #I Holt-Plesken class 31 (1,2) (occurs also in class 32) #I Perfect group 20160.3: ( A5 x L3(2) ) 2^1 #I centre = 2 size = 2^6*3^2*5*7 orbit size = 192 #I Holt-Plesken class 31 (1,3) #I Perfect group 20160.4: simple group A8 #I size = 2^6*3^2*5*7 orbit size = 8 #I Holt-Plesken class 26 (0,1) #I Perfect group 20160.5: simple group L3(4) #I size = 2^6*3^2*5*7 orbit size = 21 #I Holt-Plesken class 27 (0,1)
For any library group G, the library files do not only provide a
presentation, but, in addition, a list of one or more subgroups S_1,
ldots, S_r of G such that there is a faithful permutation
representation of G of degree sum_{i=1}^{r} G !:! S_i on the set
{ S_i g mid 1 leq i leq r, , g in G } of the cosets of the
S_i. The respective permutation group is available via the PermGroup
function described below. The DisplayInformationPerfectGroups
function
displays only the available degree. The message
orbit size = 8
in the above example means that the available permutation representation is transitive and of degree 8, whereas the message
orbit sizes = 7 + 24
means that a nontransitive permutation representation is available which acts on two orbits of size 7 and 24 respectively.
The notation used in the ``description'' of a group is explained in section 5.1.2 of HP89. We quote the respective page from there:
sl `Within a class Q,#,p, an isomorphism type of groups will be denoted by an ordered pair of integers (r,n), where r geq 0 and n > 0. More precisely, the isomorphism types in Q # p of order p^r !! mid !! Q !! mid will be denoted by (r,1), (r,2), (r,3), ldots,. Thus Q will always get the size number (0,1).
In addition to the symbol (r,n), the groups in Q , {sl #} , p will also be given a more descriptive name. The purpose of this is to provide a very rough idea of the structure of the group. The names are derived in the following manner. First of all, the isomorphism classes of irreducible F_pQ-modules M with mid !! Q !! mid mid !! M !! mid , leq 10^6, where F_p is the field of order p, are assigned symbols. These will either be simply p^x, where x is the dimension of the module, or, if there is more than one isomorphism class of irreducible modules having the same dimension, they will be denoted by p^x, p^{x^prime}, etc. The one-dimensional module with trivial Q-action will therefore be denoted by p^1. These symbols will be listed under the description of Q. The group name consists essentially of a list of the composition factors working from the top of the group downwards; hence it always starts with the name of Q itself. (This convention is the most convenient in our context, but it is different from that adopted in the ATLAS (Conway it et al.~1985), for example, where composition factors are listed in the reverse order. For example, we denote a group isomorphic to SL(2,5) by A_5 2^1 rather than 2 cdot A_5.)
Some other symbols are used in the name, in order to give some idea of the relationship between these composition factors, and splitting properties. We shall now list these additional symbols. item[times] between two factors denotes a direct product of F_pQ-modules or groups. vspace-2mm item[C] (for `commutator') between two factors means that the second lies in the commutator subgroup of the first. Similarly, a segment of the form (f_1 ! times ! f_2) {sl C} f_3 would mean that the factors f_1 and f_2 commute modulo f_3 and f_3 lies in [f_1,f_2]. vspace-2mm item[A] (for `abelian') between two factors indicates that the second is in the pth power (but not the commutator subgroup) of the first. `A' may also follow the factors, if bracketed. vspace-7mm item[E] (for `elementary abelian') between two factors indicates that together they generate an elementary abelian group (modulo subsequent factors), but that the resulting F_pQ-module extension does not split. vspace-2mm item[N] (for `nonsplit') before a factor indicates that Q (or possibly its covering group) splits down as far at this factor but not over the factor itself. So `Q f_1 {sl N} f_2' means that the normal subgroup f_1f_2 of the group has no complement but, modulo f_2, f_1, does have a complement. vspace-2mm
We must stress that this notation does not always succeed in being precise or even unambiguous, and the reader is free to ignore it if it does not seem helpful.'
If such a group description has been given in the book for G (and, in
fact, this is the case for most of the library groups), it is displayed
by the DisplayInformationPerfectGroups
function. Otherwise the function
provides a less explicit description of the (in these cases unique)
Holt-Plesken class to which G belongs, together with a serial number if
this is necessary to make it unique.
PerfectGroup( size )
PerfectGroup( size, n )
PerfectGroup( [ size, n ] )
PerfectGroup
is the essential extraction function of the library. It
returns a finitely presented group, G say, which is isomorphic to the
library group specified by the size number [size,n] or by the two
separate arguments size and n. In the second case, you may omit the
parameter n. Then the default value is n = 1.
gap> G := PerfectGroup( 6048 ); PerfectGroup(6048) gap> G.generators; [ a, b ] gap> G.relators; [ a^2, b^6, a*b*a*b*a*b*a*b*a*b*a*b*a*b, a*b^2*a*b^2*a*b^2*a*b^-2*a*b^-2*a*b^-2, a*b*a*b^-2*a*b*a*b^-2*a*b*a*b^-2*a*b*a*b^-1*a*b^-1 ] gap> G.size; 6048 gap> G.description; "U3(3)" gap> G.subgroups; [ Subgroup( PerfectGroup(6048), [ a, b*a*b*a*b*a*b^3 ] ) ]
The generators and relators of G coincide with those given in HP89.
Note that, besides the components that are usually initialized for any finitely presented group, the group record of G contains the following components:
size
:
isPerfect
:true
,
description
:DisplayInformationPerfectGroups
function above,
source
:
subgroups
:The last of these components exists only if G is one of the 488 nontrivial library groups which are given directly by a presentation on file, i.,e., which are not constructed from other library groups in form of a direct, central, or subdirect product. It will be required by the following function.
PermGroup( G )
PermGroup
returns a permutation group, P say, which is isomorphic to
the given group G which is assumed to be a finitely presented perfect
group that has been extracted from the library of finite perfect groups
via the PerfectGroup
function.
Let S_1, ldots, S_r be the subgroups listed in the component
G.subgroups
of the group record of G. Then the resulting group P
is the permutation group of degree sum_{i=1}^{r} G !:! S_i which is
induced by G on the set { S_i g mid 1 leq i leq r, g in G } of
all cosets of the S_i.
Example (continued):
gap> P := PermGroup( G ); PermGroup(PerfectGroup(6048)) gap> P.size; 6048 gap> P.degree; 28
Note that some of the library groups do not have a faithful permutation representation of small degree. Computations in these groups may be rather time consuming.
Example:
gap> P := PermGroup( PerfectGroup( 129024, 2 ) ); PermGroup(PerfectGroup(129024,2)) gap> P.degree; 14336
GAP 3.4.4