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

1 The Small Groups Library
 1.1 Overview
 1.2 Function Reference

1 The Small Groups Library

1.1 Overview

The Small Groups library gives access to all groups of certain "small" orders. The groups are sorted by their orders and they are listed up to isomorphism; that is, for each of the available orders a complete and irredundant list of isomorphism type representatives of groups is given. Currently, the library contains the following groups:

The first three items in this list cover an explicit range of orders; the last four provide access to infinite families of groups having orders of certain types.

The library also has an identification function: it returns the library number of a given group. This function determines library numbers using invariants of groups. The function is available for all orders in the library except for the orders 512 and 1536 and except for the orders p^5, p^6 and p^7 above 2000.

The library is organised in 11 layers. Each layer contains the groups of certain orders and their corresponding group identification routines. It is possible to install the first n layers of the group library and the first m layers of the group identification for each 1 ≤ m ≤ n ≤ 11. This might be useful to save disk space. There is an extensive README file for the Small Groups library available in the small directory of the GAP distribution containing detailed information on the layers. A brief description of the layers is given here:


the groups whose order factorises into at most 3 primes.


the remaining groups of order at most 1000 except 512 and 768.


the remaining groups of order 2^n ⋅ p with n ≤ 8 and p an odd prime.


the remaining groups of order 5^5, 7^4 and of order q^n ⋅ p for q^n dividing 3^6, 5^5 or 7^4 and p ≠ q a prime.


the remaining groups of order at most 2000 except 1024, 1152, 1536 and 1920.


the groups of orders 1152 and 1920.


the groups of order 512.


the groups of order 1536.


the remaining groups of order p^n for 4 ≤ n ≤ 6.


the remaining groups of cubefree order at most 50 000 and of squarefree order.


the remaining groups of order p^7 for p = 3,5,7,11.

The data in this library has been carefully checked and cross-checked. It is believed to be reliable. However, no absolute guarantees are given and users should, as always, make their own checks in critical cases.

The data occupies about 30 MB (storing over 400 million groups in about 200 megabits). The group identification occupies about 47 MB of which 18 MB is used for the groups in layer (6). More information on the Small Groups library can be found on

This library has been constructed by Hans Ulrich Besche, Bettina Eick and E. A. O'Brien. A survey on this topic and an account of the history of group constructions can be found in [BEO02]. Further detailed information on the construction of this library is available in [New77], [O'B90], [O'B91], [BE99a], [BE99b], [BE01], [BEO01], [EO99a], [EO99b], [NOVL04], [Gir03], [DE05], [OVL05]. The Small Groups library incorporates the GAP 3 libraries TwoGroup and ThreeGroup. The data from these libraries was directly included into the Small Groups library, and the ordering there was preserved. The Small Groups library replaces the Gap 3 library of solvable groups of order at most 100. However, both the organisation and data descriptions of these groups has changed in the Small Groups library.

1.2 Function Reference

1.2-1 SmallGroup
‣ SmallGroup( order, i )( function )
‣ SmallGroup( pair )( function )

returns the i-th group of order order in the catalogue. If the group is solvable, it will be given as a PcGroup; otherwise it will be given as a permutation group. If the groups of order order are not installed, the function reports an error and enters a break loop.

1.2-2 AllSmallGroups
‣ AllSmallGroups( arg )( function )

returns all groups with certain properties as specified by arg. If arg is a number n, then this function returns all groups of order n. However, the function can also take several arguments which then must be organized in pairs function and value. In this case the first function must be Size (Reference: Size) and the first value an order or a range of orders. If value is a list then it is considered a list of possible function values to include. The function returns those groups of the specified orders having those properties specified by the remaining functions and their values.

Precomputed information is stored for the properties IsAbelian (Reference: IsAbelian), IsNilpotentGroup (Reference: IsNilpotentGroup), IsSupersolvableGroup (Reference: IsSupersolvableGroup), IsSolvableGroup (Reference: IsSolvableGroup), RankPGroup (Reference: RankPGroup), PClassPGroup (Reference: PClassPGroup), LGLength (Reference: LGLength), FrattinifactorSize and FrattinifactorId for the groups of order at most 2000 which have more than three prime factors, except those of order 512, 768, 1024, 1152, 1536, 1920 and those of order p^n ⋅ q > 1000 with n > 2.

1.2-3 OneSmallGroup
‣ OneSmallGroup( arg )( function )

returns one group with certain properties as specified by arg. The permitted arguments are those supported by AllSmallGroups (???).

1.2-4 NumberSmallGroups
‣ NumberSmallGroups( order )( function )

returns the number of groups of order order.

1.2-5 SelectSmallGroups
‣ SelectSmallGroups( argl, all, id )( function )

universal function for 'AllGroups', 'OneGroup' and 'IdsOfAllGroups'.

1.2-6 IdSmallGroup
‣ IdSmallGroup( G )( attribute )
‣ IdGroup( G )( attribute )

returns the library number of G; that is, the function returns a pair [order, i] where G is isomorphic to SmallGroup( order, i ).

1.2-7 IdsOfAllSmallGroups
‣ IdsOfAllSmallGroups( arg )( function )

similar to AllSmallGroups but returns ids instead of groups. This may prevent workspace overflows, if a large number of groups are expected in the output.

1.2-8 IdGap3SolvableGroup
‣ IdGap3SolvableGroup( G )( attribute )
‣ Gap3CatalogueIdGroup( G )( attribute )

returns the catalogue number of G in the GAP 3 catalogue of solvable groups; that is, the function returns a pair [order, i] meaning that G is isomorphic to the group SolvableGroup( order, i ) in GAP 3.

1.2-9 SmallGroupsInformation
‣ SmallGroupsInformation( order )( function )

prints information on the groups of the specified order.

1.2-10 UnloadSmallGroupsData
‣ UnloadSmallGroupsData( )( function )

GAP loads all necessary data from the library automatically, but it does not delete the data from the workspace again. Usually, this will be not necessary, since the data is stored in a compressed format. However, if a large number of groups from the library have been loaded, then the user might wish to remove the data from the workspace and this can be done by the above function call.

gap> G := SmallGroup( 768, 1000000 );
<pc group of size 768 with 9 generators>
gap> G := SmallGroup( [768, 1000000] );
<pc group of size 768 with 9 generators>
gap> AllSmallGroups( 6 );
[ <pc group of size 6 with 2 generators>, 
  <pc group of size 6 with 2 generators> ]
gap> AllSmallGroups( Size, 120, IsSolvableGroup, false );
[ Group(
    [ (1,2,4,8)(3,6,9,5)(7,12,13,17)(10,14,11,15)(16,20,21,24)(18,22,
        19,23), (1,3,7)(2,5,10)(4,9,13)(6,11,8)(12,16,20)(14,18,
        22)(15,19,23)(17,21,24) ]), Group([ (1,2,3,4,5), (1,2) ]), 
  Group([ (1,2,3,5,4), (1,3)(2,4)(6,7) ]) ]
gap> G := OneSmallGroup( 120, IsNilpotentGroup, false );
<pc group of size 120 with 5 generators>
gap> IdSmallGroup(G);
[ 120, 1 ]
gap> G := OneSmallGroup( Size, [1..1000], IsSolvableGroup, false );
Group([ (1,2,3,4,5), (1,2,3) ])
gap> IdSmallGroup(G);
[ 60, 5 ]
gap> UnloadSmallGroupsData();
gap> IdSmallGroup( GL( 2,3 ) );
[ 48, 29 ]
gap> IdSmallGroup( Group( (1,2,3,4),(4,5) ) );
[ 120, 34 ]
gap> IdsOfAllSmallGroups( Size, 60, IsSupersolvableGroup, true );
[ [ 60, 1 ], [ 60, 2 ], [ 60, 3 ], [ 60, 4 ], [ 60, 6 ], [ 60, 7 ], 
  [ 60, 8 ], [ 60, 10 ], [ 60, 11 ], [ 60, 12 ], [ 60, 13 ] ]
gap> NumberSmallGroups( 512 );
gap> NumberSmallGroups( 2^8 * 23 );
gap> NumberSmallGroups( 2^9 * 23 );
Error, the library of groups of size 11776 is not available called from
<function>( <arguments> ) called from read-eval-loop
Entering break read-eval-print loop ...
you can 'quit;' to quit to outer loop, or
you can 'return;' to continue
brk> quit;
gap> SmallGroupsInformation( 32 );

  There are 51 groups of order 32.
  They are sorted by their ranks. 
     1 is cyclic. 
     2 - 20 have rank 2.
     21 - 44 have rank 3.
     45 - 50 have rank 4.
     51 is elementary abelian. 

  For the selection functions the values of the following attributes 
  are precomputed and stored:
     IsAbelian, PClassPGroup, RankPGroup, FrattinifactorSize and 

  This size belongs to layer 2 of the SmallGroups library. 
  IdSmallGroup is available for this size. 

‣ SMALL_GROUPS_OLD_ORDER( global variable )

If set to true, then groups of order 5^7 7^7, and 11^7 are ordered in the way they were orderd up to version 1.0 of the package. If this variable is set to false, which is the default as of version 1.1, then the permutations (2,30083)(3,30084)(4,30085)(5,30086), (2,104599)(3,104600)(4,104601)(5,104602), and (2,721053)(3,721054)(4,721055)(5,721059) respectively are applied to the old ordering of groups of that order.


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

generated by GAPDoc2HTML