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:

those of order at most 2000 except 1024 (\(423\;164\;062\) groups);

those of cubefree order at most 50 000 (\(395 \; 703\) groups);

those of order \(p^7\) for the primes \(p = 3,5,7,11\) (\(907 \; 489\) groups);

those of order \(p^n\) for \(n \leq 6\) and all primes \(p\)

those of order \(q^n \cdot p\) for \(q^n\) dividing \(2^8\), \(3^6\), \(5^5\) or \(7^4\) and all primes \(p\) with \(p \neq q\);

those of squarefree order;

those whose order factorises into at most 3 primes.

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 \leq m \leq n \leq 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:

**(1)**the groups whose order factorises into at most 3 primes.

**(2)**the remaining groups of order at most 1000 except 512 and 768.

**(3)**the remaining groups of order \(2^n \cdot p\) with \(n \leq 8\) and \(p\) an odd prime.

**(4)**the remaining groups of order \(5^5\), \(7^4\) and of order \(q^n \cdot p\) for \(q^n\) dividing \(3^6\), \(5^5\) or \(7^4\) and \(p \neq q\) a prime.

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

**(6)**the groups of orders 1152 and 1920.

**(7)**the groups of order 512.

**(8)**the groups of order 1536.

**(9)**the remaining groups of order \(p^n\) for \(4 \leq n \leq 6\).

**(10)**the remaining groups of cubefree order at most 50 000 and of squarefree order.

**(11)**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 http://www.icm.tu-bs.de/ag_algebra/software/small/

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.

`‣ 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.

`‣ 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 \cdot q > 1000\) with \(n > 2\).

`‣ OneSmallGroup` ( arg ) | ( function ) |

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

(???).

`‣ NumberSmallGroups` ( order ) | ( function ) |

returns the number of groups of order `order`.

`‣ SelectSmallGroups` ( argl, all, id ) | ( function ) |

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

`‣ IdSmallGroup` ( G ) | ( attribute ) |

`‣ IdGroup` ( G ) | ( attribute ) |

returns the library number of `G`; that is, the function returns a pair `[`

where `order`, `i`]`G` is isomorphic to `SmallGroup( `

.`order`, `i` )

`‣ 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.

`‣ 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 `[`

meaning that `order`, `i`]`G` is isomorphic to the group `SolvableGroup( `

in `order`, `i` )**GAP** 3.

`‣ SmallGroupsInformation` ( order ) | ( function ) |

prints information on the groups of the specified order.

`‣ 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 ); 10494213 gap> NumberSmallGroups( 2^8 * 23 ); 1083472

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>

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 FrattinifactorId. 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.

generated by GAPDoc2HTML