  
  [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-14[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.[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. Unlike [5XSglPPow[105X, it does not extend this library: it
  comes with its own functions [10XSOTGroup[110X, [10XAllSOTGroups[110X and [10XIdSOTGroup[110X. 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 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-14 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
  
