  
  [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. There is an extensive [11XREADME[111X file for the Small
  Groups  library  available  in  the  [10Xsmall[110X directory of the [5XGAP[105X distribution
  containing  detailed  information  on the layers. A brief description of the
  layers is given here:[133X
  
  [8X(1)[108X
        [33X[0;6Ythe groups whose order factorises into at most 3 primes.[133X
  
  [8X(2)[108X
        [33X[0;6Ythe remaining groups of order at most 1000 except 512 and 768.[133X
  
  [8X(3)[108X
        [33X[0;6Ythe remaining groups of order [22X2^n ⋅ p[122X with [22Xn ≤ 8[122X and [22Xp[122X an odd prime.[133X
  
  [8X(4)[108X
        [33X[0;6Ythe  remaining  groups  of order [22X5^5[122X, [22X7^4[122X and of order [22Xq^n ⋅ p[122X for [22Xq^n[122X
        dividing [22X3^6[122X, [22X5^5[122X or [22X7^4[122X and [22Xp ≠ q[122X a prime.[133X
  
  [8X(5)[108X
        [33X[0;6Ythe remaining groups of order at most 2000 except 1024, 1152, 1536 and
        1920.[133X
  
  [8X(6)[108X
        [33X[0;6Ythe groups of orders 1152 and 1920.[133X
  
  [8X(7)[108X
        [33X[0;6Ythe groups of order 512.[133X
  
  [8X(8)[108X
        [33X[0;6Ythe groups of order 1536.[133X
  
  [8X(9)[108X
        [33X[0;6Ythe remaining groups of order [22Xp^n[122X for [22X4 ≤ n ≤ 6[122X.[133X
  
  [8X(10)[108X
        [33X[0;6Ythe  remaining  groups  of  cubefree  order  at  most  50  000  and of
        squarefree order.[133X
  
  [8X(11)[108X
        [33X[0;6Ythe remaining groups of order [22Xp^7[122X for [22Xp = 3,5,7,11[122X.[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;0YThe  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 [7Xhttp://www.icm.tu-bs.de/ag_algebra/software/small/[107X[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 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.[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 instated on
  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.2-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;0YFunction Reference[133X[101X
  
  [1X1.2-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.2-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.2-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 organized 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
  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;0YPrecomputed  information  is stored for the properties [2XIsAbelian[102X ([14XReference:
  IsAbelian[114X),       [2XIsNilpotentGroup[102X       ([14XReference:      IsNilpotentGroup[114X),
  [2XIsSupersolvableGroup[102X   ([14XReference:   IsSupersolvableGroup[114X),  [2XIsSolvableGroup[102X
  ([14XReference:    IsSolvableGroup[114X),    [2XRankPGroup[102X    ([14XReference:   RankPGroup[114X),
  [2XPClassPGroup[102X  ([14XReference:  PClassPGroup[114X),  [2XLGLength[102X  ([14XReference:  LGLength[114X),
  [10XFrattinifactorSize[110X and [10XFrattinifactorId[110X for the groups of order at most [22X2000[122X
  which  have  more  than three prime factors, except those of order [22X512[122X, [22X768[122X,
  [22X1024[122X, [22X1152[122X, [22X1536[122X, [22X1920[122X and those of order [22Xp^n ⋅ q > 1000[122X with [22Xn > 2[122X.[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.2-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.2-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.2-5 NumberSmallGroups[101X
  
  [33X[1;0Y[29X[2XNumberSmallGroups[102X( [3Xorder[103X ) [32X function[133X
  [33X[1;0Y[29X[2XNrSmallGroups[102X( [3Xorder[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
  
  [1X1.2-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.2-7 SelectSmallGroups[101X
  
  [33X[1;0Y[29X[2XSelectSmallGroups[102X( [3Xargl[103X, [3Xall[103X, [3Xid[103X ) [32X function[133X
  
  [33X[0;0Yuniversal     function    for    'AllSmallGroups',    'OneSmallGroup'    and
  'IdsOfAllSmallGroups'.[133X
  
  [1X1.2-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.2-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, otherwise returns [10Xfalse[110X.[133X
  
  [1X1.2-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.2-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.2-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  For the selection functions the values of the following attributes [128X[104X
    [4X[28X  are precomputed and stored:[128X[104X
    [4X[28X     IsAbelian, PClassPGroup, RankPGroup, FrattinifactorSize and [128X[104X
    [4X[28X     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.2-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 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.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XUnloadSmallGroupsData();[127X[104X
  [4X[32X[104X
  
  [1X1.2-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,721059)[122X respectively were used.[133X
  
  [33X[0;0Y [133X
  
