Goto Chapter: Top 1 Bib Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

1 The Perfect Groups Library
 1.1 Accessing the Perfect Groups Library
 1.2 Data Not Distributed with the Package
 1.3 More about the Perfect Groups Library

1 The Perfect Groups Library

The GAP library of finite perfect groups provides, up to isomorphism, a list of all perfect groups whose sizes are less than 2⋅ 10^6. The groups of orders up to 10^6 have been enumerated by Derek F. Holt and Wilhelm Plesken and published in their book Perfect Groups [HP89]. For orders n = 86016, 368640, or 737280 this work only counted the groups (but did not explicitly list them), the groups of orders n = 61440, 122880, 172032, 245760, 344064, 491520, 688128, or 983040 were omitted.

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 of these has been brought into GAP format by Volkmar Felsch.

Several additional groups omitted from the book Perfect Groups have also been included. Two groups -- one of order 450000 with a factor group of type A_6 and the one of order 962280 -- were found by Jack Schmidt in 2005. Two groups of order 243000 and one each of orders 729000, 871200, 878460 were found in 2020 by Alexander Hulpke.

The perfect groups of size less than 2⋅ 10^6 which had not been classified in the work of Holt and Plesken have been enumerated by Alexander Hulpke; this classification is described in [Hul22], which also gives an account of the methods used and of the verification of the resulting data. These groups are stored directly and provide less construction information in their names.

As all groups are stored by presentations, a permutation representation is obtained by coset enumeration. 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.

The perfect subgroups of a given finite group can be determined with RepresentativesPerfectSubgroups (Reference: RepresentativesPerfectSubgroups) and ConjugacyClassesPerfectSubgroups (Reference: ConjugacyClassesPerfectSubgroups), which are declared by the GAP library but require this package in order to work.

1.1 Accessing the Perfect Groups Library

1.1-1 SizesPerfectGroups
‣ SizesPerfectGroups( )( function )

This is the ordered list of all numbers up to 2⋅ 10^6 that occur as sizes of perfect groups. One can iterate over part of the perfect groups library with:

gap> for n in Intersection([100..500],SizesPerfectGroups()) do
>      for k in [1..NrPerfectGroups(n)] do
>        pg := PerfectGroup(n,k);
>      od;
>    od;

1.1-2 PerfectGroup
‣ PerfectGroup( [filt, ]size[, n] )( function )
‣ PerfectGroup( [filt, ]sizenumberpair )( function )

returns a group which is isomorphic to the library group specified by the size number [ size, n ] or by the two separate arguments size and n, assuming a default value of n = 1. The optional argument filt defines the filter in which the group is returned. Possible filters so far are IsPermGroup (Reference: IsPermGroup) and IsSubgroupFpGroup (Reference: IsSubgroupFpGroup). In the latter case, the generators and relators used coincide with those given in [HP89]. The default filter is IsPermGroup (Reference: IsPermGroup).

The data for the orders 1376256 and 1966080 is not distributed with this package; for these, this function enters a break loop explaining how to obtain the missing file, see 1.2.

gap> G := PerfectGroup(IsPermGroup,6048,1);
U3(3)
gap> G:=PerfectGroup(IsPermGroup,823080,2);
A5 2^1 19^2 C 19^1
gap> NrMovedPoints(G);
6859
gap> G:=PerfectGroup(1866240,12);
PG1866240.12
gap> NrMovedPoints(G);
270

1.1-3 PerfectIdentification
‣ PerfectIdentification( G )( attribute )

This attribute is set for all groups obtained from the perfect groups library and has the value [size,nr] if the group is obtained with these parameters from the library.

1.1-4 NumberPerfectGroups
‣ NumberPerfectGroups( size )( function )
‣ NrPerfectGroups( size )( function )
‣ NumberPerfectLibraryGroups( size )( function )
‣ NrPerfectLibraryGroups( size )( function )

returns the number of non-isomorphic perfect groups of size size for each positive integer size up to 2⋅10^6. Additionally, for odd size an answer is returned (odd order groups are solvable). For any other argument out of range it returns fail. NrPerfectGroups is a synonym for NumberPerfectGroups. Moreover NumberPerfectLibraryGroups (and its synonym NrPerfectLibraryGroups) exist for historical reasons, and return 0 instead of fail for arguments outside the library scope.

1.1-5 SizeNumbersPerfectGroups
‣ SizeNumbersPerfectGroups( factor1, factor2, ... )( function )

SizeNumbersPerfectGroups returns a list of pairs, each entry consisting of a group order and the number of those groups in the library of perfect groups that contain the specified factors factor1, factor2, ... among their composition factors.

Each argument must either be the name of a nonabelian simple group or an integer which stands for the product of the sizes of one or more cyclic factors. (In fact, the function replaces all integers among the arguments by their product.)

The following text strings are accepted as simple group names.

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 (Reference: DisplayCompositionSeries) command of GAP. However, as the names are compared as text strings, you are restricted to the above choice. Even expressions like L2(2^5) are not accepted.

As the use of the term PSU(n,q) is not unique in the literature, we mention that in this library it denotes the factor group of SU(n,q) by its centre, where SU(n,q) is the group of all n × 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.

As this function runs over the whole library, it requires the data files that are not distributed with this package, whatever its arguments are, see 1.2.

1.1-6 DisplayInformationPerfectGroups
‣ DisplayInformationPerfectGroups( size[, n] )( function )
‣ DisplayInformationPerfectGroups( sizenumberpair )( function )

DisplayInformationPerfectGroups displays some invariants of the n-th group of order size from the perfect groups library.

If no value of n has been specified, the invariants will be displayed for all groups of size size available in the library.

Alternatively, also a list of length two may be entered as the only argument, with entries size and n.

The information provided for G includes the following items:

gap> DisplayInformationPerfectGroups( 30720, 3 );
#I Perfect group 30720:  A5 ( 2^4 E N 2^1 E 2^4 ) A
#I   size = 2^11*3*5  orbit size = 240
#I   Holt-Plesken class 1 (9,3)
gap> DisplayInformationPerfectGroups( 30720, 6 );
#I Perfect group 30720:  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)

1.2 Data Not Distributed with the Package

For reasons of size, the data for two orders is not shipped with this package: the 1639 groups of order 1376256 and the 7344 groups of order 1966080. All other orders are covered by the data files in the data subdirectory of the package.

How many groups there are of these two orders is recorded in the index file, which is always present, so NumberPerfectGroups (1.1-4) and SizesPerfectGroups (1.1-1) work as usual. Any function that has to touch the groups themselves, however, enters a break loop with a message naming the file that is missing and where to get it:

gap> G := PerfectGroup(1376256, 1);
Error,

For reasons of size, the perfect groups library for orders >10^6 is
not distributed fully by default. To access the group requested, get
the file perf27.grp from
https://github.com/hulpke/extraperfect
and put it in the `data` subdirectory of the `perfgrp` package. Then type

return;

to continue in this GAP session (which will read in the file).

To proceed, download the file named in the message from https://github.com/hulpke/extraperfect, place it in the data subdirectory of the PerfGrp package, and then type return;. The interrupted computation continues, reading in the file that has just been added. The two files in question are perf27.grp for order 1376256 and perf33.grp for order 1966080.

Besides PerfectGroup (1.1-2) and DisplayInformationPerfectGroups (1.1-6) called with one of these two orders, this also affects SizeNumbersPerfectGroups (1.1-5), which iterates over the whole library and therefore needs both files, whatever composition factors are asked for.

1.3 More about the Perfect Groups Library

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, ..., S_r of G such that there is a faithful permutation representation of G of degree ∑_{i = 1}^r [G:S_i] on the set { S_i g ∣ 1 ≤ i ≤ r, g ∈ G } of the cosets of the S_i. This allows one to construct the groups as permutation groups. The function DisplayInformationPerfectGroups (1.1-6) 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 = 5 + 16

means that a nontransitive permutation representation is available which acts on two orbits of size 5 and 16 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:

Within a class Q#p, an isomorphism type of groups will be denoted by an ordered pair of integers (r,n), where r ≥ 0 and n > 0. More precisely, the isomorphism types in Q # p of order p^r |Q| will be denoted by (r,1), (r,2), (r,3), .... Thus Q will always get the size number (0,1).

In addition to the symbol (r,n), the groups in Q#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 |Q|.|M| ≤ 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 byp^x, p^{x'}, 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 [CCN+85], 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.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.

×

between two factors denotes a direct product of F_pQ-modules or groups.

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 × f_2) 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].

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.

E

(for elementary abelian) between two factors indicates that together they generate an elementary abelian group (modulo subsequent factors), but that the resulting F_p Q-module extension does not split.

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 N f_2 means that the normal subgroup f_1 f_2 of the group has no complement but, modulo f_2, f_1, does have a complement.

Brackets have their obvious meaning. Summarizing, we have:

×

= direct product;

C

= commutator subgroup;

A

= abelian;

E

= elementary abelian; and

N

= nonsplit.

Here are some examples.

(i)

A_5 (2^4 E 2^1 E 2^4) A means that the pairs 2^4 E 2^1 and 2^1 E 2^4 are both elementary abelian of exponent 4.

(ii)

A_5 (2^4 E 2^1 A) C 2^1 means that O_2(G) is of symplectic type 2^{1+5}, with Frattini factor group of type 2^4 E 2^1. The A after the 2^1 indicates that G has a central cyclic subgroup 2^1 A 2^1 of order 4.

(iii)

L_3(2) ((2^1 E) × ( N 2^3 E 2^{3'} A) C) 2^{3'} means that the 2^{3'} factor at the bottom lies in the commutator subgroup of the pair 2^3 E 2^{3'} in the middle, but the lower pair 2^{3'} A 2^{3'} is abelian of exponent 4. There is also a submodule 2^1 E 2^{3'}, and the covering group L_3(2) 2^1 of L_3(2) does not split over the 2^3 factor. (Since G is perfect, it goes without saying that the extension L_3(2) 2^1 cannot split itself.)

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 DisplayInformationPerfectGroups (1.1-6). 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.

 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 Bib Ind

generated by GAPDoc2HTML