  
  [1X1 [33X[0;0YThe Small Groups Library[133X[101X
  
  
  [1X1.1 [33X[0;0YOverview[133X[101X
  
  [33X[0;0YThe Small Groups library gives access to all groups of certain [21Xsmall[121X 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:[133X
  
  [30X    [33X[0;6Ythose of order at most 2000 except 1024   ([22X423 164 062[122X groups);[133X
  
  [30X    [33X[0;6Ythose of cubefree order at most 50 000   ([22X395 703[122X groups);[133X
  
  [30X    [33X[0;6Ythose of order [22Xp^7[122X for the primes [22Xp = 3,5,7,11[122X   ([22X907 489[122X groups);[133X
  
  [30X    [33X[0;6Ythose of order [22Xp^n[122X for [22Xn ≤ 6[122X and all primes [22Xp[122X;[133X
  
  [30X    [33X[0;6Ythose  of  order [22Xq^n ⋅ p[122X for [22Xq^n[122X dividing [22X2^8[122X, [22X3^6[122X, [22X5^5[122X or [22X7^4[122X and all
        primes [22Xp[122X with [22Xp ≠ q[122X;[133X
  
  [30X    [33X[0;6Ythose of squarefree order;[133X
  
  [30X    [33X[0;6Ythose whose order factorises into at most 3 primes.[133X
  
  [33X[0;0YThe  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.[133X
  
  [33X[0;0YThe  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 [22Xp^5[122X,
  [22Xp^6[122X and [22Xp^7[122X above 2000.[133X
  
  [33X[0;0YThe  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 [22Xn[122X layers of the group library and the first [22Xm[122X
  layers  of  the  group identification for each [22X1 ≤ m ≤ n ≤ 11[122X. This might be
  useful  to  save disk space. Which orders belong to which layer is described
  in  Chapter  [14X2[114X,  along  with  detailed  information  on  how the groups were
  determined, how they are stored, and how they are identified.[133X
  
  [33X[0;0YThe 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.[133X
  
  [33X[0;0YThis  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],  [NOV04], [Gir03],
  [DE05],  [OV05].  The  Small Groups library incorporates the [5XGAP[105X 3 libraries
  [10XTwoGroup[110X and [10XThreeGroup[110X. 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 [5XGAP[105X 3 library of solvable groups of order
  at  most  100.  However,  both the organisation and the data descriptions of
  these groups have changed in the Small Groups library.[133X
  
  [33X[0;0YAs  of version 1.4 of this library, the arrangement of groups is the same as
  in Magma, version 2.23. In earlier releases of this library, the arrangement
  in  orders  [22Xp^7[122X,  [22Xp=3,5,7,11[122X  disagreed.  An attempt to fix this was made in
  version  1.1 of this library, but a wrong permutation was used. If you would
  like  to  refer  to  index numbers for these orders in older versions of the
  library,  see  [2XSMALL_GROUPS_OLD_ORDER[102X ([14X1.3-15[114X). The arrangement of all other
  orders has always agreed and has remained stable.[133X
  
  [33X[0;0YIn  version  1.5, the number of groups of order 1024 was corrected. For more
  information, refer to [Bur21].[133X
  
  
  [1X1.2 [33X[0;0YRelated packages[133X[101X
  
  [33X[0;0YSeveral  other  [5XGAP[105X  packages  give access to groups of orders which are not
  covered  by  this  library, or which are covered only in part. A package can
  make  its  groups available through the functions of this chapter by calling
  [2XSmallGroupsAddLayer[102X ([14X1.3-13[114X).[133X
  
  [33X[0;0YThe  [5XSglPPow[105X  package provides the groups of order [22Xp^7[122X for primes [22Xp > 11[122X and
  the  groups  of  order  [22X3^8[122X. It extends this library: once it is loaded, its
  groups  are  available  through  the  usual  functions  [2XSmallGroup[102X  ([14X1.3-1[114X),
  [2XNumberSmallGroups[102X  ([14X1.3-5[114X) and so on, and [2XSmallGroupsAvailable[102X ([14X1.3-2[114X) takes
  them into account. See [7Xhttps://gap-packages.github.io/sglppow/[107X.[133X
  
  [33X[0;0YThe  [5XSOTGrps[105X  package  constructs  and  identifies  the  groups  whose order
  factorises  into  at  most  4  primes,  as  well as those of order [22Xp^4 q[122X for
  distinct  primes  [22Xp[122X  and  [22Xq[122X. It extends this library for those of its orders
  this  one  does  not  cover,  and  comes  with  its  own functions [10XSOTGroup[110X,
  [10XAllSOTGroups[110X  and [10XIdSOTGroup[110X for all of them. Be aware that where the orders
  covered  by  both  overlap, the numbering used by [5XSOTGrps[105X in general differs
  from the one used here. See [7Xhttps://gap-packages.github.io/sotgrps/[107X.[133X
  
  
  [1X1.3 [33X[0;0YFunction Reference[133X[101X
  
  [1X1.3-1 SmallGroup[101X
  
  [33X[1;0Y[29X[2XSmallGroup[102X( [3Xorder[103X, [3Xi[103X ) [32X function[133X
  [33X[1;0Y[29X[2XSmallGroup[102X( [3Xpair[103X ) [32X function[133X
  
  [33X[0;0Yreturns  the  [3Xi[103X-th  group  of  order [3Xorder[103X 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 [3Xorder[103X are not installed, the
  function reports an error and enters a break loop.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := SmallGroup( 60, 4 );[127X[104X
    [4X[28X<pc group of size 60 with 4 generators>[128X[104X
    [4X[25Xgap>[125X [27XStructureDescription( G );[127X[104X
    [4X[28X"C60"[128X[104X
    [4X[25Xgap>[125X [27XG := SmallGroup( 60, 5 );[127X[104X
    [4X[28XGroup([ (1,2,3,4,5), (1,2,3) ])[128X[104X
    [4X[25Xgap>[125X [27XStructureDescription( G );[127X[104X
    [4X[28X"A5"[128X[104X
    [4X[25Xgap>[125X [27XG := SmallGroup( 768, 1000000 );[127X[104X
    [4X[28X<pc group of size 768 with 9 generators>[128X[104X
    [4X[25Xgap>[125X [27XG := SmallGroup( [768, 1000000] );[127X[104X
    [4X[28X<pc group of size 768 with 9 generators>[128X[104X
  [4X[32X[104X
  
  [1X1.3-2 SmallGroupsAvailable[101X
  
  [33X[1;0Y[29X[2XSmallGroupsAvailable[102X( [3Xorder[103X ) [32X function[133X
  
  [33X[0;0Yreturns [10Xtrue[110X if the library of groups of order [3Xorder[103X is installed, and [10Xfalse[110X
  otherwise.[133X
  
  [1X1.3-3 AllSmallGroups[101X
  
  [33X[1;0Y[29X[2XAllSmallGroups[102X( [3Xarg[103X ) [32X function[133X
  
  [33X[0;0Yreturns  all groups with certain properties as specified by [3Xarg[103X. If [3Xarg[103X is a
  number  [22Xn[122X,  then  this  function returns all groups of order [22Xn[122X. However, the
  function  can  also  take  several arguments which then must be organised in
  pairs  [10Xfunction[110X  and  [10Xvalue[110X.  In  this  case the first function must be [2XSize[102X
  ([14XReference:  Size[114X)  and  the first value an order or a range of orders. If a
  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.[133X
  
  [33X[0;0YSome selection criteria are [13Xindexed[113X: their value follows from the position a
  group has in the library, so a selection using only such criteria constructs
  no  group  at  all. Any other criterion is checked group by group, at a cost
  proportional to the number of groups of the given orders.[133X
  
  [33X[0;0YFor  the  orders  whose  factorisation  has  more  than three prime factors,
  [2XIsNilpotentGroup[102X    ([14XReference:    IsNilpotentGroup[114X),   [2XIsSupersolvableGroup[102X
  ([14XReference:    IsSupersolvableGroup[114X)    and    [2XIsSolvableGroup[102X   ([14XReference:
  IsSolvableGroup[114X)   are   indexed,  except  [2XIsSupersolvableGroup[102X  ([14XReference:
  IsSupersolvableGroup[114X)  for  the  cubefree  orders  above  [22X2000[122X which are not
  squarefree,  and so is [2XIsAbelian[102X ([14XReference: IsAbelian[114X), except for [22Xp^5[122X with
  [22Xp  ≥  7[122X.  For  the  prime  powers  [22Xp^n[122X  with  [22Xn  ≥ 4[122X, [2XRankPGroup[102X ([14XReference:
  RankPGroup[114X)  is indexed except for [22Xp^6[122X with [22Xp ≥ 11[122X and for [22X7^7[122X and [22X11^7[122X, and
  [2XPClassPGroup[102X ([14XReference: PClassPGroup[114X) except for those and for [22Xp^4[122X with [22Xp ≥
  11[122X  and  [22Xp^5[122X  with [22Xp ≥ 7[122X. [2XLGLength[102X ([14XReference: LGLength[114X), [10XFrattinifactorSize[110X
  and  [10XFrattinifactorId[110X  are  indexed for the orders of at most [22X2000[122X with more
  than  three prime factors, except [22X512[122X, [22X768[122X, [22X1024[122X, [22X1152[122X, [22X1536[122X, [22X1920[122X and [22Xp^n ⋅
  q > 1000[122X with [22Xn > 2[122X.[133X
  
  [33X[0;0YOrders with at most three prime factors are not indexed; no such order below
  [22X50000[122X has more than 13 groups.[133X
  
  [33X[0;0Y[2XSmallGroupsInformation[102X  ([14X1.3-12[114X)  reports  which  criteria are indexed for a
  given order.[133X
  
  [33X[0;0Y[2XIdsOfAllSmallGroups[102X  ([14X1.3-10[114X) returns the ids of these groups instead of the
  groups themselves, and [2XNumberSmallGroups[102X ([14X1.3-5[114X) just their number.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XAllSmallGroups( 6 );[127X[104X
    [4X[28X[ <pc group of size 6 with 2 generators>, [128X[104X
    [4X[28X  <pc group of size 6 with 2 generators> ][128X[104X
    [4X[25Xgap>[125X [27XAllSmallGroups( 60, IsNilpotentGroup );[127X[104X
    [4X[28X[ <pc group of size 60 with 4 generators>, [128X[104X
    [4X[28X  <pc group of size 60 with 4 generators> ][128X[104X
  [4X[32X[104X
  
  [1X1.3-4 OneSmallGroup[101X
  
  [33X[1;0Y[29X[2XOneSmallGroup[102X( [3Xarg[103X ) [32X function[133X
  
  [33X[0;0Yreturns one group with certain properties as specified by [3Xarg[103X. The permitted
  arguments are those supported by [2XAllSmallGroups[102X ([14X1.3-3[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := OneSmallGroup( 6, IsAbelian );[127X[104X
    [4X[28X<pc group of size 6 with 2 generators>[128X[104X
    [4X[25Xgap>[125X [27XStructureDescription( G );[127X[104X
    [4X[28X"C6"[128X[104X
    [4X[25Xgap>[125X [27XG := OneSmallGroup( 6, IsAbelian, false );[127X[104X
    [4X[28X<pc group of size 6 with 2 generators>[128X[104X
    [4X[25Xgap>[125X [27XStructureDescription( G );[127X[104X
    [4X[28X"S3"[128X[104X
    [4X[25Xgap>[125X [27XG := OneSmallGroup( Size, [1..1000], IsSolvableGroup, false );[127X[104X
    [4X[28XGroup([ (1,2,3,4,5), (1,2,3) ])[128X[104X
  [4X[32X[104X
  
  [1X1.3-5 NumberSmallGroups[101X
  
  [33X[1;0Y[29X[2XNumberSmallGroups[102X( [3Xorder[103X[, [3Xfunc1[103X, [3Xval1[103X, [3X...[103X] ) [32X function[133X
  [33X[1;0Y[29X[2XNrSmallGroups[102X( [3Xorder[103X[, [3Xfunc1[103X, [3Xval1[103X, [3X...[103X] ) [32X function[133X
  
  [33X[0;0Yreturns the number of groups of order [3Xorder[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XNumberSmallGroups( 512 );[127X[104X
    [4X[28X10494213[128X[104X
    [4X[25Xgap>[125X [27XNumberSmallGroups( 2^8 * 23 );[127X[104X
    [4X[28X1083472[128X[104X
    [4X[25Xgap>[125X [27XNumberSmallGroups( 4096 );[127X[104X
    [4X[28XError, the library of groups of size 4096 is not available[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe function also accepts the arguments of [2XAllSmallGroups[102X ([14X1.3-3[114X) and counts
  the groups that function would return.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XNumberSmallGroups( [ 1 .. 100 ] );[127X[104X
    [4X[28X1048[128X[104X
    [4X[25Xgap>[125X [27XNumberSmallGroups( 96, IsAbelian );[127X[104X
    [4X[28X7[128X[104X
  [4X[32X[104X
  
  [33X[0;0YOrders  alone are answered from the numbers of groups. Otherwise the cost is
  that  of  [2XIdsOfAllSmallGroups[102X  ([14X1.3-10[114X):  the  indexed  criteria are applied
  first,  whatever  order  the  criteria  are  given in, and only the groups a
  remaining criterion must be tested on are constructed.[133X
  
  [1X1.3-6 NumberSmallGroupsAvailable[101X
  
  [33X[1;0Y[29X[2XNumberSmallGroupsAvailable[102X( [3Xorder[103X ) [32X function[133X
  
  [33X[0;0Yreturns  [10Xtrue[110X  if  the  number  of groups of order [3Xorder[103X is known, and [10Xfalse[110X
  otherwise.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XNumberSmallGroupsAvailable( 100 );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XNumberSmallGroups( 100 );[127X[104X
    [4X[28X16[128X[104X
    [4X[25Xgap>[125X [27XNumberSmallGroupsAvailable( 4096 );[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XNumberSmallGroups( 4096 );[127X[104X
    [4X[28XError, the library of groups of size 4096 is not available[128X[104X
  [4X[32X[104X
  
  [1X1.3-7 SelectSmallGroups[101X
  
  [33X[1;0Y[29X[2XSelectSmallGroups[102X( [3Xargl[103X, [3Xall[103X, [3Xid[103X ) [32X function[133X
  
  [33X[0;0Yuniversal     function     for     [10XAllSmallGroups[110X,     [10XOneSmallGroup[110X     and
  [10XIdsOfAllSmallGroups[110X.[133X
  
  [1X1.3-8 IdSmallGroup[101X
  
  [33X[1;0Y[29X[2XIdSmallGroup[102X( [3XG[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XIdGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  the  library  number  of  [3XG[103X;  that  is, the function returns a pair
  [10X[[3Xorder[103X[10X, [3Xi[103X[10X][110X where [3XG[103X is isomorphic to [10XSmallGroup( [3Xorder[103X[10X, [3Xi[103X[10X )[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIdSmallGroup( GL( 2,3 ) );[127X[104X
    [4X[28X[ 48, 29 ][128X[104X
    [4X[25Xgap>[125X [27XIdSmallGroup( Group( (1,2,3,4),(4,5) ) );[127X[104X
    [4X[28X[ 120, 34 ][128X[104X
  [4X[32X[104X
  
  [1X1.3-9 IdGroupsAvailable[101X
  
  [33X[1;0Y[29X[2XIdGroupsAvailable[102X( [3Xorder[103X ) [32X function[133X
  
  [33X[0;0Yreturns  [10Xtrue[110X  if  the identification routines for groups of order [3Xorder[103X are
  installed, and [10Xfalse[110X otherwise.[133X
  
  [1X1.3-10 IdsOfAllSmallGroups[101X
  
  [33X[1;0Y[29X[2XIdsOfAllSmallGroups[102X( [3Xarg[103X ) [32X function[133X
  
  [33X[0;0Ysimilar  to  [10XAllSmallGroups[110X  but  returns  ids  instead  of groups. This may
  prevent  workspace overflows if a large number of groups are expected in the
  output.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIdsOfAllSmallGroups( 60, IsNilpotentGroup );[127X[104X
    [4X[28X[ [ 60, 4 ], [ 60, 13 ] ][128X[104X
    [4X[25Xgap>[125X [27XIdsOfAllSmallGroups( 60, IsNilpotentGroup, false );[127X[104X
    [4X[28X[ [ 60, 1 ], [ 60, 2 ], [ 60, 3 ], [ 60, 5 ], [ 60, 6 ], [ 60, 7 ], [128X[104X
    [4X[28X  [ 60, 8 ], [ 60, 9 ], [ 60, 10 ], [ 60, 11 ], [ 60, 12 ] ][128X[104X
    [4X[25Xgap>[125X [27XIdsOfAllSmallGroups( Size, 60, IsSupersolvableGroup, true );[127X[104X
    [4X[28X[ [ 60, 1 ], [ 60, 2 ], [ 60, 3 ], [ 60, 4 ], [ 60, 6 ], [ 60, 7 ], [128X[104X
    [4X[28X  [ 60, 8 ], [ 60, 10 ], [ 60, 11 ], [ 60, 12 ], [ 60, 13 ] ][128X[104X
  [4X[32X[104X
  
  [1X1.3-11 IdGap3SolvableGroup[101X
  
  [33X[1;0Y[29X[2XIdGap3SolvableGroup[102X( [3XG[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XGap3CatalogueIdGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns the catalogue number of [3XG[103X in the [5XGAP[105X 3 catalogue of solvable groups;
  that is, the function returns a pair [10X[[3Xorder[103X[10X, [3Xi[103X[10X][110X meaning that [3XG[103X is isomorphic
  to the group [10XSolvableGroup( [3Xorder[103X[10X, [3Xi[103X[10X )[110X in [5XGAP[105X 3.[133X
  
  [1X1.3-12 SmallGroupsInformation[101X
  
  [33X[1;0Y[29X[2XSmallGroupsInformation[102X( [3Xorder[103X ) [32X function[133X
  
  [33X[0;0Yprints information on the groups of the specified order.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSmallGroupsInformation( 32 );[127X[104X
    [4X[28X[128X[104X
    [4X[28X  There are 51 groups of order 32.[128X[104X
    [4X[28X  They are sorted by their ranks. [128X[104X
    [4X[28X     1 is cyclic. [128X[104X
    [4X[28X     2 - 20 have rank 2.[128X[104X
    [4X[28X     21 - 44 have rank 3.[128X[104X
    [4X[28X     45 - 50 have rank 4.[128X[104X
    [4X[28X     51 is elementary abelian. [128X[104X
    [4X[28X[128X[104X
    [4X[28X  The following selection criteria are indexed for this size:[128X[104X
    [4X[28X     IsAbelian, IsNilpotentGroup, IsSupersolvableGroup, IsSolvableGroup,[128X[104X
    [4X[28X     PClassPGroup, RankPGroup, FrattinifactorSize and FrattinifactorId.[128X[104X
    [4X[28X[128X[104X
    [4X[28X  This size belongs to layer 2 of the SmallGroups library. [128X[104X
    [4X[28X  IdSmallGroup is available for this size. [128X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
  [1X1.3-13 SmallGroupsAddLayer[101X
  
  [33X[1;0Y[29X[2XSmallGroupsAddLayer[102X( [3Xdesc[103X ) [32X function[133X
  
  [33X[0;0Yadds  a  further  layer  to  the  library, described by the record [3Xdesc[103X. Its
  groups  then  become available through [2XSmallGroup[102X ([14X1.3-1[114X), [2XNumberSmallGroups[102X
  ([14X1.3-5[114X), [2XAllSmallGroups[102X ([14X1.3-3[114X) and the other functions of this chapter. The
  components of [3Xdesc[103X are:[133X
  
  [8X[10Xname[110X[8X[108X
        [33X[0;6Ya string naming the layer. Must be unique. Can be used by other layers
        to refer to this one.[133X
  
  [8X[10Xavailable[110X[8X[108X
        [33X[0;6Ya function taking an order and either returning [9Xfail[109X, to indicate this
        layer  does  not  handle  the  given  order; or else a record which is
        handed  to the functions below as [3Xinforec[103X. The component [10Xnumber[110X of the
        returned record, if present, is the number of groups of that order.[133X
  
  [8X[10Xgroup[110X[8X[108X
        [33X[0;6Ya  function  [10X(  [3Xorder[103X[10X,  [3Xi[103X[10X,  [3Xinforec[103X[10X )[110X returning the [3Xi[103X-th group of that
        order.[133X
  
  [8X[10XidAvailable[110X[8X[108X
        [33X[0;6Yoptional,  a  function  taking  an order and either returning [9Xfail[109X, to
        indicate  this  layer  does not handle identification of groups of the
        given order; or else a record which is handed to the function [10Xid[110X below
        as  [3Xidrec[103X.  Defaults  to  [10Xavailable[110X,  so  it  is only needed where the
        identification  covers  other orders than the construction, or wants a
        record  of  its  own.  If  [10XidAvailable[110X is defined then [10Xid[110X must also be
        provided.[133X
  
  [8X[10Xid[110X[8X[108X
        [33X[0;6Yoptional,  a  function [10X( [3XG[103X[10X, [3Xidrec[103X[10X )[110X returning the index of [3XG[103X among the
        groups of its order. Without it [2XIdSmallGroup[102X ([14X1.3-8[114X) stays unavailable
        for these orders.[133X
  
  [8X[10Xnumber[110X[8X[108X
        [33X[0;6Yoptional, a function [10X( [3Xorder[103X[10X, [3Xinforec[103X[10X )[110X returning the number of groups
        of that order. Only needed if [10Xavailable[110X does not report this count.[133X
  
  [8X[10Xinformation[110X[8X[108X
        [33X[0;6Yoptional,  a  function  [10X(  [3Xorder[103X[10X,  [3Xinforec[103X[10X,  [3Xnumber[103X[10X  )[110X  printing  what
        [2XSmallGroupsInformation[102X ([14X1.3-12[114X) should say about that order beyond the
        number of groups.[133X
  
  [8X[10Xproperties[110X[8X[108X
        [33X[0;6Yoptional,  a  function  [10X(  [3Xorder[103X[10X,  [3Xinforec[103X[10X )[110X reporting which selection
        criteria  the [10Xselect[110X and [10Xcount[110X functions of this layer can deduce from
        the  position  of  the groups alone, so that [2XSelectSmallGroups[102X ([14X1.3-7[114X)
        and  [2XNumberSmallGroups[102X ([14X1.3-5[114X) need not construct the groups to decide
        these criteria.[133X
  
  [8X[10Xselect[110X[8X, [10Xcount[110X[8X[108X
        [33X[0;6Yoptional,  how [2XSelectSmallGroups[102X ([14X1.3-7[114X) and [2XNumberSmallGroups[102X ([14X1.3-5[114X)
        are to work through this layer. By default the groups of the order are
        constructed one by one and tested.[133X
  
  [8X[10Xbefore[110X[8X, [10Xafter[110X[8X[108X
        [33X[0;6Yoptional  lists  of  names  of  other  layers,  to  be consulted after
        respectively  before  this  one.  A  name  that  is  not registered is
        ignored,  so  wishing about a package that is not loaded does no harm.
        The layers of this package are themselves one layer, named [10X"SmallGrp"[110X,
        which without a wish to the contrary comes first.[133X
  
  [33X[0;0YWhere two layers cover an order, the one consulted first wins.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28XSmallGroupsAddLayer( rec([128X[104X
    [4X[28X    name := "SOTGrps",[128X[104X
    [4X[28X    available := function( order )[128X[104X
    [4X[28X        if not IsSOTAvailable( order ) then[128X[104X
    [4X[28X            return fail;[128X[104X
    [4X[28X        fi;[128X[104X
    [4X[28X        return rec( number := NumberOfSOTGroups( order ) );[128X[104X
    [4X[28X    end,[128X[104X
    [4X[28X    group := { order, i, inforec } -> SOTGroup( order, i ),[128X[104X
    [4X[28X    id := { G, inforec } -> IdSOTGroup( G )[2] ) );[128X[104X
  [4X[32X[104X
  
  [1X1.3-14 UnloadSmallGroupsData[101X
  
  [33X[1;0Y[29X[2XUnloadSmallGroupsData[102X(  ) [32X function[133X
  
  [33X[0;0Y[5XGAP[105X loads all necessary data from the library automatically, but it does not
  delete  the  data  from  the  workspace  again.  Usually,  this  will not be
  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.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XUnloadSmallGroupsData();[127X[104X
  [4X[32X[104X
  
  [1X1.3-15 SMALL_GROUPS_OLD_ORDER[101X
  
  [33X[1;0Y[29X[2XSMALL_GROUPS_OLD_ORDER[102X [32X global variable[133X
  
  [33X[0;0YIf  set to [10Xtrue[110X, then groups of order [22X3^7[122X, [22X5^7[122X, [22X7^7[122X, and [22X11^7[122X are ordered in
  the way they were ordered up to version 1.0 of the package. If this variable
  is  set  to  [10Xfalse[110X, which is the default as of version 1.4, then a different
  ordering,  that  agrees  with  the  one  in Magma version 2.23, is used. The
  functions  [10XSMALLGP_PERM[110X[22Xx[122X,  with  [22Xx=3,5,7,11[122X,  give  the  old  index position
  corresponding  to  a new index position. In releases 1.1-1.3 a misunderstood
  ordering,    based    on    the    old   ordering   and   the   permutations
  [22X(2,30083)(3,30084)(4,30085)(5,30086)[122X,
  [22X(2,104599)(3,104600)(4,104601)(5,104602)[122X,                                and
  [22X(2,721053)(3,721054)(4,721055)(5,721056)[122X respectively, was used.[133X
  
