  
  [1X39 [33X[0;0YGroups[133X[101X
  
  [33X[0;0YThis  chapter  explains  how  to  create  groups  and defines operations for
  groups,  that  is  operations  whose  definition  does  not  depend  on  the
  representation used. However methods for these operations in most cases will
  make use of the representation.[133X
  
  [33X[0;0YIf not otherwise specified, in all examples in this chapter the group [10Xg[110X will
  be the symmetric group [22XS_4[122X acting on the letters [22X{ 1, ..., 4 }[122X.[133X
  
  
  [1X39.1 [33X[0;0YGroup Elements[133X[101X
  
  [33X[0;0YGroups  in [5XGAP[105X are written multiplicatively. The elements from which a group
  can  be  generated  must  permit multiplication and multiplicative inversion
  (see [14X31.14[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xa:=(1,2,3);;b:=(2,3,4);;[127X[104X
    [4X[25Xgap>[125X [27XOne(a);[127X[104X
    [4X[28X()[128X[104X
    [4X[25Xgap>[125X [27XInverse(b);[127X[104X
    [4X[28X(2,4,3)[128X[104X
    [4X[25Xgap>[125X [27Xa*b;[127X[104X
    [4X[28X(1,3)(2,4)[128X[104X
    [4X[25Xgap>[125X [27XOrder(a*b);[127X[104X
    [4X[28X2[128X[104X
    [4X[25Xgap>[125X [27XOrder( [ [ 1, 1 ], [ 0, 1 ] ] );[127X[104X
    [4X[28Xinfinity[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe  next  example may run into an infinite loop because the given matrix in
  fact has infinite order.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XOrder( [ [ 1, 1 ], [ 0, 1 ] ] * Indeterminate( Rationals ) );[127X[104X
    [4X[28X#I  Order: warning, order of <mat> might be infinite[128X[104X
  [4X[32X[104X
  
  [33X[0;0YSince  groups are domains, the recommended command to compute the order of a
  group  is  [2XSize[102X ([14X30.4-6[114X). For convenience, group orders can also be computed
  with [2XOrder[102X ([14X31.10-10[114X).[133X
  
  [33X[0;0YThe  operation  [2XComm[102X  ([14X31.12-3[114X) can be used to compute the commutator of two
  elements,  the  operation [2XLeftQuotient[102X ([14X31.12-2[114X) computes the product [22Xx^{-1}
  y[122X.[133X
  
  
  [1X39.2 [33X[0;0YCreating Groups[133X[101X
  
  [33X[0;0YWhen groups are created from generators, this means that the generators must
  be  elements  that  can  be  multiplied  and  inverted  (see also [14X31.3[114X). For
  creating a free group on a set of symbols, see [2XFreeGroup[102X ([14X37.2-1[114X).[133X
  
  
  [1X39.2-1 [33X[0;0YGroup[133X[101X
  
  [33X[1;0Y[29X[2XGroup[102X( [3Xgen[103X, [3X...[103X ) [32X function[133X
  [33X[1;0Y[29X[2XGroup[102X( [3Xgens[103X[, [3Xid[103X] ) [32X function[133X
  
  [33X[0;0Y[10XGroup( [3Xgen[103X[10X, ... )[110X is the group generated by the arguments [3Xgen[103X, ...[133X
  
  [33X[0;0YIf  the only argument [3Xgens[103X is a list that is not a matrix then [10XGroup( [3Xgens[103X[10X )[110X
  is the group generated by the elements of that list.[133X
  
  [33X[0;0YIf there are two arguments, a list [3Xgens[103X and an element [3Xid[103X, then [10XGroup( [3Xgens[103X[10X,
  [3Xid[103X[10X )[110X is the group generated by the elements of [3Xgens[103X, with identity [3Xid[103X.[133X
  
  [33X[0;0YNote  that the value of the attribute [2XGeneratorsOfGroup[102X ([14X39.2-4[114X) need not be
  equal   to   the   list   [3Xgens[103X   of  generators  entered  as  argument.  Use
  [2XGroupWithGenerators[102X  ([14X39.2-3[114X)  if you want to be sure that the argument [3Xgens[103X
  is stored as value of [2XGeneratorsOfGroup[102X ([14X39.2-4[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=Group((1,2,3,4),(1,2));[127X[104X
    [4X[28XGroup([ (1,2,3,4), (1,2) ])[128X[104X
  [4X[32X[104X
  
  [1X39.2-2 GroupByGenerators[101X
  
  [33X[1;0Y[29X[2XGroupByGenerators[102X( [3Xgens[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XGroupByGenerators[102X( [3Xgens[103X, [3Xid[103X ) [32X operation[133X
  
  [33X[0;0Y[2XGroupByGenerators[102X  returns  the  group  [22XG[122X  generated  by the list [3Xgens[103X. If a
  second argument [3Xid[103X is present then this is stored as the identity element of
  the group.[133X
  
  [33X[0;0YThe value of the attribute [2XGeneratorsOfGroup[102X ([14X39.2-4[114X) of [22XG[122X need not be equal
  to  [3Xgens[103X.  [2XGroupByGenerators[102X  is  the  underlying  operation called by [2XGroup[102X
  ([14X39.2-1[114X).[133X
  
  [1X39.2-3 GroupWithGenerators[101X
  
  [33X[1;0Y[29X[2XGroupWithGenerators[102X( [3Xgens[103X[, [3Xid[103X] ) [32X operation[133X
  
  [33X[0;0Y[2XGroupWithGenerators[102X  returns  the  group  [22XG[122X generated by the list [3Xgens[103X. If a
  second argument [3Xid[103X is present then this is stored as the identity element of
  the  group.  The  value  of the attribute [2XGeneratorsOfGroup[102X ([14X39.2-4[114X) of [22XG[122X is
  equal to [3Xgens[103X.[133X
  
  [1X39.2-4 GeneratorsOfGroup[101X
  
  [33X[1;0Y[29X[2XGeneratorsOfGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  a  list  of generators of the group [3XG[103X. If [3XG[103X has been created by the
  command  [2XGroupWithGenerators[102X  ([14X39.2-3[114X)  with  argument  [3Xgens[103X,  then the list
  returned  by [2XGeneratorsOfGroup[102X will be equal to [3Xgens[103X. For such a group, each
  generator  can also be accessed using the [10X.[110X operator (see [2XGeneratorsOfDomain[102X
  ([14X31.9-2[114X)):  for  a  positive  integer [22Xi[122X, [10X[3XG[103X[10X.i[110X returns the [22Xi[122X-th element of the
  list returned by [2XGeneratorsOfGroup[102X. Moreover, if [3XG[103X is a free group, and [10Xname[110X
  is the name of a generator of [3XG[103X then [10X[3XG[103X[10X.name[110X also returns this generator.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=GroupWithGenerators([(1,2,3,4),(1,2)]);[127X[104X
    [4X[28XGroup([ (1,2,3,4), (1,2) ])[128X[104X
    [4X[25Xgap>[125X [27XGeneratorsOfGroup(g);[127X[104X
    [4X[28X[ (1,2,3,4), (1,2) ][128X[104X
  [4X[32X[104X
  
  [33X[0;0YWhile  in  this example [5XGAP[105X displays the group via the generating set stored
  in  the  attribute [2XGeneratorsOfGroup[102X, the methods installed for [2XView[102X ([14X6.3-3[114X)
  will in general display only some information about the group which may even
  be just the fact that it is a group.[133X
  
  [1X39.2-5 AsGroup[101X
  
  [33X[1;0Y[29X[2XAsGroup[102X( [3XD[103X ) [32X attribute[133X
  
  [33X[0;0Yif  the  elements  of the collection [3XD[103X form a group the command returns this
  group, otherwise it returns [9Xfail[109X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XAsGroup([(1,2)]);[127X[104X
    [4X[28Xfail[128X[104X
    [4X[25Xgap>[125X [27XAsGroup([(),(1,2)]);[127X[104X
    [4X[28XGroup([ (1,2) ])[128X[104X
  [4X[32X[104X
  
  [1X39.2-6 ConjugateGroup[101X
  
  [33X[1;0Y[29X[2XConjugateGroup[102X( [3XG[103X, [3Xobj[103X ) [32X operation[133X
  
  [33X[0;0Yreturns  the  conjugate  group  of  [3XG[103X,  obtained by applying the conjugating
  element [3Xobj[103X.[133X
  
  [33X[0;0YTo form a conjugate (group) by any object acting via [10X^[110X, one can also use the
  infix operator [10X^[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XConjugateGroup(g,(1,5));[127X[104X
    [4X[28XGroup([ (2,3,4,5), (2,5) ])[128X[104X
  [4X[32X[104X
  
  [1X39.2-7 IsGroup[101X
  
  [33X[1;0Y[29X[2XIsGroup[102X( [3Xobj[103X ) [32X Category[133X
  
  [33X[0;0YA  group  is  a  magma-with-inverses  (see [2XIsMagmaWithInverses[102X ([14X35.1-4[114X)) and
  associative (see [2XIsAssociative[102X ([14X35.4-7[114X)) multiplication.[133X
  
  [33X[0;0Y[10XIsGroup[110X  tests whether the object [3Xobj[103X fulfills these conditions, it does [13Xnot[113X
  test   whether   [3Xobj[103X  is  a  set  of  elements  that  forms  a  group  under
  multiplication;  use  [2XAsGroup[102X  ([14X39.2-5[114X)  if you want to perform such a test.
  (See [14X13.3[114X for details about categories.)[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIsGroup(g);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X39.2-8 InfoGroup[101X
  
  [33X[1;0Y[29X[2XInfoGroup[102X [32X info class[133X
  
  [33X[0;0Yis the info class for the generic group theoretic functions (see [14X7.4[114X).[133X
  
  
  [1X39.3 [33X[0;0YSubgroups[133X[101X
  
  [33X[0;0YFor  the  general concept of parents and subdomains, see [14X31.7[114X and [14X31.8[114X. More
  functions   that   construct   certain   subgroups   can  be  found  in  the
  sections [14X39.11[114X, [14X39.12[114X, [14X39.13[114X, and [14X39.14[114X.[133X
  
  [33X[0;0YIf  a  group  [22XU[122X  is  created as a subgroup of another group [22XG[122X, [22XG[122X becomes the
  parent  of [22XU[122X. There is no [21Xuniversal[121X parent group, parent-child chains can be
  arbitrary long. [5XGAP[105X stores the result of some operations (such as [2XNormalizer[102X
  ([14X39.11-1[114X)) with the parent as an attribute.[133X
  
  [1X39.3-1 Subgroup[101X
  
  [33X[1;0Y[29X[2XSubgroup[102X( [3XG[103X, [3Xgens[103X ) [32X function[133X
  [33X[1;0Y[29X[2XSubgroupNC[102X( [3XG[103X, [3Xgens[103X ) [32X function[133X
  [33X[1;0Y[29X[2XSubgroup[102X( [3XG[103X ) [32X function[133X
  
  [33X[0;0Ycreates  the subgroup [3XU[103X of [3XG[103X generated by [3Xgens[103X. The [2XParent[102X ([14X31.7-1[114X) value of
  [3XU[103X  will  be  [3XG[103X.  The [10XNC[110X version does not check, whether the elements in [3Xgens[103X
  actually lie in [3XG[103X.[133X
  
  [33X[0;0YThe  unary version of [2XSubgroup[102X creates a (shell) subgroup that does not even
  know  generators  but  can be used to collect information about a particular
  subgroup over time.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xu:=Subgroup(g,[(1,2,3),(1,2)]);[127X[104X
    [4X[28XGroup([ (1,2,3), (1,2) ])[128X[104X
  [4X[32X[104X
  
  
  [1X39.3-2 [33X[0;0YIndex ([5XGAP[105X[101X[1X operation)[133X[101X
  
  [33X[1;0Y[29X[2XIndex[102X( [3XG[103X, [3XU[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XIndexNC[102X( [3XG[103X, [3XU[103X ) [32X operation[133X
  
  [33X[0;0YFor  a  subgroup [3XU[103X of the group [3XG[103X, [2XIndex[102X returns the index [22X[[3XG[103X:[3XU[103X] = |[3XG[103X| / |[3XU[103X|[122X
  of [3XU[103X in [3XG[103X. The [10XNC[110X version does not test whether [3XU[103X is contained in [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIndex(g,u);[127X[104X
    [4X[28X4[128X[104X
  [4X[32X[104X
  
  [1X39.3-3 IndexInWholeGroup[101X
  
  [33X[1;0Y[29X[2XIndexInWholeGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YIf  the  family  of  elements  of  [3XG[103X  itself forms a group [3XP[103X, this attribute
  returns  the  index  of  [3XG[103X  in  [3XP[103X.  It  is used primarily for free groups or
  finitely presented groups.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xfreegp:=FreeGroup(1);;[127X[104X
    [4X[25Xgap>[125X [27Xfreesub:=Subgroup(freegp,[freegp.1^5]);;[127X[104X
    [4X[25Xgap>[125X [27XIndexInWholeGroup(freesub);[127X[104X
    [4X[28X5[128X[104X
  [4X[32X[104X
  
  [1X39.3-4 AsSubgroup[101X
  
  [33X[1;0Y[29X[2XAsSubgroup[102X( [3XG[103X, [3XU[103X ) [32X operation[133X
  
  [33X[0;0Ycreates a subgroup of [3XG[103X which contains the same elements as [3XU[103X[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xv:=AsSubgroup(g,Group((1,2,3),(1,4)));[127X[104X
    [4X[28XGroup([ (1,2,3), (1,4) ])[128X[104X
    [4X[25Xgap>[125X [27XParent(v);[127X[104X
    [4X[28XGroup([ (1,2,3,4), (1,2) ])[128X[104X
  [4X[32X[104X
  
  [1X39.3-5 IsSubgroup[101X
  
  [33X[1;0Y[29X[2XIsSubgroup[102X( [3XG[103X, [3XU[103X ) [32X function[133X
  
  [33X[0;0Y[10XIsSubgroup[110X  returns  [9Xtrue[109X  if [3XU[103X is a group that is a subset of the domain [3XG[103X.
  This  is actually checked by calling [10XIsGroup( [3XU[103X[10X )[110X and [10XIsSubset( [3XG[103X[10X, [3XU[103X[10X )[110X; note
  that  special  methods  for  [2XIsSubset[102X  ([14X30.5-1[114X) are available that test only
  generators of [3XU[103X if [3XG[103X is closed under the group operations. So in most cases,
  for  example  whenever  one knows already that [3XU[103X is a group, it is better to
  call only [2XIsSubset[102X ([14X30.5-1[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIsSubgroup(g,u);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xv:=Group((1,2,3),(1,2));[127X[104X
    [4X[28XGroup([ (1,2,3), (1,2) ])[128X[104X
    [4X[25Xgap>[125X [27Xu=v;[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsSubgroup(g,v);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X39.3-6 IsNormal[101X
  
  [33X[1;0Y[29X[2XIsNormal[102X( [3XG[103X, [3XU[103X ) [32X operation[133X
  
  [33X[0;0Yreturns [9Xtrue[109X if the group [3XG[103X normalizes the group [3XU[103X and [9Xfalse[109X otherwise.[133X
  
  [33X[0;0YA  group [3XG[103X [13Xnormalizes[113X a group [3XU[103X if and only if for every [22Xg ∈ [3XG[103X[122X and [22Xu ∈ [3XU[103X[122X the
  element [22Xu^g[122X is a member of [3XU[103X. Note that [3XU[103X need not be a subgroup of [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIsNormal(g,u);[127X[104X
    [4X[28Xfalse[128X[104X
  [4X[32X[104X
  
  [1X39.3-7 IsCharacteristicSubgroup[101X
  
  [33X[1;0Y[29X[2XIsCharacteristicSubgroup[102X( [3XG[103X, [3XN[103X ) [32X operation[133X
  
  [33X[0;0Ytests whether [3XN[103X is invariant under all automorphisms of [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIsCharacteristicSubgroup(g,u);[127X[104X
    [4X[28Xfalse[128X[104X
  [4X[32X[104X
  
  [1X39.3-8 ConjugateSubgroup[101X
  
  [33X[1;0Y[29X[2XConjugateSubgroup[102X( [3XG[103X, [3Xg[103X ) [32X operation[133X
  
  [33X[0;0YFor  a group [3XG[103X which has a parent group [10XP[110X (see [2XParent[102X ([14X31.7-1[114X)), returns the
  subgroup of [10XP[110X, obtained by conjugating [3XG[103X using the conjugating element [3Xg[103X.[133X
  
  [33X[0;0YIf  [3XG[103X  has  no parent group, it just delegates to the call to [2XConjugateGroup[102X
  ([14X39.2-6[114X) with the same arguments.[133X
  
  [33X[0;0YTo  form a conjugate (subgroup) by any object acting via [10X^[110X, one can also use
  the infix operator [10X^[110X.[133X
  
  [1X39.3-9 ConjugateSubgroups[101X
  
  [33X[1;0Y[29X[2XConjugateSubgroups[102X( [3XG[103X, [3XU[103X ) [32X operation[133X
  
  [33X[0;0Yreturns a list of all images of the group [3XU[103X under conjugation action by [3XG[103X.[133X
  
  [1X39.3-10 IsSubnormal[101X
  
  [33X[1;0Y[29X[2XIsSubnormal[102X( [3XG[103X, [3XU[103X ) [32X operation[133X
  
  [33X[0;0YA  subgroup  [3XU[103X of the group [3XG[103X is subnormal if it is contained in a subnormal
  series of [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIsSubnormal(g,Group((1,2,3)));[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XIsSubnormal(g,Group((1,2)(3,4)));[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X39.3-11 SubgroupByProperty[101X
  
  [33X[1;0Y[29X[2XSubgroupByProperty[102X( [3XG[103X, [3Xprop[103X ) [32X function[133X
  
  [33X[0;0Ycreates  a subgroup of [3XG[103X consisting of those elements fulfilling [3Xprop[103X (which
  is a tester function). No test is done whether the property actually defines
  a subgroup.[133X
  
  [33X[0;0YNote  that currently very little functionality beyond an element test exists
  for groups created this way.[133X
  
  [1X39.3-12 SubgroupShell[101X
  
  [33X[1;0Y[29X[2XSubgroupShell[102X( [3XG[103X ) [32X function[133X
  
  [33X[0;0Ycreates  a  subgroup  of  [3XG[103X which at this point is not yet specified further
  (but will be later, for example by assigning a generating set).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xu:=SubgroupByProperty(g,i->3^i=3);[127X[104X
    [4X[28X<subgrp of Group([ (1,2,3,4), (1,2) ]) by property>[128X[104X
    [4X[25Xgap>[125X [27X(1,3) in u; (1,4) in u; (1,5) in u;[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[28Xtrue[128X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XGeneratorsOfGroup(u);[127X[104X
    [4X[28X[ (1,2), (1,4,2) ][128X[104X
    [4X[25Xgap>[125X [27Xu:=SubgroupShell(g);[127X[104X
    [4X[28X<group>[128X[104X
  [4X[32X[104X
  
  
  [1X39.4 [33X[0;0YClosures of (Sub)groups[133X[101X
  
  [1X39.4-1 ClosureGroup[101X
  
  [33X[1;0Y[29X[2XClosureGroup[102X( [3XG[103X, [3Xobj[103X ) [32X operation[133X
  
  [33X[0;0Ycreates  the group generated by the elements of [3XG[103X and [3Xobj[103X. [3Xobj[103X can be either
  an element or a collection of elements, in particular another group.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=SmallGroup(24,12);;u:=Subgroup(g,[g.3,g.4]);[127X[104X
    [4X[28XGroup([ f3, f4 ])[128X[104X
    [4X[25Xgap>[125X [27XClosureGroup(u,g.2);[127X[104X
    [4X[28XGroup([ f2, f3, f4 ])[128X[104X
    [4X[25Xgap>[125X [27XClosureGroup(u,[g.1,g.2]);[127X[104X
    [4X[28XGroup([ f1, f2, f3, f4 ])[128X[104X
    [4X[25Xgap>[125X [27XClosureGroup(u,Group(g.2*g.1));[127X[104X
    [4X[28XGroup([ f1*f2^2, f3, f4 ])[128X[104X
  [4X[32X[104X
  
  [1X39.4-2 ClosureGroupAddElm[101X
  
  [33X[1;0Y[29X[2XClosureGroupAddElm[102X( [3XG[103X, [3Xelm[103X ) [32X function[133X
  [33X[1;0Y[29X[2XClosureGroupCompare[102X( [3XG[103X, [3Xelm[103X ) [32X function[133X
  [33X[1;0Y[29X[2XClosureGroupIntest[102X( [3XG[103X, [3Xelm[103X ) [32X function[133X
  
  [33X[0;0YThese  three  functions together with [2XClosureGroupDefault[102X ([14X39.4-3[114X) implement
  the main methods for [2XClosureGroup[102X ([14X39.4-1[114X). In the ordering given, they just
  add [3Xelm[103X to the generators, remove duplicates and identity elements, and test
  whether [3Xelm[103X is already contained in [3XG[103X.[133X
  
  [1X39.4-3 ClosureGroupDefault[101X
  
  [33X[1;0Y[29X[2XClosureGroupDefault[102X( [3XG[103X, [3Xelm[103X ) [32X function[133X
  
  [33X[0;0YThis functions returns the closure of the group [3XG[103X with the element [3Xelm[103X. If [3XG[103X
  has  the  attribute  [2XAsSSortedList[102X  ([14X30.3-10[114X)  then also the result has this
  attribute.  This  is  used  to  implement  the default method for [2XEnumerator[102X
  ([14X30.3-2[114X) and [2XEnumeratorSorted[102X ([14X30.3-3[114X).[133X
  
  [1X39.4-4 ClosureSubgroup[101X
  
  [33X[1;0Y[29X[2XClosureSubgroup[102X( [3XG[103X, [3Xobj[103X ) [32X function[133X
  [33X[1;0Y[29X[2XClosureSubgroupNC[102X( [3XG[103X, [3Xobj[103X ) [32X function[133X
  
  [33X[0;0YFor  a  group [3XG[103X that stores a parent group (see [14X31.7[114X), [2XClosureSubgroup[102X calls
  [2XClosureGroup[102X  ([14X39.4-1[114X)  with the same arguments; if the result is a subgroup
  of  the  parent  of  [3XG[103X  then the parent of [3XG[103X is set as parent of the result,
  otherwise  an  error is raised. The check whether the result is contained in
  the  parent of [3XG[103X is omitted by the [10XNC[110X version. As a wrong parent might imply
  wrong properties this version should be used with care.[133X
  
  
  [1X39.5 [33X[0;0YExpressing Group Elements as Words in Generators[133X[101X
  
  [33X[0;0YUsing  homomorphisms  (see  chapter [14X40[114X)  it  is  possible  to  express group
  elements  as  words  in given generators: Create a free group (see [2XFreeGroup[102X
  ([14X37.2-1[114X)) on the correct number of generators and create a homomorphism from
  this  free group onto the group [3XG[103X in whose generators you want to factorize.
  Then  the preimage of an element of [3XG[103X is a word in the free generators, that
  will map on this element again.[133X
  
  [1X39.5-1 EpimorphismFromFreeGroup[101X
  
  [33X[1;0Y[29X[2XEpimorphismFromFreeGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YFor  a  group  [3XG[103X  with  a  known  generating  set,  this attribute returns a
  homomorphism  from  a  free  group  that  maps  the  free  generators to the
  generators of [3XG[103X.[133X
  
  [33X[0;0YThe  option  [10Xnames[110X  can  be  used  to  prescribe a (print) name for the free
  generators.[133X
  
  [33X[0;0YThe  following  example  shows  how  to  decompose  elements  of  [22XS_4[122X in the
  generators [10X(1,2,3,4)[110X and [10X(1,2)[110X:[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=Group((1,2,3,4),(1,2));[127X[104X
    [4X[28XGroup([ (1,2,3,4), (1,2) ])[128X[104X
    [4X[25Xgap>[125X [27Xhom:=EpimorphismFromFreeGroup(g:names:=["x","y"]);[127X[104X
    [4X[28X[ x, y ] -> [ (1,2,3,4), (1,2) ][128X[104X
    [4X[25Xgap>[125X [27XPreImagesRepresentative(hom,(1,4));[127X[104X
    [4X[28Xy^-1*x^-1*(x^-1*y^-1)^2*x[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe  following  example  stems  from  a  real  request  to the [5XGAP[105X Forum. In
  September  2000  a  [5XGAP[105X  user  working  with  puzzles  wanted to express the
  permutation [10X(1,2)[110X as a word as short as possible in particular generators of
  the symmetric group [22XS_16[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xperms := [ (1,2,3,7,11,10,9,5), (2,3,4,8,12,11,10,6),[127X[104X
    [4X[25X>[125X [27X  (5,6,7,11,15,14,13,9), (6,7,8,12,16,15,14,10) ];;[127X[104X
    [4X[25Xgap>[125X [27Xpuzzle := Group( perms );;Size( puzzle );[127X[104X
    [4X[28X20922789888000[128X[104X
    [4X[25Xgap>[125X [27Xhom:=EpimorphismFromFreeGroup(puzzle:names:=["a", "b", "c", "d"]);;[127X[104X
    [4X[25Xgap>[125X [27Xword := PreImagesRepresentative( hom, (1,2) );[127X[104X
    [4X[28Xa^-1*c*b*c^-1*a*b^-1*a^-2*c^-1*a*b^-1*c*b[128X[104X
    [4X[25Xgap>[125X [27XLength( word );[127X[104X
    [4X[28X13[128X[104X
  [4X[32X[104X
  
  [1X39.5-2 Factorization[101X
  
  [33X[1;0Y[29X[2XFactorization[102X( [3XG[103X, [3Xelm[103X ) [32X operation[133X
  
  [33X[0;0Yreturns  a  factorization  of  [3Xelm[103X  as word in the generators of the group [3XG[103X
  given   in   the   attribute   [2XGeneratorsOfGroup[102X   ([14X39.2-4[114X).  The  attribute
  [2XEpimorphismFromFreeGroup[102X  ([14X39.5-1[114X)  of  [3XG[103X  will  contain a map from the free
  group  in  which  the  word  is  expressed  to  the  group  [3XG[103X. The attribute
  [2XMappingGeneratorsImages[102X ([14X40.10-2[114X) of this map gives a list of generators and
  corresponding letters.[133X
  
  [33X[0;0YThe algorithm used forms all elements of the group to ensure a short word is
  found.  Therefore this function should [13Xnot[113X be used when the group [3XG[103X has more
  than  a  few  million  elements.  Because  of this, one should not call this
  function within algorithms, but use homomorphisms instead.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG:=SymmetricGroup( 6 );;[127X[104X
    [4X[25Xgap>[125X [27Xr:=(3,4);; s:=(1,2,3,4,5,6);;[127X[104X
    [4X[25Xgap>[125X [27X# create subgroup to force the system to use the generators r and s:[127X[104X
    [4X[25Xgap>[125X [27XH:= Subgroup(G, [ r, s ] );[127X[104X
    [4X[28XGroup([ (3,4), (1,2,3,4,5,6) ])[128X[104X
    [4X[25Xgap>[125X [27XFactorization( H, (1,2,3) );[127X[104X
    [4X[28X(x2*x1)^2*x2^-2[128X[104X
    [4X[25Xgap>[125X [27Xs*r*s*r*s^-2;[127X[104X
    [4X[28X(1,2,3)[128X[104X
    [4X[25Xgap>[125X [27XMappingGeneratorsImages(EpimorphismFromFreeGroup(H));[127X[104X
    [4X[28X[ [ x1, x2 ], [ (3,4), (1,2,3,4,5,6) ] ][128X[104X
  [4X[32X[104X
  
  [1X39.5-3 GrowthFunctionOfGroup[101X
  
  [33X[1;0Y[29X[2XGrowthFunctionOfGroup[102X( [3XG[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XGrowthFunctionOfGroup[102X( [3XG[103X, [3Xradius[103X ) [32X operation[133X
  
  [33X[0;0YFor  a  group  [3XG[103X  with a generating set given in [2XGeneratorsOfGroup[102X ([14X39.2-4[114X),
  this function calculates the number of elements whose shortest expression as
  words  in the generating set is of a particular length. It returns a list [3XL[103X,
  whose [22Xi+1[122X entry counts the number of elements whose shortest word expression
  has  length  [22Xi[122X. If a maximal length [3Xradius[103X is given, only words up to length
  [3Xradius[103X  are counted. Otherwise the group must be finite and all elements are
  enumerated.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XGrowthFunctionOfGroup(MathieuGroup(12));[127X[104X
    [4X[28X[ 1, 5, 19, 70, 255, 903, 3134, 9870, 25511, 38532, 16358, 382 ][128X[104X
    [4X[25Xgap>[125X [27XGrowthFunctionOfGroup(MathieuGroup(12),2);[127X[104X
    [4X[28X[ 1, 5, 19 ][128X[104X
    [4X[25Xgap>[125X [27XGrowthFunctionOfGroup(MathieuGroup(12),99);[127X[104X
    [4X[28X[ 1, 5, 19, 70, 255, 903, 3134, 9870, 25511, 38532, 16358, 382 ][128X[104X
    [4X[25Xgap>[125X [27Xfree:=FreeGroup("a","b");[127X[104X
    [4X[28X<free group on the generators [ a, b ]>[128X[104X
    [4X[25Xgap>[125X [27Xproduct:=free/ParseRelators(free,"a2,b3");[127X[104X
    [4X[28X<fp group on the generators [ a, b ]>[128X[104X
    [4X[25Xgap>[125X [27XSetIsFinite(product,false);[127X[104X
    [4X[25Xgap>[125X [27XGrowthFunctionOfGroup(product,10);[127X[104X
    [4X[28X[ 1, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64 ][128X[104X
  [4X[32X[104X
  
  
  [1X39.6 [33X[0;0YStructure Descriptions[133X[101X
  
  [1X39.6-1 StructureDescription[101X
  
  [33X[1;0Y[29X[2XStructureDescription[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThe  method for [2XStructureDescription[102X exhibits a structure of the given group
  [3XG[103X to some extent, using the strategy outlined below. The idea is to return a
  possibly  short  string  which  gives  some  insight in the structure of the
  considered group. It is intended primarily for small groups (order less than
  100)  or  groups  with  few  normal subgroups, in other cases, in particular
  large  [22Xp[122X-groups,  it can be very costly. Furthermore, the string returned is
  --  as  the  action  on chief factors is not described -- often not the most
  useful way to describe a group.[133X
  
  [33X[0;0YThe string returned by [2XStructureDescription[102X is [12Xnot[112X an isomorphism invariant:
  non-isomorphic  groups  can  have  the same string value, and two isomorphic
  groups in different representations can produce different strings. The value
  returned by [2XStructureDescription[102X is a string of the following form:[133X
  
  [4X[32X[104X
    [4X  StructureDescription(<G>) ::=[104X
    [4X      1                                 ; trivial group[104X
    [4X    | C<size>                           ; finite cyclic group[104X
    [4X    | Z                                 ; infinite cyclic group[104X
    [4X    | A<degree>                         ; alternating group[104X
    [4X    | S<degree>                         ; symmetric group[104X
    [4X    | D<size>                           ; dihedral group[104X
    [4X    | Q<size>                           ; quaternion group[104X
    [4X    | QD<size>                          ; quasidihedral group[104X
    [4X    | PSL(<n>,<q>)                      ; projective special linear group[104X
    [4X    | SL(<n>,<q>)                       ; special linear group[104X
    [4X    | GL(<n>,<q>)                       ; general linear group[104X
    [4X    | PSU(<n>,<q>)                      ; proj. special unitary group[104X
    [4X    | O(2<n>+1,<q>)                     ; orthogonal group, type B[104X
    [4X    | O+(2<n>,<q>)                      ; orthogonal group, type D[104X
    [4X    | O-(2<n>,<q>)                      ; orthogonal group, type 2D[104X
    [4X    | PSp(2<n>,<q>)                     ; proj. special symplectic group[104X
    [4X    | Sz(<q>)                           ; Suzuki group[104X
    [4X    | Ree(<q>)                          ; Ree group (type 2F or 2G)[104X
    [4X    | E(6,<q>) | E(7,<q>) | E(8,<q>)    ; Lie group of exceptional type[104X
    [4X    | 2E(6,<q>) | F(4,<q>) | G(2,<q>)[104X
    [4X    | 3D(4,<q>)                         ; Steinberg triality group[104X
    [4X    | M11 | M12 | M22 | M23 | M24[104X
    [4X    | J1 | J2 | J3 | J4 | Co1 | Co2[104X
    [4X    | Co3 | Fi22 | Fi23 | Fi24' | Suz[104X
    [4X    | HS | McL | He | HN | Th | B[104X
    [4X    | M | ON | Ly | Ru                  ; sporadic simple group[104X
    [4X    | 2F(4,2)'                          ; Tits group[104X
    [4X    | PerfectGroup(<size>,<id>)         ; the indicated group from the[104X
    [4X                                        ; library of perfect groups[104X
    [4X    | A x B                             ; direct product[104X
    [4X    | N : H                             ; semidirect product[104X
    [4X    | C(G) . G/C(G) = G' . G/G'         ; non-split extension[104X
    [4X                                        ; (equal alternatives and[104X
    [4X                                        ; trivial extensions omitted)[104X
    [4X    | Phi(G) . G/Phi(G)                 ; non-split extension:[104X
    [4X                                        ; Frattini subgroup and[104X
    [4X                                        ; Frattini factor group[104X
  [4X[32X[104X
  
  [33X[0;0YNote  that  the [2XStructureDescription[102X is only [13Xone[113X possible way of building up
  the given group from smaller pieces.[133X
  
  [33X[0;0YThe  option  [21Xshort[121X  is  recognized  -  if this option is set, an abbreviated
  output format is used (e.g. [10X"6x3"[110X instead of [10X"C6 x C3"[110X).[133X
  
  [33X[0;0YIf  the  [2XName[102X  ([14X12.8-2[114X) attribute is not bound, but [2XStructureDescription[102X is,
  [2XView[102X  ([14X6.3-3[114X)  prints  the  value of the attribute [2XStructureDescription[102X. The
  [2XPrint[102X  ([14X6.3-4[114X)ed  representation  of  a group is not affected by computing a
  [2XStructureDescription[102X.[133X
  
  [33X[0;0YThe strategy used to compute a [2XStructureDescription[102X is as follows:[133X
  
  [8X1.[108X
        [33X[0;6YLookup in a precomputed list, if the order of [3XG[103X is not larger than 100
        and not equal to 64 or 96.[133X
  
  [8X2.[108X
        [33X[0;6YIf  [3XG[103X  is abelian, then decompose it into cyclic factors in [21Xelementary
        divisors style[121X. For example, [10X"C2 x C3 x C3"[110X is [10X"C6 x C3"[110X. For infinite
        abelian groups, [10X"Z"[110X denotes the group of integers.[133X
  
  [8X3.[108X
        [33X[0;6YRecognize  alternating  groups,  symmetric  groups,  dihedral  groups,
        quasidihedral  groups, quaternion groups, PSL's, SL's, GL's and simple
        groups not listed so far as basic building blocks.[133X
  
  [8X4.[108X
        [33X[0;6YDecompose [3XG[103X into a direct product of irreducible factors.[133X
  
  [8X5.[108X
        [33X[0;6YRecognize  semidirect products [3XG[103X=[22XN[122X:[22XH[122X, where [22XN[122X is normal. Select a pair
        [22XN[122X, [22XH[122X with the following preferences:[133X
  
        [8X1.[108X
              [33X[0;12Yif  [3XG[103X  is defined as a semidirect product of [22XN[122X, [22XH[122X then select [22XN[122X,
              [22XH[122X,[133X
  
        [8X2.[108X
              [33X[0;12Yif [3XG[103X is solvable, then select a solvable normal Hall subgroup [22XN[122X,
              if  exists,  and  consider the semidirect decomposition of [22XN[122X and
              [22X[3XG[103X/N[122X,[133X
  
        [8X3.[108X
              [33X[0;12Yfind any nontrivial normal subgroup [22XN[122X which has a complement [22XH[122X.[133X
  
        [33X[0;6YThe  option  [21Xnice[121X  is  recognized.  If  this  option  is set, then all
        semidirect  products  are  computed  in order to find a possibly nicer
        presentation.  Note, that this may take a very long time if [3XG[103X has many
        normal  subgroups, e.g. if [22X[3XG[103X/[3XG[103X'[122X has many cyclic factors. If the option
        [21Xnice[121X  is  set,  then  GAP  would select a pair [22XN[122X, [22XH[122X with the following
        preferences:[133X
  
        [8X1.[108X
              [33X[0;12Y[22XH[122X is abelian[133X
  
        [8X2.[108X
              [33X[0;12Y[22XN[122X is abelian[133X
  
        [8X2a.[108X
              [33X[0;12Y[22XN[122X has many abelian invariants[133X
  
        [8X3.[108X
              [33X[0;12Y[22XN[122X is a direct product[133X
  
        [8X3a.[108X
              [33X[0;12Y[22XN[122X has many direct factors[133X
  
        [8X4.[108X
              [33X[0;12Y[22Xϕ: H →[122X Aut([22XN[122X), [22Xh ↦ (n ↦ n^h)[122X is injective.[133X
  
  [8X6.[108X
        [33X[0;6YFall back to non-splitting extensions: If the centre or the commutator
        factor  group  is  non-trivial,  write  [3XG[103X  as  [22XZ([3XG[103X)[122X.[22X[3XG[103X/Z([3XG[103X)[122X or [22X[3XG[103X'[122X.[22X[3XG[103X/[3XG[103X'[122X,
        respectively. Otherwise if the Frattini subgroup is non-trivial, write
        [3XG[103X as [22XΦ[122X([3XG[103X).[3XG[103X/[22XΦ[122X([3XG[103X).[133X
  
  [8X7.[108X
        [33X[0;6YIf  no  decomposition  is  found  (maybe  this is not the case for any
        finite  group),  try  to  identify [3XG[103X in the perfect groups library. If
        this fails also, then return a string describing this situation.[133X
  
  [33X[0;0YNote  that  [2XStructureDescription[102X  is [13Xnot[113X intended to be a research tool, but
  rather an educational tool. The reasons for this are as follows:[133X
  
  [8X1.[108X
        [33X[0;6Y[21XMost[121X  groups do not have [21Xnice[121X decompositions. This is in some contrast
        to  what  is often taught in elementary courses on group theory, where
        it is sometimes suggested that basically every group can be written as
        iterated  direct or semidirect product of cyclic groups and nonabelian
        simple groups.[133X
  
  [8X2.[108X
        [33X[0;6YIn   particular   many  [22Xp[122X-groups  have  very  [21Xsimilar[121X  structure,  and
        [2XStructureDescription[102X  can  only  exhibit a little of it. Changing this
        would  likely make the output not essentially easier to read than a pc
        presentation.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xl := AllSmallGroups(12);;[127X[104X
    [4X[25Xgap>[125X [27XList(l,StructureDescription);; l;[127X[104X
    [4X[28X[ C3 : C4, C12, A4, D12, C6 x C2 ][128X[104X
    [4X[25Xgap>[125X [27XList(AllSmallGroups(40),G->StructureDescription(G:short));[127X[104X
    [4X[28X[ "5:8", "40", "5:8", "5:Q8", "4xD10", "D40", "2x(5:4)", "(10x2):2",[128X[104X
    [4X[28X  "20x2", "5xD8", "5xQ8", "2x(5:4)", "2^2xD10", "10x2^2" ][128X[104X
    [4X[25Xgap>[125X [27XList(AllTransitiveGroups(DegreeAction,6),[127X[104X
    [4X[25X>[125X [27X        G->StructureDescription(G:short));[127X[104X
    [4X[28X[ "6", "S3", "D12", "A4", "3xS3", "2xA4", "S4", "S4", "S3xS3",[128X[104X
    [4X[28X  "(3^2):4", "2xS4", "A5", "(S3xS3):2", "S5", "A6", "S6" ][128X[104X
    [4X[25Xgap>[125X [27XStructureDescription(SmallGroup(504,7));[127X[104X
    [4X[28X"C7 : (C9 x Q8)"[128X[104X
    [4X[25Xgap>[125X [27XStructureDescription(SmallGroup(504,7):nice);[127X[104X
    [4X[28X"(C7 : Q8) : C9"[128X[104X
    [4X[25Xgap>[125X [27XStructureDescription(AbelianGroup([0,2,3]));[127X[104X
    [4X[28X"Z x C6"[128X[104X
    [4X[25Xgap>[125X [27XStructureDescription(AbelianGroup([0,0,0,2,3,6]):short);[127X[104X
    [4X[28X"Z^3x6^2"[128X[104X
    [4X[25Xgap>[125X [27XStructureDescription(PSL(4,2));[127X[104X
    [4X[28X"A8"[128X[104X
  [4X[32X[104X
  
  
  [1X39.7 [33X[0;0YCosets[133X[101X
  
  [1X39.7-1 RightCoset[101X
  
  [33X[1;0Y[29X[2XRightCoset[102X( [3XU[103X, [3Xg[103X ) [32X operation[133X
  
  [33X[0;0Yreturns  the right coset of [3XU[103X with representative [3Xg[103X, which is the set of all
  elements  of  the  form  [22Xug[122X  for all [22Xu ∈ [3XU[103X[122X. [3Xg[103X must be an element of a larger
  group  [3XG[103X  which  contains [3XU[103X. For element operations such as [9Xin[109X a right coset
  behaves like a set of group elements.[133X
  
  [33X[0;0YRight  cosets  are  external  orbits  for  the  action  of  [3XU[103X which acts via
  [2XOnLeftInverse[102X  ([14X41.2-3[114X).  Of  course the action of a larger group [3XG[103X on right
  cosets is via [2XOnRight[102X ([14X41.2-2[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xu:=Group((1,2,3), (1,2));;[127X[104X
    [4X[25Xgap>[125X [27Xc:=RightCoset(u,(2,3,4));[127X[104X
    [4X[28XRightCoset(Group( [ (1,2,3), (1,2) ] ),(2,3,4))[128X[104X
    [4X[25Xgap>[125X [27XActingDomain(c);[127X[104X
    [4X[28XGroup([ (1,2,3), (1,2) ])[128X[104X
    [4X[25Xgap>[125X [27XRepresentative(c);[127X[104X
    [4X[28X(2,3,4)[128X[104X
    [4X[25Xgap>[125X [27XSize(c);[127X[104X
    [4X[28X6[128X[104X
    [4X[25Xgap>[125X [27XAsList(c);[127X[104X
    [4X[28X[ (2,3,4), (1,4,2), (1,3,4,2), (1,3)(2,4), (2,4), (1,4,2,3) ][128X[104X
    [4X[25Xgap>[125X [27XIsBiCoset(c);[127X[104X
    [4X[28Xfalse[128X[104X
  [4X[32X[104X
  
  [1X39.7-2 RightCosets[101X
  
  [33X[1;0Y[29X[2XRightCosets[102X( [3XG[103X, [3XU[103X ) [32X function[133X
  [33X[1;0Y[29X[2XRightCosetsNC[102X( [3XG[103X, [3XU[103X ) [32X operation[133X
  
  [33X[0;0Ycomputes  a  duplicate  free  list  of  right cosets [3XU[103X [22Xg[122X for [22Xg ∈[122X [3XG[103X. A set of
  representatives for the elements in this list forms a right transversal of [3XU[103X
  in   [3XG[103X.   (By   inverting   the   representatives  one  obtains  a  list  of
  representatives  of  the  left  cosets  of [3XU[103X.) The [10XNC[110X version does not check
  whether [3XU[103X is a subgroup of [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XRightCosets(g,u);[127X[104X
    [4X[28X[ RightCoset(Group( [ (1,2,3), (1,2) ] ),()),[128X[104X
    [4X[28X  RightCoset(Group( [ (1,2,3), (1,2) ] ),(1,3)(2,4)),[128X[104X
    [4X[28X  RightCoset(Group( [ (1,2,3), (1,2) ] ),(1,4)(2,3)),[128X[104X
    [4X[28X  RightCoset(Group( [ (1,2,3), (1,2) ] ),(1,2)(3,4)) ][128X[104X
  [4X[32X[104X
  
  [1X39.7-3 CanonicalRightCosetElement[101X
  
  [33X[1;0Y[29X[2XCanonicalRightCosetElement[102X( [3XU[103X, [3Xg[103X ) [32X operation[133X
  
  [33X[0;0Yreturns  a  [21Xcanonical[121X  representative  of  the  right  coset  [3XU[103X  [3Xg[103X  which is
  independent  of  the  given  representative  [3Xg[103X.  This can be used to compare
  cosets by comparing their canonical representatives.[133X
  
  [33X[0;0YThe  representative  chosen  to  be  the  [21Xcanonical[121X  one  is  representation
  dependent and only guaranteed to remain the same within one [5XGAP[105X session.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XCanonicalRightCosetElement(u,(2,4,3));[127X[104X
    [4X[28X(3,4)[128X[104X
  [4X[32X[104X
  
  [1X39.7-4 IsRightCoset[101X
  
  [33X[1;0Y[29X[2XIsRightCoset[102X( [3Xobj[103X ) [32X Category[133X
  
  [33X[0;0YThe category of right cosets.[133X
  
  [33X[0;0Y[5XGAP[105X  does  not  provide left cosets as a separate data type, but as the left
  coset [22XgU[122X consists of exactly the inverses of the elements of the right coset
  [22XUg^{-1}[122X  calculations with left cosets can be emulated using right cosets by
  inverting the representatives.[133X
  
  [1X39.7-5 IsBiCoset[101X
  
  [33X[1;0Y[29X[2XIsBiCoset[102X( [3XC[103X ) [32X property[133X
  
  [33X[0;0YA  (right)  coset  [22XUg[122X  is  considered  a  [13Xbicoset[113X  if  its  set  of elements
  simultaneously forms a left coset for the same subgroup. This is the case if
  and only if the coset representative [22Xg[122X normalizes the subgroup [22XU[122X.[133X
  
  [1X39.7-6 CosetDecomposition[101X
  
  [33X[1;0Y[29X[2XCosetDecomposition[102X( [3XG[103X, [3XS[103X ) [32X function[133X
  
  [33X[0;0YFor  a finite group [3XG[103X and a subgroup [22X[3XS[103X ≤ [3XG[103X[122X this function returns a partition
  of  the  elements of [3XG[103X according to the (right) cosets of [3XS[103X. The result is a
  list of lists, each sublist corresponding to one coset. The first sublist is
  the elements list of the subgroup, the other lists are arranged accordingly.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XCosetDecomposition(SymmetricGroup(4),SymmetricGroup(3));[127X[104X
    [4X[28X[ [ (), (2,3), (1,2), (1,2,3), (1,3,2), (1,3) ],[128X[104X
    [4X[28X  [ (1,4), (1,4)(2,3), (1,2,4), (1,2,3,4), (1,3,2,4), (1,3,4) ],[128X[104X
    [4X[28X  [ (1,4,2), (1,4,2,3), (2,4), (2,3,4), (1,3)(2,4), (1,3,4,2) ],[128X[104X
    [4X[28X  [ (1,4,3), (1,4,3,2), (1,2,4,3), (1,2)(3,4), (2,4,3), (3,4) ] ][128X[104X
  [4X[32X[104X
  
  
  [1X39.8 [33X[0;0YTransversals[133X[101X
  
  [1X39.8-1 RightTransversal[101X
  
  [33X[1;0Y[29X[2XRightTransversal[102X( [3XG[103X, [3XU[103X ) [32X operation[133X
  
  [33X[0;0YA  right  transversal  [22Xt[122X  is  a list of representatives for the set [22X[3XU[103X ∖ [3XG[103X[122X of
  right cosets (consisting of cosets [22XUg[122X) of [22XU[122X in [22XG[122X.[133X
  
  [33X[0;0YThe  object  returned by [2XRightTransversal[102X is not a plain list, but an object
  that  behaves  like  an  immutable  list of length [22X[[3XG[103X:[3XU[103X][122X, except if [3XU[103X is the
  trivial  subgroup  of [3XG[103X in which case [2XRightTransversal[102X may return the sorted
  plain list of coset representatives.[133X
  
  [33X[0;0YThe operation [2XPositionCanonical[102X ([14X21.16-3[114X), called for a transversal [22Xt[122X and an
  element  [22Xg[122X  of  [3XG[103X,  will return the position of the representative in [22Xt[122X that
  lies  in the same coset of [3XU[103X as the element [22Xg[122X does. (In comparison, [2XPosition[102X
  ([14X21.16-1[114X)   will   return   [9Xfail[109X   if  the  element  is  not  equal  to  the
  representative.)  Functions  that  implement  group  actions  such as [2XAction[102X
  ([14X41.7-2[114X)  or  [2XPermutation[102X  ([14X41.9-1[114X)  (see  Chapter [14X41[114X) use [2XPositionCanonical[102X
  ([14X21.16-3[114X),  therefore  it  is  possible  to  [21Xact[121X  on  a right transversal to
  implement  the  action on the cosets. This is often much more efficient than
  acting on cosets.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=Group((1,2,3,4),(1,2));;[127X[104X
    [4X[25Xgap>[125X [27Xu:=Subgroup(g,[(1,2,3),(1,2)]);;[127X[104X
    [4X[25Xgap>[125X [27Xrt:=RightTransversal(g,u);[127X[104X
    [4X[28XRightTransversal(Group([ (1,2,3,4), (1,2) ]),Group([ (1,2,3), (1,2) ]))[128X[104X
    [4X[25Xgap>[125X [27XLength(rt);[127X[104X
    [4X[28X4[128X[104X
    [4X[25Xgap>[125X [27XPosition(rt,(1,2,3));[127X[104X
    [4X[28Xfail[128X[104X
  [4X[32X[104X
  
  [33X[0;0YNote  that the elements of a right transversal are not necessarily [21Xcanonical[121X
  in  the  sense  of [2XCanonicalRightCosetElement[102X ([14X39.7-3[114X), but we may compute a
  list  of canonical coset representatives by calling that function. (See also
  [2XPositionCanonical[102X ([14X21.16-3[114X).)[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XList(RightTransversal(g,u),i->CanonicalRightCosetElement(u,i));[127X[104X
    [4X[28X[ (), (2,3,4), (1,2,3,4), (3,4) ][128X[104X
    [4X[25Xgap>[125X [27XPositionCanonical(rt,(1,2,3));[127X[104X
    [4X[28X1[128X[104X
    [4X[25Xgap>[125X [27Xrt[1];[127X[104X
    [4X[28X()[128X[104X
  [4X[32X[104X
  
  
  [1X39.9 [33X[0;0YDouble Cosets[133X[101X
  
  [1X39.9-1 DoubleCoset[101X
  
  [33X[1;0Y[29X[2XDoubleCoset[102X( [3XU[103X, [3Xg[103X, [3XV[103X ) [32X operation[133X
  
  [33X[0;0YThe  groups [3XU[103X and [3XV[103X must be subgroups of a common supergroup [3XG[103X of which [3Xg[103X is
  an  element. This command constructs the double coset [3XU[103X [3Xg[103X [3XV[103X which is the set
  of all elements of the form [22Xugv[122X for any [22Xu ∈ [3XU[103X[122X, [22Xv ∈ [3XV[103X[122X. For element operations
  such  as [9Xin[109X, a double coset behaves like a set of group elements. The double
  coset  stores  [3XU[103X  in  the  attribute  [10XLeftActingGroup[110X,  [3Xg[103X  as [2XRepresentative[102X
  ([14X30.4-7[114X), and [3XV[103X as [10XRightActingGroup[110X.[133X
  
  [1X39.9-2 RepresentativesContainedRightCosets[101X
  
  [33X[1;0Y[29X[2XRepresentativesContainedRightCosets[102X( [3XD[103X ) [32X attribute[133X
  
  [33X[0;0YA double coset [22X[3XD[103X = U g V[122X can be considered as a union of right cosets [22XU h_i[122X.
  (It is the union of the orbit of [22XU g[122X under right multiplication by [22XV[122X.) For a
  double  coset [3XD[103X this function returns a set of representatives [22Xh_i[122X such that
  [3XD[103X  [22X=  ⋃_{h_i}  U  h_i[122X. The representatives returned are canonical for [22XU[122X (see
  [2XCanonicalRightCosetElement[102X ([14X39.7-3[114X)) and form a set.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xu:=Subgroup(g,[(1,2,3),(1,2)]);;v:=Subgroup(g,[(3,4)]);;[127X[104X
    [4X[25Xgap>[125X [27Xc:=DoubleCoset(u,(2,4),v);[127X[104X
    [4X[28XDoubleCoset(Group( [ (1,2,3), (1,2) ] ),(2,4),Group( [ (3,4) ] ))[128X[104X
    [4X[25Xgap>[125X [27X(1,2,3) in c;[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27X(2,3,4) in c;[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XLeftActingGroup(c);[127X[104X
    [4X[28XGroup([ (1,2,3), (1,2) ])[128X[104X
    [4X[25Xgap>[125X [27XRightActingGroup(c);[127X[104X
    [4X[28XGroup([ (3,4) ])[128X[104X
    [4X[25Xgap>[125X [27XRepresentativesContainedRightCosets(c);[127X[104X
    [4X[28X[ (2,3,4) ][128X[104X
  [4X[32X[104X
  
  [1X39.9-3 DoubleCosets[101X
  
  [33X[1;0Y[29X[2XDoubleCosets[102X( [3XG[103X, [3XU[103X, [3XV[103X ) [32X function[133X
  [33X[1;0Y[29X[2XDoubleCosetsNC[102X( [3XG[103X, [3XU[103X, [3XV[103X ) [32X operation[133X
  
  [33X[0;0Ycomputes  a  duplicate  free  list of all double cosets [3XU[103X [22Xg[122X [3XV[103X for [22Xg ∈ [3XG[103X[122X. The
  groups  [3XU[103X  and  [3XV[103X  must be subgroups of the group [3XG[103X. The [10XNC[110X version does not
  check whether [3XU[103X and [3XV[103X are subgroups of [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xdc:=DoubleCosets(g,u,v);[127X[104X
    [4X[28X[ DoubleCoset(Group( [ (1,2,3), (1,2) ] ),(),Group( [ (3,4) ] )),[128X[104X
    [4X[28X  DoubleCoset(Group( [ (1,2,3), (1,2) ] ),(1,3)(2,4),Group([128X[104X
    [4X[28X    [ (3,4) ] )), DoubleCoset(Group( [ (1,2,3), (1,2) ] ),(1,4)[128X[104X
    [4X[28X    (2,3),Group( [ (3,4) ] )) ][128X[104X
    [4X[25Xgap>[125X [27XList(dc,Representative);[127X[104X
    [4X[28X[ (), (1,3)(2,4), (1,4)(2,3) ][128X[104X
  [4X[32X[104X
  
  [1X39.9-4 IsDoubleCoset[101X
  
  [33X[1;0Y[29X[2XIsDoubleCoset[102X( [3Xobj[103X ) [32X Category[133X
  
  [33X[0;0YThe category of double cosets.[133X
  
  [1X39.9-5 DoubleCosetRepsAndSizes[101X
  
  [33X[1;0Y[29X[2XDoubleCosetRepsAndSizes[102X( [3XG[103X, [3XU[103X, [3XV[103X ) [32X operation[133X
  
  [33X[0;0Yreturns  a list of double coset representatives and their sizes, the entries
  are  lists  of  the form [22X[ r, n ][122X where [22Xr[122X and [22Xn[122X are an element of the double
  coset and the size of the coset, respectively. This operation is faster than
  [2XDoubleCosetsNC[102X ([14X39.9-3[114X) because no double coset objects have to be created.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xdc:=DoubleCosetRepsAndSizes(g,u,v);[127X[104X
    [4X[28X[ [ (), 12 ], [ (1,3)(2,4), 6 ], [ (1,4)(2,3), 6 ] ][128X[104X
  [4X[32X[104X
  
  [1X39.9-6 InfoCoset[101X
  
  [33X[1;0Y[29X[2XInfoCoset[102X [32X info class[133X
  
  [33X[0;0YThe information function for coset and double coset operations is [2XInfoCoset[102X.[133X
  
  
  [1X39.10 [33X[0;0YConjugacy Classes[133X[101X
  
  [1X39.10-1 ConjugacyClass[101X
  
  [33X[1;0Y[29X[2XConjugacyClass[102X( [3XG[103X, [3Xg[103X ) [32X operation[133X
  
  [33X[0;0Ycreates  the  conjugacy  class  in [3XG[103X with representative [3Xg[103X. This class is an
  external  set,  so  functions such as [2XRepresentative[102X ([14X30.4-7[114X) (which returns
  [3Xg[103X),   [2XActingDomain[102X  ([14X41.12-3[114X)  (which  returns  [3XG[103X),  [2XStabilizerOfExternalSet[102X
  ([14X41.12-10[114X) (which returns the centralizer of [3Xg[103X) and [2XAsList[102X ([14X30.3-8[114X) work for
  it.[133X
  
  [33X[0;0YA  conjugacy  class  is  an  external orbit (see [2XExternalOrbit[102X ([14X41.12-9[114X)) of
  group  elements  with  the  group  acting by conjugation on it. Thus element
  tests   or   operation   representatives  can  be  computed.  The  attribute
  [2XCentralizer[102X  ([14X35.4-4[114X)  gives the centralizer of the representative (which is
  the  same  result  as [2XStabilizerOfExternalSet[102X ([14X41.12-10[114X)). (This is a slight
  abuse  of  notation: This is [13Xnot[113X the centralizer of the class as a [13Xset[113X which
  would be the standard behaviour of [2XCentralizer[102X ([14X35.4-4[114X).)[133X
  
  [1X39.10-2 ConjugacyClasses[101X
  
  [33X[1;0Y[29X[2XConjugacyClasses[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns the conjugacy classes of elements of [3XG[103X as a list of class objects of
  [3XG[103X  (see [2XConjugacyClass[102X  ([14X39.10-1[114X)  for  details).  It is guaranteed that the
  class  of  the  identity  is  in the first position, the further arrangement
  depends  on  the  method  chosen  (and  might be different for equal but not
  identical groups).[133X
  
  [33X[0;0YFor  very  small  groups (of size up to 500) the classes will be computed by
  the   conjugation   action  of  [3XG[103X  on  itself  (see [2XConjugacyClassesByOrbits[102X
  ([14X39.10-4[114X)).  This can be deliberately switched off using the [21X[10Xnoaction[110X[121X option
  shown below.[133X
  
  [33X[0;0YFor  solvable  groups,  the  default  method  to  compute  the classes is by
  homomorphic lift (see section [14X45.17[114X).[133X
  
  [33X[0;0YFor other groups the method of [Hul00] is employed.[133X
  
  [33X[0;0Y[2XConjugacyClasses[102X  supports  the following options that can be used to modify
  this strategy:[133X
  
  [8X[10Xrandom[110X[8X[108X
        [33X[0;6YThe     classes     are     computed    by    random    search.    See
        [2XConjugacyClassesByRandomSearch[102X ([14X39.10-3[114X) below.[133X
  
  [8X[10Xaction[110X[8X[108X
        [33X[0;6YThe   classes   are   computed   by   action   of  [3XG[103X  on  itself.  See
        [2XConjugacyClassesByOrbits[102X ([14X39.10-4[114X) below.[133X
  
  [8X[10Xnoaction[110X[8X[108X
        [33X[0;6YEven  for  small groups [2XConjugacyClassesByOrbits[102X ([14X39.10-4[114X) is not used
        as  a  default.  This can be useful if the elements of the group use a
        lot of memory.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=SymmetricGroup(4);;[127X[104X
    [4X[25Xgap>[125X [27Xcl:=ConjugacyClasses(g);[127X[104X
    [4X[28X[ ()^G, (1,2)^G, (1,2)(3,4)^G, (1,2,3)^G, (1,2,3,4)^G ][128X[104X
    [4X[25Xgap>[125X [27XRepresentative(cl[3]);Centralizer(cl[3]);[127X[104X
    [4X[28X(1,2)(3,4)[128X[104X
    [4X[28XGroup([ (1,2), (1,3)(2,4), (3,4) ])[128X[104X
    [4X[25Xgap>[125X [27XSize(Centralizer(cl[5]));[127X[104X
    [4X[28X4[128X[104X
    [4X[25Xgap>[125X [27XSize(cl[2]);[127X[104X
    [4X[28X6[128X[104X
  [4X[32X[104X
  
  [33X[0;0YIn  general,  you  will not need to have to influence the method, but simply
  call  [2XConjugacyClasses[102X –[5XGAP[105X will try to select a suitable method on its own.
  The method specifications are provided here mainly for expert use.[133X
  
  [1X39.10-3 ConjugacyClassesByRandomSearch[101X
  
  [33X[1;0Y[29X[2XConjugacyClassesByRandomSearch[102X( [3XG[103X ) [32X function[133X
  
  [33X[0;0Ycomputes  the  classes  of  the  group  [3XG[103X  by random search. This works very
  efficiently for almost simple groups.[133X
  
  [33X[0;0YThis  function  is  also  accessible  via  the option [10Xrandom[110X to the function
  [2XConjugacyClass[102X ([14X39.10-1[114X).[133X
  
  [1X39.10-4 ConjugacyClassesByOrbits[101X
  
  [33X[1;0Y[29X[2XConjugacyClassesByOrbits[102X( [3XG[103X ) [32X function[133X
  
  [33X[0;0Ycomputes the classes of the group [3XG[103X as orbits of [3XG[103X on its elements. This can
  be  quick  but  unsurprisingly  may  also  take a lot of memory if [3XG[103X becomes
  larger.  All the classes will store their element list and thus a membership
  test will be quick as well.[133X
  
  [33X[0;0YThis  function  is  also  accessible  via  the option [10Xaction[110X to the function
  [2XConjugacyClass[102X ([14X39.10-1[114X).[133X
  
  [33X[0;0YTypically, for small groups (roughly of order up to [22X10^3[122X) the computation of
  classes  as orbits under the action is fastest; memory restrictions (and the
  increasing  cost  of  eliminating  duplicates)  make this less efficient for
  larger groups.[133X
  
  [33X[0;0YCalculation  by  random  search  has the smallest memory requirement, but in
  generally performs worse, the more classes are there.[133X
  
  [33X[0;0YThe  following  example shows the effect of this for a small group with many
  classes:[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xh:=Group((4,5)(6,7,8),(1,2,3)(5,6,9));;ConjugacyClasses(h:noaction);;time;[127X[104X
    [4X[28X110[128X[104X
    [4X[25Xgap>[125X [27Xh:=Group((4,5)(6,7,8),(1,2,3)(5,6,9));;ConjugacyClasses(h:random);;time;[127X[104X
    [4X[28X300[128X[104X
    [4X[25Xgap>[125X [27Xh:=Group((4,5)(6,7,8),(1,2,3)(5,6,9));;ConjugacyClasses(h:action);;time;[127X[104X
    [4X[28X30[128X[104X
  [4X[32X[104X
  
  [1X39.10-5 NrConjugacyClasses[101X
  
  [33X[1;0Y[29X[2XNrConjugacyClasses[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns the number of conjugacy classes of [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=Group((1,2,3,4),(1,2));;[127X[104X
    [4X[25Xgap>[125X [27XNrConjugacyClasses(g);[127X[104X
    [4X[28X5[128X[104X
  [4X[32X[104X
  
  [1X39.10-6 RationalClass[101X
  
  [33X[1;0Y[29X[2XRationalClass[102X( [3XG[103X, [3Xg[103X ) [32X operation[133X
  
  [33X[0;0Ycreates  the  rational  class  in  [3XG[103X with representative [3Xg[103X. A rational class
  consists  of  all  elements that are conjugate to [3Xg[103X or to an [22Xi[122X-th power of [3Xg[103X
  where  [22Xi[122X  is  coprime  to  the  order  of  [22Xg[122X.  Thus  a rational class can be
  interpreted as a conjugacy class of cyclic subgroups. A rational class is an
  external  set  ([2XIsExternalSet[102X  ([14X41.12-1[114X))  of  group elements with the group
  acting by conjugation on it, but not an external orbit.[133X
  
  [1X39.10-7 RationalClasses[101X
  
  [33X[1;0Y[29X[2XRationalClasses[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  a  list  of the rational classes of the group [3XG[103X. (See [2XRationalClass[102X
  ([14X39.10-6[114X).)[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XRationalClasses(DerivedSubgroup(g));[127X[104X
    [4X[28X[ RationalClass( AlternatingGroup( [ 1 .. 4 ] ), () ),[128X[104X
    [4X[28X  RationalClass( AlternatingGroup( [ 1 .. 4 ] ), (1,2)(3,4) ),[128X[104X
    [4X[28X  RationalClass( AlternatingGroup( [ 1 .. 4 ] ), (1,2,3) ) ][128X[104X
  [4X[32X[104X
  
  [1X39.10-8 GaloisGroup[101X
  
  [33X[1;0Y[29X[2XGaloisGroup[102X( [3Xratcl[103X ) [32X attribute[133X
  
  [33X[0;0YSuppose  that  [3Xratcl[103X is a rational class of a group [22XG[122X with representative [22Xg[122X.
  The  exponents  [22Xi[122X for which [22Xg^i[122X lies already in the ordinary conjugacy class
  of   [22Xg[122X,  form  a  subgroup  of  the  [13Xprime  residue  class  group[113X  [22XP_n[122X  (see
  [2XPrimitiveRootMod[102X  ([14X15.3-4[114X)),  the  so-called  [13XGalois  group[113X  of the rational
  class.  The  prime  residue  class  group  [22XP_n[122X  is obtained in [5XGAP[105X as [10XUnits(
  Integers  mod  [3Xn[103X[10X )[110X, the unit group of a residue class ring. The Galois group
  of  a  rational  class  [3Xratcl[103X  is  stored  in the attribute [2XGaloisGroup[102X as a
  subgroup of this group.[133X
  
  
  [1X39.10-9 [33X[0;0YIsConjugate[133X[101X
  
  [33X[1;0Y[29X[2XIsConjugate[102X( [3XG[103X, [3Xx[103X, [3Xy[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XIsConjugate[102X( [3XG[103X, [3XU[103X, [3XV[103X ) [32X operation[133X
  
  [33X[0;0Ytests  whether  the  elements [3Xx[103X and [3Xy[103X or the subgroups [3XU[103X and [3XV[103X are conjugate
  under the action of [3XG[103X. (They do not need to be [13Xcontained in[113X [3XG[103X.) This command
  is only a shortcut to [2XRepresentativeAction[102X ([14X41.6-1[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIsConjugate(g,Group((1,2,3,4),(1,3)),Group((1,3,2,4),(1,2)));[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [33X[0;0Y[2XRepresentativeAction[102X ([14X41.6-1[114X) can be used to obtain conjugating elements.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XRepresentativeAction(g,(1,2),(3,4));[127X[104X
    [4X[28X(1,3)(2,4)[128X[104X
  [4X[32X[104X
  
  [1X39.10-10 NthRootsInGroup[101X
  
  [33X[1;0Y[29X[2XNthRootsInGroup[102X( [3XG[103X, [3Xe[103X, [3Xn[103X ) [32X function[133X
  
  [33X[0;0YLet  [3Xe[103X  be  an  element  in the group [3XG[103X. This function returns a list of all
  those elements in [3XG[103X whose [3Xn[103X-th power is [3Xe[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XNthRootsInGroup(g,(1,2)(3,4),2);[127X[104X
    [4X[28X[ (1,3,2,4), (1,4,2,3) ][128X[104X
  [4X[32X[104X
  
  
  [1X39.11 [33X[0;0YNormal Structure[133X[101X
  
  [33X[0;0YFor the operations [2XCentralizer[102X ([14X35.4-4[114X) and [2XCentre[102X ([14X35.4-5[114X), see Chapter [14X35[114X.[133X
  
  
  [1X39.11-1 [33X[0;0YNormalizer[133X[101X
  
  [33X[1;0Y[29X[2XNormalizer[102X( [3XG[103X, [3XU[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XNormalizer[102X( [3XG[103X, [3Xg[103X ) [32X operation[133X
  
  [33X[0;0YFor two groups [3XG[103X, [3XU[103X, [2XNormalizer[102X computes the normalizer [22XN_[3XG[103X([3XU[103X)[122X, that is, the
  stabilizer of [3XU[103X under the conjugation action of [3XG[103X.[133X
  
  [33X[0;0YFor a group [3XG[103X and a group element [3Xg[103X, [2XNormalizer[102X computes [22XN_[3XG[103X(⟨ [3Xg[103X ⟩)[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XNormalizer(g,Subgroup(g,[(1,2,3)]));[127X[104X
    [4X[28XGroup([ (1,2,3), (2,3) ])[128X[104X
  [4X[32X[104X
  
  [1X39.11-2 Core[101X
  
  [33X[1;0Y[29X[2XCore[102X( [3XS[103X, [3XU[103X ) [32X operation[133X
  
  [33X[0;0YIf [3XS[103X and [3XU[103X are groups of elements in the same family, this operation returns
  the core of [3XU[103X in [3XS[103X, that is the intersection of all [3XS[103X-conjugates of [3XU[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=Group((1,2,3,4),(1,2));;[127X[104X
    [4X[25Xgap>[125X [27XCore(g,Subgroup(g,[(1,2,3,4)]));[127X[104X
    [4X[28XGroup(())[128X[104X
  [4X[32X[104X
  
  [1X39.11-3 PCore[101X
  
  [33X[1;0Y[29X[2XPCore[102X( [3XG[103X, [3Xp[103X ) [32X operation[133X
  
  [33X[0;0YThe  [13X[3Xp[103X-core[113X  of [3XG[103X is the largest normal [3Xp[103X-subgroup of [3XG[103X. It is the core of a
  Sylow [3Xp[103X-subgroup of [3XG[103X, see [2XCore[102X ([14X39.11-2[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=DicyclicGroup(12);;[127X[104X
    [4X[25Xgap>[125X [27XPCore(g,2);[127X[104X
    [4X[28XGroup([ y3 ])[128X[104X
    [4X[25Xgap>[125X [27XPCore(g,2) = Core(g,SylowSubgroup(g,2));[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XPCore(g,3);[127X[104X
    [4X[28XGroup([ y*y3 ])[128X[104X
    [4X[25Xgap>[125X [27XPCore(g,5);[127X[104X
    [4X[28XGroup([  ])[128X[104X
    [4X[25Xgap>[125X [27Xg:=SymmetricGroup(4);;[127X[104X
    [4X[25Xgap>[125X [27XPCore(g,2);[127X[104X
    [4X[28XGroup([ (1,4)(2,3), (1,2)(3,4) ])[128X[104X
    [4X[25Xgap>[125X [27XPCore(g,2) = Core(g,SylowSubgroup(g,2));[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X39.11-4 NormalClosure[101X
  
  [33X[1;0Y[29X[2XNormalClosure[102X( [3XG[103X, [3XU[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XNormalClosure[102X( [3XG[103X, [3Xlist[103X ) [32X operation[133X
  
  [33X[0;0YThe  normal closure of [3XU[103X in [3XG[103X is the smallest normal subgroup of the closure
  of [3XG[103X and [3XU[103X which contains [3XU[103X.[133X
  
  [33X[0;0YThe  second argument may also be a list of group elements, in which case the
  normal closure of the group generated by these elements is computed.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XNormalClosure(g,Subgroup(g,[(1,2,3)])) = Group([ (1,2,3), (2,3,4) ]);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XNormalClosure(g,[(1,2,3)]) = Group([ (1,2,3), (2,3,4) ]);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XNormalClosure(g,Group((3,4,5))) = Group([ (3,4,5), (1,5,4), (1,2,5) ]);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X39.11-5 NormalIntersection[101X
  
  [33X[1;0Y[29X[2XNormalIntersection[102X( [3XG[103X, [3XU[103X ) [32X operation[133X
  
  [33X[0;0Ycomputes  the  intersection  of [3XG[103X and [3XU[103X, assuming that [3XG[103X is normalized by [3XU[103X.
  This  works  faster than [10XIntersection[110X, but will not produce the intersection
  if [3XG[103X is not normalized by [3XU[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XNormalIntersection(Group((1,2)(3,4),(1,3)(2,4)),Group((1,2,3,4)));[127X[104X
    [4X[28XGroup([ (1,3)(2,4) ])[128X[104X
  [4X[32X[104X
  
  [1X39.11-6 ComplementClassesRepresentatives[101X
  
  [33X[1;0Y[29X[2XComplementClassesRepresentatives[102X( [3XG[103X, [3XN[103X ) [32X operation[133X
  
  [33X[0;0YLet   [3XN[103X  be  a  normal  subgroup  of  [3XG[103X.  This  command  returns  a  set  of
  representatives  for  the  conjugacy  classes  of  complements  of  [3XN[103X  in [3XG[103X.
  Complements are subgroups of [3XG[103X which intersect trivially with [3XN[103X and together
  with [3XN[103X generate [3XG[103X.[133X
  
  [33X[0;0YAt  the  moment  methods  are  available  only for the case that [3XN[103X or [3XG[103X[10X/[110X[3XN[103X is
  solvable.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XComplementClassesRepresentatives(g,Group((1,2)(3,4),(1,3)(2,4)));[127X[104X
    [4X[28X[ Group([ (3,4), (2,4,3) ]) ][128X[104X
  [4X[32X[104X
  
  [1X39.11-7 InfoComplement[101X
  
  [33X[1;0Y[29X[2XInfoComplement[102X [32X info class[133X
  
  [33X[0;0YInfo class for the complement routines.[133X
  
  
  [1X39.12 [33X[0;0YSpecific and Parametrized Subgroups[133X[101X
  
  [33X[0;0YThe  centre of a group (the subgroup of those elements that commute with all
  other  elements  of  the  group)  can  be  computed  by the operation [2XCentre[102X
  ([14X35.4-5[114X).[133X
  
  [1X39.12-1 TrivialSubgroup[101X
  
  [33X[1;0Y[29X[2XTrivialSubgroup[102X( [3XG[103X ) [32X attribute[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XTrivialSubgroup(g);[127X[104X
    [4X[28XGroup(())[128X[104X
  [4X[32X[104X
  
  [1X39.12-2 CommutatorSubgroup[101X
  
  [33X[1;0Y[29X[2XCommutatorSubgroup[102X( [3XG[103X, [3XH[103X ) [32X operation[133X
  
  [33X[0;0YIf  [3XG[103X  and  [3XH[103X  are two groups of elements in the same family, this operation
  returns  the group generated by all commutators [22X[ g, h ] = g^{-1} h^{-1} g h[122X
  (see [2XComm[102X ([14X31.12-3[114X)) of elements [22Xg ∈ [3XG[103X[122X and [22Xh ∈ [3XH[103X[122X, that is the group [22X⟨ [ g, h
  ] ∣ g ∈ [3XG[103X, h ∈ [3XH[103X ⟩[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XCommutatorSubgroup(Group((1,2,3),(1,2)),Group((2,3,4),(3,4)));[127X[104X
    [4X[28XGroup([ (1,4)(2,3), (1,3,4) ])[128X[104X
    [4X[25Xgap>[125X [27XSize(last);[127X[104X
    [4X[28X12[128X[104X
  [4X[32X[104X
  
  [1X39.12-3 DerivedSubgroup[101X
  
  [33X[1;0Y[29X[2XDerivedSubgroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThe derived subgroup [22X[3XG[103X'[122X of [3XG[103X is the subgroup generated by all commutators of
  pairs  of  elements of [3XG[103X. It is normal in [3XG[103X and the factor group [22X[3XG[103X/[3XG[103X'[122X is the
  largest abelian factor group of [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=Group((1,2,3,4),(1,2));;[127X[104X
    [4X[25Xgap>[125X [27XDerivedSubgroup(g) = Group([ (1,3,2), (2,4,3) ]);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X39.12-4 CommutatorLength[101X
  
  [33X[1;0Y[29X[2XCommutatorLength[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  the minimal number [22Xn[122X such that each element in the derived subgroup
  (see [2XDerivedSubgroup[102X  ([14X39.12-3[114X))  of the group [3XG[103X can be written as a product
  of (at most) [22Xn[122X commutators of elements in [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XCommutatorLength( g );[127X[104X
    [4X[28X1[128X[104X
  [4X[32X[104X
  
  [1X39.12-5 FittingSubgroup[101X
  
  [33X[1;0Y[29X[2XFittingSubgroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThe Fitting subgroup of a group [3XG[103X is its largest nilpotent normal subgroup.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XFittingSubgroup(g);[127X[104X
    [4X[28XGroup([ (1,2)(3,4), (1,4)(2,3) ])[128X[104X
  [4X[32X[104X
  
  [1X39.12-6 FrattiniSubgroup[101X
  
  [33X[1;0Y[29X[2XFrattiniSubgroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThe  Frattini  subgroup  of  a  group  [3XG[103X  is the intersection of all maximal
  subgroups of [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XFrattiniSubgroup(g);[127X[104X
    [4X[28XGroup(())[128X[104X
  [4X[32X[104X
  
  [1X39.12-7 PrefrattiniSubgroup[101X
  
  [33X[1;0Y[29X[2XPrefrattiniSubgroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns a Prefrattini subgroup of the finite solvable group [3XG[103X.[133X
  
  [33X[0;0YA  factor  [22XM/N[122X  of  [3XG[103X is called a Frattini factor if [22XM/N[122X is contained in the
  Frattini  subgroup  of [22X[3XG[103X/N[122X. A subgroup [22XP[122X is a Prefrattini subgroup of [3XG[103X if [22XP[122X
  covers  each Frattini chief factor of [3XG[103X, and if for each maximal subgroup of
  [3XG[103X  there  exists a conjugate maximal subgroup, which contains [22XP[122X. In a finite
  solvable  group  [3XG[103X the Prefrattini subgroups form a characteristic conjugacy
  class  of  subgroups  and  the  intersection  of  all these subgroups is the
  Frattini subgroup of [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := SmallGroup( 60, 7 );[127X[104X
    [4X[28X<pc group of size 60 with 4 generators>[128X[104X
    [4X[25Xgap>[125X [27XP := PrefrattiniSubgroup(G);[127X[104X
    [4X[28XGroup([ f2 ])[128X[104X
    [4X[25Xgap>[125X [27XSize(P);[127X[104X
    [4X[28X2[128X[104X
    [4X[25Xgap>[125X [27XIsNilpotent(P);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XCore(G,P);[127X[104X
    [4X[28XGroup([  ])[128X[104X
    [4X[25Xgap>[125X [27XFrattiniSubgroup(G);[127X[104X
    [4X[28XGroup([  ])[128X[104X
  [4X[32X[104X
  
  [1X39.12-8 PerfectResiduum[101X
  
  [33X[1;0Y[29X[2XPerfectResiduum[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yis the smallest normal subgroup of [3XG[103X that has a solvable factor group.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XPerfectResiduum(SymmetricGroup(5));[127X[104X
    [4X[28XAlt( [ 1 .. 5 ] )[128X[104X
  [4X[32X[104X
  
  [1X39.12-9 SolvableRadical[101X
  
  [33X[1;0Y[29X[2XSolvableRadical[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yis  the  solvable  radical of the group [3XG[103X, i.e., the largest solvable normal
  subgroup of [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xrad:= SolvableRadical( SL(2,5) );[127X[104X
    [4X[28X<group of 2x2 matrices of size 2 over GF(5)>[128X[104X
    [4X[25Xgap>[125X [27XSize( rad );[127X[104X
    [4X[28X2[128X[104X
  [4X[32X[104X
  
  [1X39.12-10 Socle[101X
  
  [33X[1;0Y[29X[2XSocle[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThe  socle  of  the  group [3XG[103X is the subgroup generated by all minimal normal
  subgroups.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSocle(g);[127X[104X
    [4X[28XGroup([ (1,4)(2,3), (1,2)(3,4) ])[128X[104X
  [4X[32X[104X
  
  [1X39.12-11 SupersolvableResiduum[101X
  
  [33X[1;0Y[29X[2XSupersolvableResiduum[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yis  the  supersolvable residuum of the group [3XG[103X, that is, its smallest normal
  subgroup [22XN[122X such that the factor group [22X[3XG[103X / N[122X is supersolvable.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSupersolvableResiduum(g) = Group([ (1,3)(2,4), (1,4)(2,3) ]);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X39.12-12 PRump[101X
  
  [33X[1;0Y[29X[2XPRump[102X( [3XG[103X, [3Xp[103X ) [32X operation[133X
  
  [33X[0;0YFor  a  prime  [22Xp[122X,  the [13X[3Xp[103X-rump[113X of a group [3XG[103X is the subgroup [22X[3XG[103X' [3XG[103X^[3Xp[103X[122X. Unless it
  equals [3XG[103X itself (which is the e.g. the case if [3XG[103X is perfect), it is equal to
  the second term of the [3Xp[103X-central series of [3XG[103X, see [2XPCentralSeries[102X ([14X39.17-13[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=DicyclicGroup(12);;[127X[104X
    [4X[25Xgap>[125X [27XPRump(g,2) = PCentralSeries(g,2)[2];[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xg:=SymmetricGroup(4);;[127X[104X
    [4X[25Xgap>[125X [27XPRump(g,2) = AlternatingGroup(4);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  
  [1X39.13 [33X[0;0YSylow Subgroups and Hall Subgroups[133X[101X
  
  [33X[0;0YWith respect to the following [5XGAP[105X functions, please note that by theorems of
  P. Hall,  a  group  [22XG[122X  is  solvable  if  and  only  if  one of the following
  conditions holds.[133X
  
  [31X1[131X   [33X[0;6YFor  each prime [22Xp[122X dividing the order of [22XG[122X, there exists a [22Xp[122X-complement
        (see [2XSylowComplement[102X ([14X39.13-2[114X)).[133X
  
  [31X2[131X   [33X[0;6YFor  each  set  [22XP[122X  of  primes  dividing the order of [22XG[122X, there exists a
        [22XP[122X-Hall subgroup (see [2XHallSubgroup[102X ([14X39.13-3[114X)).[133X
  
  [31X3[131X   [33X[0;6Y[22XG[122X has a Sylow system (see [2XSylowSystem[102X ([14X39.13-4[114X)).[133X
  
  [31X4[131X   [33X[0;6Y[22XG[122X has a complement system (see [2XComplementSystem[102X ([14X39.13-5[114X)).[133X
  
  [1X39.13-1 SylowSubgroup[101X
  
  [33X[1;0Y[29X[2XSylowSubgroup[102X( [3XG[103X, [3Xp[103X ) [32X operation[133X
  
  [33X[0;0Yreturns  a Sylow [3Xp[103X-subgroup of the finite group [3XG[103X. This is a [3Xp[103X-subgroup of [3XG[103X
  whose index in [3XG[103X is coprime to [3Xp[103X. [2XSylowSubgroup[102X computes Sylow subgroups via
  the operation [10XSylowSubgroupOp[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=SymmetricGroup(4);;[127X[104X
    [4X[25Xgap>[125X [27XSylowSubgroup(g,2);[127X[104X
    [4X[28XGroup([ (1,2), (3,4), (1,3)(2,4) ])[128X[104X
  [4X[32X[104X
  
  [1X39.13-2 SylowComplement[101X
  
  [33X[1;0Y[29X[2XSylowComplement[102X( [3XG[103X, [3Xp[103X ) [32X operation[133X
  
  [33X[0;0Yreturns  a Sylow [3Xp[103X-complement of the finite group [3XG[103X. This is a subgroup [22XU[122X of
  order coprime to [3Xp[103X such that the index [22X[[3XG[103X:U][122X is a [3Xp[103X-power.[133X
  
  [33X[0;0YAt  the  moment  methods  exist  only if [3XG[103X is solvable and [5XGAP[105X will issue an
  error if [3XG[103X is not solvable.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSylowComplement(g,3);[127X[104X
    [4X[28XGroup([ (1,2), (3,4), (1,3)(2,4) ])[128X[104X
  [4X[32X[104X
  
  [1X39.13-3 HallSubgroup[101X
  
  [33X[1;0Y[29X[2XHallSubgroup[102X( [3XG[103X, [3XP[103X ) [32X operation[133X
  
  [33X[0;0Ycomputes  a  [3XP[103X-Hall  subgroup  for a set [3XP[103X of primes. This is a subgroup the
  order  of  which is only divisible by primes in [3XP[103X and whose index is coprime
  to  all  primes  in  [3XP[103X.  Such  a  subgroup is unique up to conjugacy if [3XG[103X is
  solvable.   The   function   computes   Hall  subgroups  via  the  operation
  [10XHallSubgroupOp[110X.[133X
  
  [33X[0;0YIf  [3XG[103X  is  solvable  this  function  always  returns a subgroup. If [3XG[103X is not
  solvable  this  function  might  return  a  subgroup  (if it is unique up to
  conjugacy),  a list of subgroups (which are representatives of the conjugacy
  classes  in case there are several such classes) or [9Xfail[109X if no such subgroup
  exists.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xh:=SmallGroup(60,10);;[127X[104X
    [4X[25Xgap>[125X [27Xu:=HallSubgroup(h,[2,3]);[127X[104X
    [4X[28XGroup([ f1, f2, f3 ])[128X[104X
    [4X[25Xgap>[125X [27XSize(u);[127X[104X
    [4X[28X12[128X[104X
    [4X[25Xgap>[125X [27Xh:=PSL(3,5);;[127X[104X
    [4X[25Xgap>[125X [27XHallSubgroup(h,[2,3]);[127X[104X
    [4X[28X[ <permutation group of size 96 with 6 generators>,[128X[104X
    [4X[28X  <permutation group of size 96 with 6 generators> ][128X[104X
    [4X[25Xgap>[125X [27Xu := HallSubgroup(h,[3,31]);;[127X[104X
    [4X[25Xgap>[125X [27XSize(u); StructureDescription(u);[127X[104X
    [4X[28X93[128X[104X
    [4X[28X"C31 : C3"[128X[104X
    [4X[25Xgap>[125X [27XHallSubgroup(h,[5,31]);[127X[104X
    [4X[28Xfail[128X[104X
  [4X[32X[104X
  
  [1X39.13-4 SylowSystem[101X
  
  [33X[1;0Y[29X[2XSylowSystem[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YA Sylow system of a group [3XG[103X is a set of Sylow subgroups of [3XG[103X such that every
  pair  of  subgroups from this set commutes as subgroups. Sylow systems exist
  only  for  solvable groups. The operation returns [9Xfail[109X if the group [3XG[103X is not
  solvable.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xh:=SmallGroup(60,10);;[127X[104X
    [4X[25Xgap>[125X [27XSylowSystem(h);[127X[104X
    [4X[28X[ Group([ f1, f2 ]), Group([ f3 ]), Group([ f4 ]) ][128X[104X
    [4X[25Xgap>[125X [27XList(last,Size);[127X[104X
    [4X[28X[ 4, 3, 5 ][128X[104X
  [4X[32X[104X
  
  [1X39.13-5 ComplementSystem[101X
  
  [33X[1;0Y[29X[2XComplementSystem[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YA  complement  system of a group [3XG[103X is a set of Hall [22Xp'[122X-subgroups of [3XG[103X, where
  [22Xp'[122X  runs  through  the subsets of prime factors of [22X|[3XG[103X|[122X that omit exactly one
  prime.  Every  pair  of  subgroups  from  this  set  commutes  as subgroups.
  Complement    systems    exist   only   for   solvable   groups,   therefore
  [2XComplementSystem[102X returns [9Xfail[109X if the group [3XG[103X is not solvable.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XComplementSystem(h);[127X[104X
    [4X[28X[ Group([ f3, f4 ]), Group([ f1, f2, f4 ]), Group([ f1, f2, f3 ]) ][128X[104X
    [4X[25Xgap>[125X [27XList(last,Size);[127X[104X
    [4X[28X[ 15, 20, 12 ][128X[104X
  [4X[32X[104X
  
  [1X39.13-6 HallSystem[101X
  
  [33X[1;0Y[29X[2XHallSystem[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  a  list  containing  one  Hall  [22XP[122X-subgroup  for each set [22XP[122X of prime
  divisors of the order of [3XG[103X. Hall systems exist only for solvable groups. The
  operation returns [9Xfail[109X if the group [3XG[103X is not solvable.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XHallSystem(h);[127X[104X
    [4X[28X[ Group([  ]), Group([ f1, f2 ]), Group([ f1, f2, f3 ]),[128X[104X
    [4X[28X  Group([ f1, f2, f3, f4 ]), Group([ f1, f2, f4 ]), Group([ f3 ]),[128X[104X
    [4X[28X  Group([ f3, f4 ]), Group([ f4 ]) ][128X[104X
    [4X[25Xgap>[125X [27XList(last,Size);[127X[104X
    [4X[28X[ 1, 4, 12, 60, 20, 3, 15, 5 ][128X[104X
  [4X[32X[104X
  
  
  [1X39.14 [33X[0;0YSubgroups characterized by prime powers[133X[101X
  
  [1X39.14-1 Omega[101X
  
  [33X[1;0Y[29X[2XOmega[102X( [3XG[103X, [3Xp[103X[, [3Xn[103X] ) [32X operation[133X
  
  [33X[0;0YFor  a  [3Xp[103X-group [3XG[103X, one defines [22XΩ_[3Xn[103X([3XG[103X) = ⟨ g ∈ [3XG[103X ∣ g^{[3Xp[103X^[3Xn[103X} = 1 ⟩[122X. The default
  value for [3Xn[103X is [10X1[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xh:=SmallGroup(16,10);[127X[104X
    [4X[28X<pc group of size 16 with 4 generators>[128X[104X
    [4X[25Xgap>[125X [27XOmega(h,2);[127X[104X
    [4X[28XGroup([ f2, f3, f4 ])[128X[104X
  [4X[32X[104X
  
  [1X39.14-2 Agemo[101X
  
  [33X[1;0Y[29X[2XAgemo[102X( [3XG[103X, [3Xp[103X[, [3Xn[103X] ) [32X function[133X
  
  [33X[0;0YFor a [3Xp[103X-group [3XG[103X, one defines [22X℧_[3Xn[103X(G) = ⟨ g^{[3Xp[103X^[3Xn[103X} ∣ g ∈ [3XG[103X ⟩[122X. The default value
  for [3Xn[103X is [10X1[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XAgemo(h,2);Agemo(h,2,2);[127X[104X
    [4X[28XGroup([ f4 ])[128X[104X
    [4X[28XGroup([  ])[128X[104X
  [4X[32X[104X
  
  
  [1X39.15 [33X[0;0YGroup Properties[133X[101X
  
  [33X[0;0YSome  properties  of  groups can be defined not only for groups but also for
  other  structures.  For  example, nilpotency and solvability make sense also
  for  algebras.  Note  that  these  names  refer to different definitions for
  groups   and   algebras,  contrary  to  the  situation  with  finiteness  or
  commutativity.  In  such  cases,  the  name of the function for groups got a
  suffix [10XGroup[110X to distinguish different meanings for different structures.[133X
  
  [33X[0;0YSome  functions, such as [2XIsPSolvable[102X ([14X39.15-26[114X) and [2XIsPNilpotent[102X ([14X39.15-27[114X),
  although  they  are mathematical properties, are not properties in the sense
  of [5XGAP[105X (see [14X13.5[114X and [14X13.7[114X), as they depend on a parameter.[133X
  
  [1X39.15-1 IsCyclic[101X
  
  [33X[1;0Y[29X[2XIsCyclic[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0YA group is [13Xcyclic[113X if it can be generated by one element. For a cyclic group,
  one  can  compute  a  generating  set  consisting  of only one element using
  [2XMinimalGeneratingSet[102X ([14X39.22-3[114X).[133X
  
  [1X39.15-2 IsElementaryAbelian[101X
  
  [33X[1;0Y[29X[2XIsElementaryAbelian[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0YA group [3XG[103X is elementary abelian if it is commutative and if there is a prime
  [22Xp[122X such that the order of each element in [3XG[103X divides [22Xp[122X.[133X
  
  [1X39.15-3 IsNilpotentGroup[101X
  
  [33X[1;0Y[29X[2XIsNilpotentGroup[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0YA     group     is     [13Xnilpotent[113X     if    the    lower    central    series
  (see [2XLowerCentralSeriesOfGroup[102X  ([14X39.17-11[114X)  for  a  definition)  reaches the
  trivial subgroup in a finite number of steps.[133X
  
  [1X39.15-4 NilpotencyClassOfGroup[101X
  
  [33X[1;0Y[29X[2XNilpotencyClassOfGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThe  nilpotency  class  of a nilpotent group [3XG[103X is the number of steps in the
  lower central series of [3XG[103X (see [2XLowerCentralSeriesOfGroup[102X ([14X39.17-11[114X));[133X
  
  [33X[0;0YIf [3XG[103X is not nilpotent an error is issued.[133X
  
  [1X39.15-5 IsPerfectGroup[101X
  
  [33X[1;0Y[29X[2XIsPerfectGroup[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0YA  group  is  [13Xperfect[113X if it equals its derived subgroup (see [2XDerivedSubgroup[102X
  ([14X39.12-3[114X)).[133X
  
  [1X39.15-6 IsSolvableGroup[101X
  
  [33X[1;0Y[29X[2XIsSolvableGroup[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0YA   group  is  [13Xsolvable[113X  if  the  derived  series  (see [2XDerivedSeriesOfGroup[102X
  ([14X39.17-7[114X)  for a definition) reaches the trivial subgroup in a finite number
  of steps.[133X
  
  [33X[0;0YFor    finite    groups    this    is   the   same   as   being   polycyclic
  (see [2XIsPolycyclicGroup[102X  ([14X39.15-7[114X)),  and  each polycyclic group is solvable,
  but there are infinite solvable groups that are not polycyclic.[133X
  
  [1X39.15-7 IsPolycyclicGroup[101X
  
  [33X[1;0Y[29X[2XIsPolycyclicGroup[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0YA  group is polycyclic if it has a subnormal series with cyclic factors. For
  finite   groups   this   is   the   same   as   if  the  group  is  solvable
  (see [2XIsSolvableGroup[102X ([14X39.15-6[114X)).[133X
  
  [1X39.15-8 IsSupersolvableGroup[101X
  
  [33X[1;0Y[29X[2XIsSupersolvableGroup[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0YA  finite  group  is  [13Xsupersolvable[113X  if  it  has a normal series with cyclic
  factors.[133X
  
  [1X39.15-9 IsMonomialGroup[101X
  
  [33X[1;0Y[29X[2XIsMonomialGroup[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0YA finite group is [13Xmonomial[113X if every irreducible complex character is induced
  from a linear character of a subgroup.[133X
  
  [1X39.15-10 IsSimpleGroup[101X
  
  [33X[1;0Y[29X[2XIsSimpleGroup[102X( [3XG[103X ) [32X property[133X
  [33X[1;0Y[29X[2XIsNonabelianSimpleGroup[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0YA  group  is  [13Xsimple[113X  if  it  is  nontrivial  and  has  no nontrivial normal
  subgroups. A [13Xnonabelian simple[113X group is simple and not abelian.[133X
  
  [1X39.15-11 IsAlmostSimpleGroup[101X
  
  [33X[1;0Y[29X[2XIsAlmostSimpleGroup[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0YA group [3XG[103X is [13Xalmost simple[113X if a nonabelian simple group [22XS[122X exists such that [3XG[103X
  is isomorphic to a subgroup of the automorphism group of [22XS[122X that contains all
  inner automorphisms of [22XS[122X.[133X
  
  [33X[0;0YEquivalently,  [3XG[103X  is  almost  simple  if and only if it has a unique minimal
  normal subgroup [22XN[122X and if [22XN[122X is a nonabelian simple group.[133X
  
  [33X[0;0YNote  that an almost simple group is [13Xnot[113X defined as an extension of a simple
  group  by outer automorphisms, since we want to exclude extensions of groups
  of  prime  order. In particular, a [13Xsimple[113X group is [13Xalmost simple[113X if and only
  if it is nonabelian.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIsAlmostSimpleGroup( AlternatingGroup( 5 ) );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsAlmostSimpleGroup( SymmetricGroup( 5 ) );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsAlmostSimpleGroup( SymmetricGroup( 3 ) );[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XIsAlmostSimpleGroup( SL( 2, 5 ) );[127X[104X
    [4X[28Xfalse[128X[104X
  [4X[32X[104X
  
  [1X39.15-12 IsQuasisimpleGroup[101X
  
  [33X[1;0Y[29X[2XIsQuasisimpleGroup[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0YA  group [3XG[103X is [13Xquasisimple[113X if [3XG[103X is perfect (see [2XIsPerfectGroup[102X ([14X39.15-5[114X)) and
  if [3XG[103X[22X/Z([122X[3XG[103X[22X)[122X is simple (see [2XIsSimpleGroup[102X ([14X39.15-10[114X)), where [22XZ([122X[3XG[103X[22X)[122X is the centre
  of [3XG[103X (see [2XCentre[102X ([14X35.4-5[114X)).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIsQuasisimpleGroup( AlternatingGroup( 5 ) );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsQuasisimpleGroup( SymmetricGroup( 5 ) );[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XIsQuasisimpleGroup( SL( 2, 5 ) );[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  
  [1X39.15-13 [33X[0;0YIsomorphismTypeInfoFiniteSimpleGroup[133X[101X
  
  [33X[1;0Y[29X[2XIsomorphismTypeInfoFiniteSimpleGroup[102X( [3XG[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XIsomorphismTypeInfoFiniteSimpleGroup[102X( [3Xn[103X ) [32X attribute[133X
  
  [33X[0;0YFor  a finite simple group [3XG[103X, [2XIsomorphismTypeInfoFiniteSimpleGroup[102X returns a
  record  with the components [10Xname[110X, [10Xshortname[110X, [10Xseries[110X, and possibly [10Xparameter[110X,
  describing the isomorphism type of [3XG[103X.[133X
  
  [33X[0;0YThe  values  of the components [10Xname[110X, [10Xshortname[110X, and [10Xseries[110X are strings, [10Xname[110X
  gives  name(s) for [3XG[103X, [10Xshortname[110X gives one name for [3XG[103X that is compatible with
  the  naming scheme used in the [5XGAP[105X packages [5XCTblLib[105X and [5XAtlasRep[105X (and in the
  [5XAtlas[105X of Finite Groups [CCN+85]), and [10Xseries[110X describes the following series.[133X
  
  [33X[0;0Y(If  different  characterizations  of  [3XG[103X  are  possible only one is given by
  [10Xseries[110X and [10Xparameter[110X, while [10Xname[110X may give several names.)[133X
  
  [8X[10X"A"[110X[8X[108X
        [33X[0;6YAlternating groups, [10Xparameter[110X gives the natural degree.[133X
  
  [8X[10X"L"[110X[8X[108X
        [33X[0;6YLinear  groups  (Chevalley  type [22XA[122X), [10Xparameter[110X is a list [22X[ n, q ][122X that
        indicates [22XL(n,q)[122X.[133X
  
  [8X[10X"2A"[110X[8X[108X
        [33X[0;6YTwisted  Chevalley  type  [22X^2A[122X,  [10Xparameter[110X  is  a  list  [22X[  n, q ][122X that
        indicates [22X^2A(n,q)[122X.[133X
  
  [8X[10X"B"[110X[8X[108X
        [33X[0;6YChevalley type [22XB[122X, [10Xparameter[110X is a list [22X[n, q ][122X that indicates [22XB(n,q)[122X.[133X
  
  [8X[10X"2B"[110X[8X[108X
        [33X[0;6YTwisted  Chevalley  type  [22X^2B[122X,  [10Xparameter[110X  is a value [22Xq[122X that indicates
        [22X^2B(2,q)[122X.[133X
  
  [8X[10X"C"[110X[8X[108X
        [33X[0;6YChevalley type [22XC[122X, [10Xparameter[110X is a list [22X[ n, q ][122X that indicates [22XC(n,q)[122X.[133X
  
  [8X[10X"D"[110X[8X[108X
        [33X[0;6YChevalley type [22XD[122X, [10Xparameter[110X is a list [22X[ n, q ][122X that indicates [22XD(n,q)[122X.[133X
  
  [8X[10X"2D"[110X[8X[108X
        [33X[0;6YTwisted  Chevalley  type  [22X^2D[122X,  [10Xparameter[110X  is  a  list  [22X[  n, q ][122X that
        indicates [22X^2D(n,q)[122X.[133X
  
  [8X[10X"3D"[110X[8X[108X
        [33X[0;6YTwisted  Chevalley  type  [22X^3D[122X,  [10Xparameter[110X  is a value [22Xq[122X that indicates
        [22X^3D(4,q)[122X.[133X
  
  [8X[10X"E"[110X[8X[108X
        [33X[0;6YExceptional  Chevalley  type  [22XE[122X,  [10Xparameter[110X  is  a  list [22X[ n, q ][122X that
        indicates [22XE_n(q)[122X. The value of [3Xn[103X is 6, 7, or 8.[133X
  
  [8X[10X"2E"[110X[8X[108X
        [33X[0;6YTwisted  exceptional  Chevalley  type [22XE_6[122X, [10Xparameter[110X is a value [22Xq[122X that
        indicates [22X^2E_6(q)[122X.[133X
  
  [8X[10X"F"[110X[8X[108X
        [33X[0;6YExceptional  Chevalley  type  [22XF[122X, [10Xparameter[110X is a value [22Xq[122X that indicates
        [22XF(4,q)[122X.[133X
  
  [8X[10X"2F"[110X[8X[108X
        [33X[0;6YTwisted  exceptional  Chevalley  type [22X^2F[122X (Ree groups), [10Xparameter[110X is a
        value [22Xq[122X that indicates [22X^2F(4,q)[122X.[133X
  
  [8X[10X"G"[110X[8X[108X
        [33X[0;6YExceptional  Chevalley  type  [22XG[122X, [10Xparameter[110X is a value [22Xq[122X that indicates
        [22XG(2,q)[122X.[133X
  
  [8X[10X"2G"[110X[8X[108X
        [33X[0;6YTwisted  exceptional  Chevalley  type [22X^2G[122X (Ree groups), [10Xparameter[110X is a
        value [22Xq[122X that indicates [22X^2G(2,q)[122X.[133X
  
  [8X[10X"Spor"[110X[8X[108X
        [33X[0;6YSporadic simple groups, [10Xname[110X gives the name.[133X
  
  [8X[10X"Z"[110X[8X[108X
        [33X[0;6YCyclic groups of prime size, [10Xparameter[110X gives the size.[133X
  
  [33X[0;0YAn  equal  sign  in  the  name denotes different naming schemes for the same
  group,  a  tilde  sign abstract isomorphisms between groups constructed in a
  different way.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIsomorphismTypeInfoFiniteSimpleGroup([127X[104X
    [4X[25X>[125X [27X                            Group((4,5)(6,7),(1,2,4)(3,5,6)));[127X[104X
    [4X[28Xrec([128X[104X
    [4X[28X  name := "A(1,7) = L(2,7) ~ B(1,7) = O(3,7) ~ C(1,7) = S(2,7) ~ 2A(1,\[128X[104X
    [4X[28X7) = U(2,7) ~ A(2,2) = L(3,2)", parameter := [ 2, 7 ], series := "L",[128X[104X
    [4X[28X  shortname := "L3(2)" )[128X[104X
  [4X[32X[104X
  
  [33X[0;0YFor  a positive integer [3Xn[103X, [2XIsomorphismTypeInfoFiniteSimpleGroup[102X returns [9Xfail[109X
  if  [3Xn[103X  is  not the order of a finite simple group, and a record as described
  for  the case of a group [3XG[103X otherwise. If more than one simple group of order
  [3Xn[103X  exists  then the result record contains only the [10Xname[110X component, a string
  that  lists  the  two  possible  isomorphism  types of simple groups of this
  order.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIsomorphismTypeInfoFiniteSimpleGroup( 5 );[127X[104X
    [4X[28Xrec( name := "Z(5)", parameter := 5, series := "Z", shortname := "C5"[128X[104X
    [4X[28X )[128X[104X
    [4X[25Xgap>[125X [27XIsomorphismTypeInfoFiniteSimpleGroup( 6 );[127X[104X
    [4X[28Xfail[128X[104X
    [4X[25Xgap>[125X [27XIsomorphismTypeInfoFiniteSimpleGroup(Size(SymplecticGroup(6,3))/2);[127X[104X
    [4X[28Xrec([128X[104X
    [4X[28X  name := "cannot decide from size alone between B(3,3) = O(7,3) and C\[128X[104X
    [4X[28X(3,3) = S(6,3)", parameter := [ 3, 3 ] )[128X[104X
  [4X[32X[104X
  
  [1X39.15-14 SimpleGroup[101X
  
  [33X[1;0Y[29X[2XSimpleGroup[102X( [3Xid[103X[, [3Xparam[103X] ) [32X function[133X
  
  [33X[0;0YThis  function will construct [12Xan[112X instance of the specified nonabelian simple
  group.  Groups  are  specified  via their name in ATLAS style notation, with
  parameters  added if necessary. The intelligence applied to parsing the name
  is  limited,  and at the moment no proper extensions can be constructed. For
  groups  which  do  not have a permutation representation of small degree the
  [5XAtlasRep[105X package might need to be installed to construct these groups.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=SimpleGroup("M(23)");[127X[104X
    [4X[28XM23[128X[104X
    [4X[25Xgap>[125X [27XSize(g);[127X[104X
    [4X[28X10200960[128X[104X
    [4X[25Xgap>[125X [27Xg:=SimpleGroup("PSL",3,5);[127X[104X
    [4X[28XPSL(3,5)[128X[104X
    [4X[25Xgap>[125X [27XSize(g);[127X[104X
    [4X[28X372000[128X[104X
    [4X[25Xgap>[125X [27Xg:=SimpleGroup("PSp6",2);[127X[104X
    [4X[28XPSp(6,2)[128X[104X
  [4X[32X[104X
  
  [1X39.15-15 SimpleGroupsIterator[101X
  
  [33X[1;0Y[29X[2XSimpleGroupsIterator[102X( [[3Xstart[103X[, [3Xend[103X]] ) [32X function[133X
  
  [33X[0;0YThis  function  returns an iterator that will run over all nonabelian simple
  groups,  starting  at  order [3Xstart[103X if specified, up to order [22X10^27[122X (or -- if
  specified  --  order  [3Xend[103X).  If  the  option [3XNOPSL2[103X is given, groups of type
  [22XPSL_2(q)[122X are omitted.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xit:=SimpleGroupsIterator(20000);[127X[104X
    [4X[28X<iterator>[128X[104X
    [4X[25Xgap>[125X [27XList([1..8],x->NextIterator(it));[127X[104X
    [4X[28X[ A8, PSL(3,4), PSL(2,37), PSp(4,3), Sz(8), PSL(2,32), PSL(2,41),[128X[104X
    [4X[28X  PSL(2,43) ][128X[104X
    [4X[25Xgap>[125X [27Xit:=SimpleGroupsIterator(1,2000);;[127X[104X
    [4X[25Xgap>[125X [27Xl:=[];;for i in it do Add(l,i);od;l;[127X[104X
    [4X[28X[ A5, PSL(2,7), A6, PSL(2,8), PSL(2,11), PSL(2,13) ][128X[104X
    [4X[25Xgap>[125X [27Xit:=SimpleGroupsIterator(20000,100000:NOPSL2);;[127X[104X
    [4X[25Xgap>[125X [27Xl:=[];;for i in it do Add(l,i);od;l;[127X[104X
    [4X[28X[ A8, PSL(3,4), PSp(4,3), Sz(8), PSU(3,4), M12 ][128X[104X
  [4X[32X[104X
  
  [1X39.15-16 SmallSimpleGroup[101X
  
  [33X[1;0Y[29X[2XSmallSimpleGroup[102X( [3Xorder[103X[, [3Xi[103X] ) [32X function[133X
  [6XReturns:[106X  [33X[0;10YThe [3Xi[103Xth simple group of order [3Xorder[103X in the stored list, given in a
            small-degree  permutation  representation,  or [2Xfail[102X ([14X20.2-1[114X) if no
            such simple group exists.[133X
  
  [33X[0;0YIf  [3Xi[103X  is not given, it defaults to 1. Currently, all simple groups of order
  less than [22X10^6[122X are available via this function.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSmallSimpleGroup(60);[127X[104X
    [4X[28XA5[128X[104X
    [4X[25Xgap>[125X [27XSmallSimpleGroup(20160,1);[127X[104X
    [4X[28XA8[128X[104X
    [4X[25Xgap>[125X [27XSmallSimpleGroup(20160,2);[127X[104X
    [4X[28XPSL(3,4)[128X[104X
  [4X[32X[104X
  
  [1X39.15-17 AllSmallNonabelianSimpleGroups[101X
  
  [33X[1;0Y[29X[2XAllSmallNonabelianSimpleGroups[102X( [3Xorders[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10YA  list  of  all  nonabelian simple groups whose order lies in the
            range [3Xorders[103X.[133X
  
  [33X[0;0YThe  groups  are  given  in  small-degree  permutation  representations. The
  returned  list  is  sorted  by  ascending group order. Currently, all simple
  groups of order less than [22X10^6[122X are available via this function.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XList(AllSmallNonabelianSimpleGroups([1..1000000]),[127X[104X
    [4X[25X>[125X [27X        StructureDescription);[127X[104X
    [4X[28X[ "A5", "PSL(3,2)", "A6", "PSL(2,8)", "PSL(2,11)", "PSL(2,13)",[128X[104X
    [4X[28X  "PSL(2,17)", "A7", "PSL(2,19)", "PSL(2,16)", "PSL(3,3)",[128X[104X
    [4X[28X  "PSU(3,3)", "PSL(2,23)", "PSL(2,25)", "M11", "PSL(2,27)",[128X[104X
    [4X[28X  "PSL(2,29)", "PSL(2,31)", "A8", "PSL(3,4)", "PSL(2,37)", "O(5,3)",[128X[104X
    [4X[28X  "Sz(8)", "PSL(2,32)", "PSL(2,41)", "PSL(2,43)", "PSL(2,47)",[128X[104X
    [4X[28X  "PSL(2,49)", "PSU(3,4)", "PSL(2,53)", "M12", "PSL(2,59)",[128X[104X
    [4X[28X  "PSL(2,61)", "PSU(3,5)", "PSL(2,67)", "J1", "PSL(2,71)", "A9",[128X[104X
    [4X[28X  "PSL(2,73)", "PSL(2,79)", "PSL(2,64)", "PSL(2,81)", "PSL(2,83)",[128X[104X
    [4X[28X  "PSL(2,89)", "PSL(3,5)", "M22", "PSL(2,97)", "PSL(2,101)",[128X[104X
    [4X[28X  "PSL(2,103)", "HJ", "PSL(2,107)", "PSL(2,109)", "PSL(2,113)",[128X[104X
    [4X[28X  "PSL(2,121)", "PSL(2,125)", "O(5,4)" ][128X[104X
  [4X[32X[104X
  
  [1X39.15-18 IsFinitelyGeneratedGroup[101X
  
  [33X[1;0Y[29X[2XIsFinitelyGeneratedGroup[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0Ytests whether the group [3XG[103X can be generated by a finite number of generators.
  (This property is mainly used to obtain finiteness conditions.)[133X
  
  [33X[0;0YNote that this is a pure existence statement. Even if a group is known to be
  generated  by  a  finite  number  of  elements,  it can be very hard or even
  impossible to obtain such a generating set if it is not known.[133X
  
  [1X39.15-19 IsSubsetLocallyFiniteGroup[101X
  
  [33X[1;0Y[29X[2XIsSubsetLocallyFiniteGroup[102X( [3XU[103X ) [32X property[133X
  
  [33X[0;0YA  group  is  called  locally finite if every finitely generated subgroup is
  finite.  This  property  checks whether the group [3XU[103X is a subset of a locally
  finite  group.  This  is  used to check whether finite generation will imply
  finiteness, as it does for example for permutation groups.[133X
  
  [1X39.15-20 IsPGroup[101X
  
  [33X[1;0Y[29X[2XIsPGroup[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0YA  [13X[22Xp[122X-group[113X  is  a  group  in which the order (see [2XOrder[102X ([14X31.10-10[114X)) of every
  element  is  of the form [22Xp^n[122X for a prime integer [22Xp[122X and a nonnegative integer
  [22Xn[122X. [2XIsPGroup[102X returns [9Xtrue[109X if [3XG[103X is a [22Xp[122X-group, and [9Xfalse[109X otherwise.[133X
  
  [33X[0;0YFinite  [22Xp[122X-groups  are precisely those groups whose order (see [2XSize[102X ([14X30.4-6[114X))
  is  [22X1[122X  or  a  prime  power  (see [2XIsPrimePowerInt[102X  ([14X14.4-4[114X),  and  are always
  nilpotent.[133X
  
  [33X[0;0YNote  that  [22Xp[122X-groups  can  also  be  infinite, and in that case, need not be
  nilpotent.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIsPGroup( DihedralGroup( 8 ) );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsPGroup( TrivialGroup() );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsPGroup( DihedralGroup( 10 ) );[127X[104X
    [4X[28Xfalse[128X[104X
  [4X[32X[104X
  
  [1X39.15-21 IsPowerfulPGroup[101X
  
  [33X[1;0Y[29X[2XIsPowerfulPGroup[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0YA  finite  [22Xp[122X-group  [3XG[103X  is  said  to  be a [13Xpowerful [22Xp[122X-group[113X if the commutator
  subgroup  [22X[[3XG[103X,[3XG[103X][122X  is  contained  in [22X[3XG[103X^p[122X if the prime [22Xp[122X is odd, or if [22X[[3XG[103X,[3XG[103X][122X is
  contained  in  [22X[3XG[103X^4[122X  if  [22Xp  =  2[122X.  The subgroup [22X[3XG[103X^p[122X is called the first Agemo
  subgroup,  (see [2XAgemo[102X  ([14X39.14-2[114X)).  [2XIsPowerfulPGroup[102X  returns [9Xtrue[109X if [3XG[103X is a
  powerful [22Xp[122X-group, and [9Xfalse[109X otherwise. [13XNote: [113XThis function returns [9Xtrue[109X if [3XG[103X
  is the trivial group.[133X
  
  [1X39.15-22 IsRegularPGroup[101X
  
  [33X[1;0Y[29X[2XIsRegularPGroup[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0YA finite [22Xp[122X-group [3XG[103X is a [13Xregular [22Xp[122X-group[113X if for all [22Xa,b[122X in [3XG[103X, one has [22Xa^p b^p
  =  (a  b)^p  c^p[122X  where [22Xc[122X is an element of the derived subgroup of the group
  generated  by  [22Xa[122X and [22Xb[122X (see [Hal34]). [2XIsRegularPGroup[102X returns [9Xtrue[109X if [3XG[103X is a
  regular  [22Xp[122X-group, and [9Xfalse[109X otherwise. [13XNote: [113XThis function returns [9Xtrue[109X if [3XG[103X
  is the trivial group.[133X
  
  [1X39.15-23 PrimePGroup[101X
  
  [33X[1;0Y[29X[2XPrimePGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YIf  [3XG[103X is a nontrivial [22Xp[122X-group (see [2XIsPGroup[102X ([14X39.15-20[114X)), [2XPrimePGroup[102X returns
  the  prime  integer  [22Xp[122X;  if  [3XG[103X  is  trivial  then  [2XPrimePGroup[102X returns [9Xfail[109X.
  Otherwise an error is issued.[133X
  
  [33X[0;0Y(One  should  avoid  a  common  error  of  writing  [10Xif  IsPGroup(g) then ...
  PrimePGroup(g)   ...[110X  where  the  code  represented  by  dots  assumes  that
  [10XPrimePGroup(g)[110X is an integer.)[133X
  
  [1X39.15-24 PClassPGroup[101X
  
  [33X[1;0Y[29X[2XPClassPGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThe  [22Xp[122X-class  of  a [22Xp[122X-group [3XG[103X (see [2XIsPGroup[102X ([14X39.15-20[114X)) is the length of the
  lower  [22Xp[122X-central  series (see [2XPCentralSeries[102X ([14X39.17-13[114X)) of [3XG[103X. If [3XG[103X is not a
  [22Xp[122X-group then an error is issued.[133X
  
  [1X39.15-25 RankPGroup[101X
  
  [33X[1;0Y[29X[2XRankPGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YFor a [22Xp[122X-group [3XG[103X (see [2XIsPGroup[102X ([14X39.15-20[114X)), [2XRankPGroup[102X returns the [13Xrank[113X of [3XG[103X,
  which  is  defined  as the minimal size of a generating system of [3XG[103X. If [3XG[103X is
  not a [22Xp[122X-group then an error is issued.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xh:=Group((1,2,3,4),(1,3));;[127X[104X
    [4X[25Xgap>[125X [27XPClassPGroup(h);[127X[104X
    [4X[28X2[128X[104X
    [4X[25Xgap>[125X [27XRankPGroup(h);[127X[104X
    [4X[28X2[128X[104X
  [4X[32X[104X
  
  [1X39.15-26 IsPSolvable[101X
  
  [33X[1;0Y[29X[2XIsPSolvable[102X( [3XG[103X, [3Xp[103X ) [32X operation[133X
  
  [33X[0;0YA  finite  group  is  [22Xp[122X-solvable  if every chief factor either has order not
  divisible by [22Xp[122X, or is solvable.[133X
  
  [1X39.15-27 IsPNilpotent[101X
  
  [33X[1;0Y[29X[2XIsPNilpotent[102X( [3XG[103X, [3Xp[103X ) [32X operation[133X
  
  [33X[0;0YA group is [22Xp[122X-nilpotent if it possesses a normal [22Xp[122X-complement.[133X
  
  
  [1X39.16 [33X[0;0YNumerical Group Attributes[133X[101X
  
  [33X[0;0YThis  section  gives only some examples of numerical group attributes, so it
  should  not  serve  as  a  collection of all numerical group attributes. The
  manual contains more such attributes documented in this manual, for example,
  [2XNrConjugacyClasses[102X ([14X39.10-5[114X), [2XNilpotencyClassOfGroup[102X ([14X39.15-4[114X) and others.[133X
  
  [33X[0;0YNote  also  that  some  functions,  such  as [2XEulerianFunction[102X ([14X39.16-3[114X), are
  mathematical  attributes,  but  not  [5XGAP[105X  attributes  (see [14X13.5[114X) as they are
  depending on a parameter.[133X
  
  [1X39.16-1 AbelianInvariants[101X
  
  [33X[1;0Y[29X[2XAbelianInvariants[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns the abelian invariants (also sometimes called primary decomposition)
  of  the commutator factor group of the group [3XG[103X. These are given as a list of
  prime-powers  or  zeroes  and  describe  the  structure  of [22X[3XG[103X/[3XG[103X'[122X as a direct
  product of cyclic groups of prime power (or infinite) order.[133X
  
  [33X[0;0Y(See   [2XIndependentGeneratorsOfAbelianGroup[102X   ([14X39.22-5[114X)   to   obtain  actual
  generators).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=Group((1,2,3,4),(1,2),(5,6));;[127X[104X
    [4X[25Xgap>[125X [27XAbelianInvariants(g);[127X[104X
    [4X[28X[ 2, 2 ][128X[104X
    [4X[25Xgap>[125X [27Xh:=FreeGroup(2);;h:=h/[h.1^3];;[127X[104X
    [4X[25Xgap>[125X [27XAbelianInvariants(h);[127X[104X
    [4X[28X[ 0, 3 ][128X[104X
  [4X[32X[104X
  
  [1X39.16-2 Exponent[101X
  
  [33X[1;0Y[29X[2XExponent[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThe  exponent  [22Xe[122X of a group [3XG[103X is the lcm of the orders of its elements, that
  is, [22Xe[122X is the smallest integer such that [22Xg^e = 1[122X for all [22Xg ∈ [3XG[103X[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XExponent(g);[127X[104X
    [4X[28X12[128X[104X
  [4X[32X[104X
  
  [1X39.16-3 EulerianFunction[101X
  
  [33X[1;0Y[29X[2XEulerianFunction[102X( [3XG[103X, [3Xn[103X ) [32X operation[133X
  
  [33X[0;0Yreturns the number of [3Xn[103X-tuples [22X(g_1, g_2, ..., g_n)[122X of elements of the group
  [3XG[103X  that generate the whole group [3XG[103X. The elements of such an [3Xn[103X-tuple need not
  be different.[133X
  
  [33X[0;0YIn  [Hal36],  the  notation  [22Xϕ_[3Xn[103X([3XG[103X)[122X  is  used  for  the  value  returned  by
  [2XEulerianFunction[102X,   and   the  quotient  of  [22Xϕ_[3Xn[103X([3XG[103X)[122X  by  the  order  of  the
  automorphism  group of [3XG[103X is called [22Xd_[3Xn[103X([3XG[103X)[122X. If [3XG[103X is a nonabelian simple group
  then  [22Xd_[3Xn[103X([3XG[103X)[122X  is  the  greatest  number  [22Xd[122X for which the direct product of [22Xd[122X
  groups isomorphic with [3XG[103X can be generated by [3Xn[103X elements.[133X
  
  [33X[0;0YIf  the  Library of Tables of Marks (see Chapter [14X70[114X) covers the group [3XG[103X, you
  may also use [2XEulerianFunctionByTom[102X ([14X70.9-9[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XEulerianFunction( g, 2 );[127X[104X
    [4X[28X432[128X[104X
  [4X[32X[104X
  
  
  [1X39.17 [33X[0;0YSubgroup Series[133X[101X
  
  [33X[0;0YIn  group  theory  many  subgroup  series  are  considered, and [5XGAP[105X provides
  commands  to  compute  them.  In  the  following sections, there is always a
  series  [22XG  =  U_1  > U_2 > ⋯ > U_m = ⟨ 1 ⟩[122X of subgroups considered. A series
  also may stop without reaching [22XG[122X or [22X⟨ 1 ⟩[122X.[133X
  
  [33X[0;0YA series is called [13Xsubnormal[113X if every [22XU_{i+1}[122X is normal in [22XU_i[122X.[133X
  
  [33X[0;0YA series is called [13Xnormal[113X if every [22XU_i[122X is normal in [22XG[122X.[133X
  
  [33X[0;0YA  series of normal subgroups is called [13Xcentral[113X if [22XU_i/U_{i+1}[122X is central in
  [22XG / U_{i+1}[122X.[133X
  
  [33X[0;0YWe  call  a  series  [13Xrefinable[113X if intermediate subgroups can be added to the
  series without destroying the properties of the series.[133X
  
  [33X[0;0YUnless  explicitly  declared  otherwise, all subgroup series are descending.
  That is they are stored in decreasing order.[133X
  
  [1X39.17-1 ChiefSeries[101X
  
  [33X[1;0Y[29X[2XChiefSeries[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yis  a  series of normal subgroups of [3XG[103X which cannot be refined further. That
  is there is no normal subgroup [22XN[122X of [3XG[103X with [22XU_i > N > U_{i+1}[122X. This attribute
  returns [13Xone[113X chief series (of potentially many possibilities).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=Group((1,2,3,4),(1,2));;[127X[104X
    [4X[25Xgap>[125X [27XChiefSeries(g);[127X[104X
    [4X[28X[ Group([ (1,2,3,4), (1,2) ]),[128X[104X
    [4X[28X  Group([ (2,4,3), (1,4)(2,3), (1,3)(2,4) ]),[128X[104X
    [4X[28X  Group([ (1,4)(2,3), (1,3)(2,4) ]), Group(()) ][128X[104X
  [4X[32X[104X
  
  [1X39.17-2 ChiefSeriesThrough[101X
  
  [33X[1;0Y[29X[2XChiefSeriesThrough[102X( [3XG[103X, [3Xl[103X ) [32X operation[133X
  
  [33X[0;0Yis  a  chief series of the group [3XG[103X going through the normal subgroups in the
  list  [3Xl[103X,  which  must  be  a list of normal subgroups of [3XG[103X contained in each
  other,  sorted  by  descending size. This attribute returns [13Xone[113X chief series
  (of potentially many possibilities).[133X
  
  [1X39.17-3 ChiefSeriesUnderAction[101X
  
  [33X[1;0Y[29X[2XChiefSeriesUnderAction[102X( [3XH[103X, [3XG[103X ) [32X operation[133X
  
  [33X[0;0Yreturns  a  series of normal subgroups of [3XG[103X which are invariant under [3XH[103X such
  that  the  series  cannot be refined any further. [3XG[103X must be a subgroup of [3XH[103X.
  This attribute returns [13Xone[113X such series (of potentially many possibilities).[133X
  
  [1X39.17-4 SubnormalSeries[101X
  
  [33X[1;0Y[29X[2XSubnormalSeries[102X( [3XG[103X, [3XU[103X ) [32X operation[133X
  
  [33X[0;0YIf  [3XU[103X  is  a  subgroup  of  [3XG[103X this operation returns a subnormal series that
  descends from [3XG[103X to a subnormal subgroup [22XV ≥[122X[3XU[103X. If [3XU[103X is subnormal, [22XV =[122X [3XU[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=SubnormalSeries(g,Group((1,2)(3,4))) =[127X[104X
    [4X[25X>[125X [27X[ Group([ (1,2,3,4), (1,2) ]),[127X[104X
    [4X[25X>[125X [27X  Group([ (1,2)(3,4), (1,3)(2,4) ]),[127X[104X
    [4X[25X>[125X [27X  Group([ (1,2)(3,4) ]) ];[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X39.17-5 CompositionSeries[101X
  
  [33X[1;0Y[29X[2XCompositionSeries[102X( [3XG[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XCompositionSeriesThrough[102X( [3XG[103X, [3Xnormals[103X ) [32X operation[133X
  
  [33X[0;0YA  composition  series  is  a subnormal series which cannot be refined. This
  attribute    returns   [13Xone[113X   composition   series   (of   potentially   many
  possibilities).   The   variant  [2XCompositionSeriesThrough[102X  takes  as  second
  argument  a  list  [3Xnormals[103X  of  normal subgroups of the group, and returns a
  composition series that incorporates these normal subgroups.[133X
  
  [1X39.17-6 DisplayCompositionSeries[101X
  
  [33X[1;0Y[29X[2XDisplayCompositionSeries[102X( [3XG[103X ) [32X function[133X
  
  [33X[0;0YDisplays  a  composition  series  of [3XG[103X in a nice way, identifying the simple
  factors.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XCompositionSeries(g);[127X[104X
    [4X[28X[ Group([ (3,4), (2,4,3), (1,4)(2,3), (1,3)(2,4) ]),[128X[104X
    [4X[28X  Group([ (2,4,3), (1,4)(2,3), (1,3)(2,4) ]),[128X[104X
    [4X[28X  Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,3)(2,4) ]), Group(())[128X[104X
    [4X[28X ][128X[104X
    [4X[25Xgap>[125X [27XDisplayCompositionSeries(Group((1,2,3,4,5,6,7),(1,2)));[127X[104X
    [4X[28XG (2 gens, size 5040)[128X[104X
    [4X[28X | C2[128X[104X
    [4X[28XS (5 gens, size 2520)[128X[104X
    [4X[28X | A7[128X[104X
    [4X[28X1 (0 gens, size 1)[128X[104X
  [4X[32X[104X
  
  [1X39.17-7 DerivedSeriesOfGroup[101X
  
  [33X[1;0Y[29X[2XDerivedSeriesOfGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThe derived series of a group is obtained by [22XU_{i+1} = U_i'[122X. It stops if [22XU_i[122X
  is perfect.[133X
  
  [1X39.17-8 DerivedLength[101X
  
  [33X[1;0Y[29X[2XDerivedLength[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThe  derived length of a group is the number of steps in the derived series.
  (As there is always the group, it is the series length minus 1.)[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XList(DerivedSeriesOfGroup(g),Size);[127X[104X
    [4X[28X[ 24, 12, 4, 1 ][128X[104X
    [4X[25Xgap>[125X [27XDerivedLength(g);[127X[104X
    [4X[28X3[128X[104X
  [4X[32X[104X
  
  
  [1X39.17-9 [33X[0;0YElementaryAbelianSeries[133X[101X
  
  [33X[1;0Y[29X[2XElementaryAbelianSeries[102X( [3XG[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XElementaryAbelianSeriesLargeSteps[102X( [3XG[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XElementaryAbelianSeries[102X( [3Xlist[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  a  series  of  normal  subgroups  of  [22XG[122X  such  that all factors are
  elementary  abelian.  If  the group is not solvable (and thus no such series
  exists) it returns [9Xfail[109X.[133X
  
  [33X[0;0YThe  variant  [2XElementaryAbelianSeriesLargeSteps[102X  tries  to make the steps in
  this  series  large (by eliminating intermediate subgroups if possible) at a
  small additional cost.[133X
  
  [33X[0;0YIn  the third variant, an elementary abelian series through the given series
  of normal subgroups in the list [3Xlist[103X is constructed.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XList(ElementaryAbelianSeries(g),Size);[127X[104X
    [4X[28X[ 24, 12, 4, 1 ][128X[104X
  [4X[32X[104X
  
  [1X39.17-10 InvariantElementaryAbelianSeries[101X
  
  [33X[1;0Y[29X[2XInvariantElementaryAbelianSeries[102X( [3XG[103X, [3Xmorph[103X[, [3XN[103X[, [3Xfine[103X]] ) [32X function[133X
  
  [33X[0;0YFor  a  (solvable)  group  [3XG[103X  and  a  list of automorphisms [3Xmorph[103X of [3XG[103X, this
  command finds a normal series of [3XG[103X with elementary abelian factors such that
  every group in this series is invariant under every automorphism in [3Xmorph[103X.[133X
  
  [33X[0;0YIf  a  normal  subgroup [3XN[103X of [3XG[103X which is invariant under [3Xmorph[103X is given, this
  series  is chosen to contain [3XN[103X. No tests are performed to check the validity
  of the arguments.[133X
  
  [33X[0;0YThe series obtained will be constructed to prefer large steps unless [3Xfine[103X is
  given as [9Xtrue[109X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=Group((1,2,3,4),(1,3));[127X[104X
    [4X[28XGroup([ (1,2,3,4), (1,3) ])[128X[104X
    [4X[25Xgap>[125X [27Xhom:=GroupHomomorphismByImages(g,g,GeneratorsOfGroup(g),[127X[104X
    [4X[25X>[125X [27X[(1,4,3,2),(1,4)(2,3)]);[127X[104X
    [4X[28X[ (1,2,3,4), (1,3) ] -> [ (1,4,3,2), (1,4)(2,3) ][128X[104X
    [4X[25Xgap>[125X [27XInvariantElementaryAbelianSeries(g,[hom]);[127X[104X
    [4X[28X[ Group([ (1,2,3,4), (1,3) ]), Group([ (1,3)(2,4) ]), Group(()) ][128X[104X
  [4X[32X[104X
  
  [1X39.17-11 LowerCentralSeriesOfGroup[101X
  
  [33X[1;0Y[29X[2XLowerCentralSeriesOfGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThe  lower  central series of a group [3XG[103X is defined as [22XU_{i+1}:= [[3XG[103X, U_i][122X. It
  is a central series of normal subgroups. The name derives from the fact that
  [22XU_i[122X is contained in the [22Xi[122X-th step subgroup of any central series.[133X
  
  [1X39.17-12 UpperCentralSeriesOfGroup[101X
  
  [33X[1;0Y[29X[2XUpperCentralSeriesOfGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThe  upper  central series of a group [3XG[103X is defined as an ending series [22XU_i /
  U_{i+1}:= Z([3XG[103X/U_{i+1})[122X. It is a central series of normal subgroups. The name
  derives  from  the  fact  that  [22XU_i[122X  contains  every [22Xi[122X-th step subgroup of a
  central series.[133X
  
  [1X39.17-13 PCentralSeries[101X
  
  [33X[1;0Y[29X[2XPCentralSeries[102X( [3XG[103X, [3Xp[103X ) [32X operation[133X
  
  [33X[0;0YThe  [3Xp[103X-central  series  of  [3XG[103X  is  defined  by  [22XU_1:=  [3XG[103X[122X, [22XU_i:= [[3XG[103X, U_{i-1}]
  U_{i-1}^[3Xp[103X[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=DicyclicGroup(12);;[127X[104X
    [4X[25Xgap>[125X [27XPCentralSeries(g,2);[127X[104X
    [4X[28X[ <pc group of size 12 with 3 generators>, Group([ y3, y*y3 ]), Group([ y*y3 ]) ][128X[104X
    [4X[25Xgap>[125X [27Xg:=SymmetricGroup(4);;[127X[104X
    [4X[25Xgap>[125X [27XList(PCentralSeries(g,2), StructureDescription);[127X[104X
    [4X[28X[ "S4", "A4" ][128X[104X
  [4X[32X[104X
  
  [1X39.17-14 JenningsSeries[101X
  
  [33X[1;0Y[29X[2XJenningsSeries[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YFor  a  [22Xp[122X-group [3XG[103X, this function returns its Jennings series. This series is
  defined  by  setting [22XG_1 = [3XG[103X[122X and for [22Xi ≥ 0[122X, [22XG_{i+1} = [G_i,[3XG[103X] G_j^p[122X, where [22Xj[122X
  is the smallest integer [22X> i/p[122X.[133X
  
  [1X39.17-15 DimensionsLoewyFactors[101X
  
  [33X[1;0Y[29X[2XDimensionsLoewyFactors[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThis operation computes the dimensions of the factors of the Loewy series of
  [3XG[103X.  (See [HB82, p. 157] for the slightly complicated definition of the Loewy
  Series.)[133X
  
  [33X[0;0YThe  dimensions  are  computed  via  the  [2XJenningsSeries[102X  ([14X39.17-14[114X) without
  computing the Loewy series itself.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG:= SmallGroup( 3^6, 100 );[127X[104X
    [4X[28X<pc group of size 729 with 6 generators>[128X[104X
    [4X[25Xgap>[125X [27XJenningsSeries( G );[127X[104X
    [4X[28X[ <pc group of size 729 with 6 generators>, Group([ f3, f4, f5, f6 ]),[128X[104X
    [4X[28X  Group([ f4, f5, f6 ]), Group([ f5, f6 ]), Group([ f5, f6 ]),[128X[104X
    [4X[28X  Group([ f5, f6 ]), Group([ f6 ]), Group([ f6 ]), Group([ f6 ]),[128X[104X
    [4X[28X  Group([ <identity> of ... ]) ][128X[104X
    [4X[25Xgap>[125X [27XDimensionsLoewyFactors(G);[127X[104X
    [4X[28X[ 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26,[128X[104X
    [4X[28X  27, 27, 27, 27, 27, 27, 27, 27, 27, 26, 25, 23, 22, 20, 19, 17, 16,[128X[104X
    [4X[28X  14, 13, 11, 10, 8, 7, 5, 4, 2, 1 ][128X[104X
  [4X[32X[104X
  
  [1X39.17-16 AscendingChain[101X
  
  [33X[1;0Y[29X[2XAscendingChain[102X( [3XG[103X, [3XU[103X ) [32X function[133X
  
  [33X[0;0YThis  function  computes  an  ascending chain of subgroups from [3XU[103X to [3XG[103X. This
  chain is given as a list whose first entry is [3XU[103X and the last entry is [3XG[103X. The
  function tries to make the links in this chain small.[133X
  
  [33X[0;0YThe  option [10XrefineIndex[110X can be used to give a bound for refinements of steps
  to  avoid [5XGAP[105X trying to enforce too small steps. The option [10Xcheap[110X (if set to
  [9Xtrue[109X) will overall limit the amount of heuristic searches.[133X
  
  [1X39.17-17 IntermediateGroup[101X
  
  [33X[1;0Y[29X[2XIntermediateGroup[102X( [3XG[103X, [3XU[103X ) [32X function[133X
  
  [33X[0;0YThis  routine tries to find a subgroup [22XE[122X of [3XG[103X, such that [22X[3XG[103X > E > [3XU[103X[122X holds. If
  [3XU[103X  is  maximal  in  [3XG[103X,  the  function  returns [9Xfail[109X. This is done by finding
  minimal blocks for the operation of [3XG[103X on the right cosets of [3XU[103X.[133X
  
  [1X39.17-18 IntermediateSubgroups[101X
  
  [33X[1;0Y[29X[2XIntermediateSubgroups[102X( [3XG[103X, [3XU[103X ) [32X operation[133X
  
  [33X[0;0Yreturns  a  list  of all subgroups of [3XG[103X that properly contain [3XU[103X; that is all
  subgroups  between  [3XG[103X and [3XU[103X. It returns a record with a component [10Xsubgroups[110X,
  which is a list of these subgroups, as well as a component [10Xinclusions[110X, which
  lists   all  maximality  inclusions  among  these  subgroups.  A  maximality
  inclusion is given as a list [22X[i, j][122X indicating that the subgroup number [22Xi[122X is
  a  maximal  subgroup  of  the  subgroup  number  [22Xj[122X,  the  numbers  [22X0[122X and [22X1 +[122X
  [10XLength(subgroups)[110X are used to denote [3XU[103X and [3XG[103X, respectively.[133X
  
  [1X39.17-19 StructuralSeriesOfGroup[101X
  
  [33X[1;0Y[29X[2XStructuralSeriesOfGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThe  structural  series  of  a  finite  group  [3XG[103X  is  a descending series of
  characteristic  subgroups  which  goes  through  the  derived  series of the
  solvable radical of $G$, refined into elementary abelian factors, as well as
  the  socle  and  the  [3XPker[103X (kernel of the action on socle components) of the
  radical factor[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xgp:=WreathProduct(SymmetricGroup(5),SymmetricGroup(3));;[127X[104X
    [4X[25Xgap>[125X [27Xgp:=WreathProduct(Group((1,2,3,4,5,6)),gp);;[127X[104X
    [4X[25Xgap>[125X [27XList(StructuralSeriesOfGroup(gp),Size);[127X[104X
    [4X[28X[ 4874877920083968000, 812479653347328000, 101559956668416000, 470184984576, 32768, 1 ][128X[104X
  [4X[32X[104X
  
  
  [1X39.18 [33X[0;0YFactor Groups[133X[101X
  
  [1X39.18-1 NaturalHomomorphismByNormalSubgroup[101X
  
  [33X[1;0Y[29X[2XNaturalHomomorphismByNormalSubgroup[102X( [3XG[103X, [3XN[103X ) [32X function[133X
  [33X[1;0Y[29X[2XNaturalHomomorphismByNormalSubgroupNC[102X( [3XG[103X, [3XN[103X ) [32X function[133X
  
  [33X[0;0Yreturns  a  homomorphism from [3XG[103X to another group whose kernel is [3XN[103X. [5XGAP[105X will
  try  to select the image group as to make computations in it as efficient as
  possible. As the factor group [22X[3XG[103X/[3XN[103X[122X can be identified with the image of [3XG[103X this
  permits  efficient  computations  in  the  factor  group.  The  homomorphism
  returned  is  not necessarily surjective, so [2XImagesSource[102X ([14X32.4-1[114X) should be
  used  instead  of  [2XRange[102X  ([14X32.3-7[114X)  to  get a group isomorphic to the factor
  group. The [10XNC[110X variant does not check whether [3XN[103X is normal in [3XG[103X.[133X
  
  [1X39.18-2 FactorGroup[101X
  
  [33X[1;0Y[29X[2XFactorGroup[102X( [3XG[103X, [3XN[103X ) [32X function[133X
  [33X[1;0Y[29X[2XFactorGroupNC[102X( [3XG[103X, [3XN[103X ) [32X operation[133X
  
  [33X[0;0Yreturns  the  image  of  the  [10XNaturalHomomorphismByNormalSubgroup([3XG[103X[10X,[3XN[103X[10X)[110X. This
  function  is provided for compatibility with older code, but if a connection
  between  group  and  factor is desired, users need to start by obtaining the
  [10XNaturalHomomorphismByNormalSubgroup[110X  in the first place. The [10XNC[110X version does
  not test whether [3XN[103X is normal in [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=Group((1,2,3,4),(1,2));;n:=Subgroup(g,[(1,2)(3,4),(1,3)(2,4)]);;[127X[104X
    [4X[25Xgap>[125X [27Xhom:=NaturalHomomorphismByNormalSubgroup(g,n);[127X[104X
    [4X[28X[ (1,2,3,4), (1,2) ] -> [ f1*f2, f1 ][128X[104X
    [4X[25Xgap>[125X [27XSize(ImagesSource(hom));[127X[104X
    [4X[28X6[128X[104X
    [4X[25Xgap>[125X [27XStructureDescription(Image(hom,g));[127X[104X
    [4X[28X"S3"[128X[104X
  [4X[32X[104X
  
  [1X39.18-3 CommutatorFactorGroup[101X
  
  [33X[1;0Y[29X[2XCommutatorFactorGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Ycomputes the commutator factor group [22X[3XG[103X/[3XG[103X'[122X of the group [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XCommutatorFactorGroup(g);[127X[104X
    [4X[28XGroup([ f1 ])[128X[104X
  [4X[32X[104X
  
  [1X39.18-4 MaximalAbelianQuotient[101X
  
  [33X[1;0Y[29X[2XMaximalAbelianQuotient[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  an  epimorphism  from [3XG[103X onto the maximal abelian quotient of [3XG[103X. The
  kernel of this epimorphism is the derived subgroup of [3XG[103X, see [2XDerivedSubgroup[102X
  ([14X39.12-3[114X).[133X
  
  [1X39.18-5 HasAbelianFactorGroup[101X
  
  [33X[1;0Y[29X[2XHasAbelianFactorGroup[102X( [3XG[103X, [3XN[103X ) [32X function[133X
  
  [33X[0;0Ytests  whether  [3XG[103X [22X/[122X [3XN[103X is abelian (without explicitly constructing the factor
  group and without testing whether [3XN[103X is in fact a normal subgroup).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XHasAbelianFactorGroup(g,n);[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XHasAbelianFactorGroup(DerivedSubgroup(g),n);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X39.18-6 HasElementaryAbelianFactorGroup[101X
  
  [33X[1;0Y[29X[2XHasElementaryAbelianFactorGroup[102X( [3XG[103X, [3XN[103X ) [32X function[133X
  
  [33X[0;0Ytests  whether  [3XG[103X [22X/[122X [3XN[103X is elementary abelian (without explicitly constructing
  the  factor  group  and  without  testing  whether  [3XN[103X  is  in  fact a normal
  subgroup).[133X
  
  [1X39.18-7 CentralizerModulo[101X
  
  [33X[1;0Y[29X[2XCentralizerModulo[102X( [3XG[103X, [3XN[103X, [3Xelm[103X ) [32X operation[133X
  
  [33X[0;0YComputes the full preimage of the centralizer [22XC_{[3XG[103X/[3XN[103X}([3Xelm[103X ⋅ [3XN[103X)[122X in [3XG[103X (without
  necessarily constructing the factor group).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XCentralizerModulo(g,n,(1,2));[127X[104X
    [4X[28XGroup([ (3,4), (1,3)(2,4), (1,4)(2,3) ])[128X[104X
  [4X[32X[104X
  
  
  [1X39.19 [33X[0;0YSets of Subgroups[133X[101X
  
  [1X39.19-1 ConjugacyClassSubgroups[101X
  
  [33X[1;0Y[29X[2XConjugacyClassSubgroups[102X( [3XG[103X, [3XU[103X ) [32X operation[133X
  
  [33X[0;0Ygenerates  the conjugacy class of subgroups of [3XG[103X with representative [3XU[103X. This
  class  is  an  external  set,  so functions such as [2XRepresentative[102X ([14X30.4-7[114X),
  (which    returns    [3XU[103X),   [2XActingDomain[102X   ([14X41.12-3[114X)   (which   returns   [3XG[103X),
  [2XStabilizerOfExternalSet[102X  ([14X41.12-10[114X) (which returns the normalizer of [3XU[103X), and
  [2XAsList[102X ([14X30.3-8[114X) work for it.[133X
  
  [33X[0;0Y(The use of the [10X[][110X list access to select elements of the class is considered
  obsolescent  and will be removed in future versions. Use [2XClassElementLattice[102X
  ([14X39.20-2[114X) instead.)[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=Group((1,2,3,4),(1,2));;IsNaturalSymmetricGroup(g);;[127X[104X
    [4X[25Xgap>[125X [27Xcl:=ConjugacyClassSubgroups(g,Subgroup(g,[(1,2)]));[127X[104X
    [4X[28XGroup( [ (1,2) ] )^G[128X[104X
    [4X[25Xgap>[125X [27XSize(cl);[127X[104X
    [4X[28X6[128X[104X
    [4X[25Xgap>[125X [27XClassElementLattice(cl,4);[127X[104X
    [4X[28XGroup([ (2,3) ])[128X[104X
  [4X[32X[104X
  
  [1X39.19-2 IsConjugacyClassSubgroupsRep[101X
  
  [33X[1;0Y[29X[2XIsConjugacyClassSubgroupsRep[102X( [3Xobj[103X ) [32X Representation[133X
  [33X[1;0Y[29X[2XIsConjugacyClassSubgroupsByStabilizerRep[102X( [3Xobj[103X ) [32X Representation[133X
  
  [33X[0;0YIs the representation [5XGAP[105X uses for conjugacy classes of subgroups. It can be
  used  to  check  whether  an  object  is  a  class  of subgroups. The second
  representation  [2XIsConjugacyClassSubgroupsByStabilizerRep[102X  in  addition is an
  external orbit by stabilizer and will compute its elements via a transversal
  of the stabilizer.[133X
  
  [1X39.19-3 ConjugacyClassesSubgroups[101X
  
  [33X[1;0Y[29X[2XConjugacyClassesSubgroups[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThis  attribute  returns a list of all conjugacy classes of subgroups of the
  group    [3XG[103X.    It   also   is   applicable   for   lattices   of   subgroups
  (see [2XLatticeSubgroups[102X  ([14X39.20-1[114X)). The order in which the classes are listed
  depends  on  the  method  chosen  by  [5XGAP[105X.  For  each  class of subgroups, a
  representative can be accessed using [2XRepresentative[102X ([14X30.4-7[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XConjugacyClassesSubgroups(g);[127X[104X
    [4X[28X[ Group( () )^G, Group( [ (1,3)(2,4) ] )^G, Group( [ (3,4) ] )^G,[128X[104X
    [4X[28X  Group( [ (2,4,3) ] )^G, Group( [ (1,4)(2,3), (1,3)(2,4) ] )^G,[128X[104X
    [4X[28X  Group( [ (3,4), (1,2)(3,4) ] )^G,[128X[104X
    [4X[28X  Group( [ (1,3,2,4), (1,2)(3,4) ] )^G, Group( [ (3,4), (2,4,3) ] )^G,[128X[104X
    [4X[28X  Group( [ (1,4)(2,3), (1,3)(2,4), (3,4) ] )^G,[128X[104X
    [4X[28X  Group( [ (1,4)(2,3), (1,3)(2,4), (2,4,3) ] )^G,[128X[104X
    [4X[28X  Group( [ (1,4)(2,3), (1,3)(2,4), (2,4,3), (3,4) ] )^G ][128X[104X
  [4X[32X[104X
  
  [1X39.19-4 ConjugacyClassesMaximalSubgroups[101X
  
  [33X[1;0Y[29X[2XConjugacyClassesMaximalSubgroups[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  the conjugacy classes of maximal subgroups of [3XG[103X. Representatives of
  the classes can be computed directly by [2XMaximalSubgroupClassReps[102X ([14X39.19-5[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XConjugacyClassesMaximalSubgroups(g);[127X[104X
    [4X[28X[ Group( [ (2,4,3), (1,4)(2,3), (1,3)(2,4) ] )^G,[128X[104X
    [4X[28X  Group( [ (3,4), (1,3)(2,4) ] )^G, Group( [ (3,4), (2,4,3) ] )^G ][128X[104X
  [4X[32X[104X
  
  [1X39.19-5 MaximalSubgroupClassReps[101X
  
  [33X[1;0Y[29X[2XMaximalSubgroupClassReps[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns a list of conjugacy representatives of the maximal subgroups of [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XMaximalSubgroupClassReps(g);[127X[104X
    [4X[28X[ Group([ (2,4,3), (1,4)(2,3), (1,3)(2,4) ]),[128X[104X
    [4X[28X  Group([ (3,4), (1,3)(2,4) ]), Group([ (3,4), (2,4,3) ]) ][128X[104X
  [4X[32X[104X
  
  [1X39.19-6 LowIndexSubgroups[101X
  
  [33X[1;0Y[29X[2XLowIndexSubgroups[102X( [3XG[103X, [3Xindex[103X ) [32X operation[133X
  
  [33X[0;0YThe  operation  [2XLowIndexSubgroups[102X  computes representatives of the conjugacy
  classes  of  subgroups  of the group [3XG[103X that have index less than or equal to
  [3Xindex[103X.[133X
  
  [33X[0;0YFor   finitely   presented   groups   this   operation  simply  defaults  to
  [2XLowIndexSubgroupsFpGroup[102X   ([14X47.10-1[114X).  In  other  cases,  it  uses  repeated
  calculation of maximal subgroups.[133X
  
  [33X[0;0YThe  function  [2XLowLayerSubgroups[102X  ([14X39.20-6[114X) works similar but does not bound
  the index, but instead considers up to [3Xlayer[103X-th maximal subgroups.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=TransitiveGroup(18,950);;[127X[104X
    [4X[25Xgap>[125X [27Xl:=LowIndexSubgroups(g,20);;Collected(List(l,x->Index(g,x)));[127X[104X
    [4X[28X[ [ 1, 1 ], [ 2, 1 ], [ 5, 1 ], [ 6, 1 ], [ 10, 2 ], [ 12, 3 ], [ 15, 1 ],[128X[104X
    [4X[28X  [ 16, 2 ], [ 18, 1 ], [ 20, 9 ] ][128X[104X
  [4X[32X[104X
  
  [1X39.19-7 AllSubgroups[101X
  
  [33X[1;0Y[29X[2XAllSubgroups[102X( [3XG[103X ) [32X function[133X
  
  [33X[0;0YFor  a  finite  group  [3XG[103X  [2XAllSubgroups[102X returns a list of all subgroups of [3XG[103X,
  intended  primarily  for  use  in  class  for small examples. This list will
  quickly  get  very  long  and  in  general  use of [2XConjugacyClassesSubgroups[102X
  ([14X39.19-3[114X) is recommended.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XAllSubgroups(SymmetricGroup(3));[127X[104X
    [4X[28X[ Group(()), Group([ (2,3) ]), Group([ (1,2) ]), Group([ (1,3) ]),[128X[104X
    [4X[28X  Group([ (1,2,3) ]), Group([ (1,2,3), (2,3) ]) ][128X[104X
  [4X[32X[104X
  
  [1X39.19-8 MaximalSubgroups[101X
  
  [33X[1;0Y[29X[2XMaximalSubgroups[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  a  list of all maximal subgroups of [3XG[103X. This may take up much space,
  therefore    the    command    should    be   avoided   if   possible.   See
  [2XConjugacyClassesMaximalSubgroups[102X ([14X39.19-4[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XMaximalSubgroups(Group((1,2,3),(1,2)));[127X[104X
    [4X[28X[ Group([ (1,2,3) ]), Group([ (2,3) ]), Group([ (1,2) ]),[128X[104X
    [4X[28X  Group([ (1,3) ]) ][128X[104X
  [4X[32X[104X
  
  [1X39.19-9 NormalSubgroups[101X
  
  [33X[1;0Y[29X[2XNormalSubgroups[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns a list of all normal subgroups of [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=SymmetricGroup(4);;[127X[104X
    [4X[25Xgap>[125X [27XList( NormalSubgroups(g), StructureDescription );[127X[104X
    [4X[28X[ "S4", "A4", "C2 x C2", "1" ][128X[104X
    [4X[25Xgap>[125X [27Xg:=AbelianGroup([2,2]);; NormalSubgroups(g);[127X[104X
    [4X[28X[ <pc group of size 4 with 2 generators>, Group([ f2 ]),[128X[104X
    [4X[28X  Group([ f1*f2 ]), Group([ f1 ]), Group([  ]) ][128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe  algorithm  for  the  computation  of  normal  subgroups is described in
  [Hul98].[133X
  
  [1X39.19-10 MaximalNormalSubgroups[101X
  
  [33X[1;0Y[29X[2XMaximalNormalSubgroups[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yis  a  list containing those proper normal subgroups of the group [3XG[103X that are
  maximal  among the proper normal subgroups. Gives error if [3XG[103X/[3XG'[103X is infinite,
  yielding  infinitely  many  maximal normal subgroups. Note, that the maximal
  normal  subgroups  of  a  group  [3XG[103X  can  be computed more efficiently if the
  character  table  of  [3XG[103X  is known or if [3XG[103X is known to be abelian or solvable
  (even  if  infinite).  So  if the character table is needed, anyhow, or [3XG[103X is
  suspected  to  be  abelian or solvable, then these should be computed before
  computing the maximal normal subgroups.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=SymmetricGroup(4);; MaximalNormalSubgroups( g );[127X[104X
    [4X[28X[ Alt( [ 1 .. 4 ] ) ][128X[104X
    [4X[25Xgap>[125X [27Xf := FreeGroup("x", "y");; x := f.1;; y := f.2;;[127X[104X
    [4X[25Xgap>[125X [27XList(MaximalNormalSubgroups(f/[x^2, y^2]), GeneratorsOfGroup);[127X[104X
    [4X[28X[ [ x, y*x*y^-1 ], [ y, x*y*x^-1 ], [ y*x^-1 ] ][128X[104X
  [4X[32X[104X
  
  [1X39.19-11 MinimalNormalSubgroups[101X
  
  [33X[1;0Y[29X[2XMinimalNormalSubgroups[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yis  a  list containing those nontrivial normal subgroups of the group [3XG[103X that
  are minimal among the nontrivial normal subgroups.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=SymmetricGroup(4);; MinimalNormalSubgroups( g );[127X[104X
    [4X[28X[ Group([ (1,4)(2,3), (1,3)(2,4) ]) ][128X[104X
  [4X[32X[104X
  
  [1X39.19-12 CharacteristicSubgroups[101X
  
  [33X[1;0Y[29X[2XCharacteristicSubgroups[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  a list of all characteristic subgroups of [3XG[103X, that is subgroups that
  are invariant under all automorphisms.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=SymmetricGroup(4);;[127X[104X
    [4X[25Xgap>[125X [27XList( CharacteristicSubgroups(g), StructureDescription );[127X[104X
    [4X[28X[ "S4", "A4", "C2 x C2", "1" ][128X[104X
    [4X[25Xgap>[125X [27Xg:=AbelianGroup([2,2]);; CharacteristicSubgroups(g);[127X[104X
    [4X[28X[ <pc group of size 4 with 2 generators>, Group([  ]) ][128X[104X
  [4X[32X[104X
  
  
  [1X39.20 [33X[0;0YSubgroup Lattice[133X[101X
  
  [1X39.20-1 LatticeSubgroups[101X
  
  [33X[1;0Y[29X[2XLatticeSubgroups[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Ycomputes  the  lattice  of  subgroups  of  the group [3XG[103X. This lattice has the
  conjugacy   classes  of  subgroups  as  attribute  [2XConjugacyClassesSubgroups[102X
  ([14X39.19-3[114X) and permits one to test maximality/minimality relations.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=SymmetricGroup(4);;[127X[104X
    [4X[25Xgap>[125X [27Xl:=LatticeSubgroups(g);[127X[104X
    [4X[28X<subgroup lattice of Sym( [ 1 .. 4 ] ), 11 classes, 30 subgroups>[128X[104X
    [4X[25Xgap>[125X [27XConjugacyClassesSubgroups(l);[127X[104X
    [4X[28X[ Group( () )^G, Group( [ (1,3)(2,4) ] )^G, Group( [ (3,4) ] )^G,[128X[104X
    [4X[28X  Group( [ (2,4,3) ] )^G, Group( [ (1,4)(2,3), (1,3)(2,4) ] )^G,[128X[104X
    [4X[28X  Group( [ (3,4), (1,2)(3,4) ] )^G,[128X[104X
    [4X[28X  Group( [ (1,3,2,4), (1,2)(3,4) ] )^G, Group( [ (3,4), (2,4,3) ] )^G,[128X[104X
    [4X[28X  Group( [ (1,4)(2,3), (1,3)(2,4), (3,4) ] )^G,[128X[104X
    [4X[28X  Group( [ (1,4)(2,3), (1,3)(2,4), (2,4,3) ] )^G,[128X[104X
    [4X[28X  Group( [ (1,4)(2,3), (1,3)(2,4), (2,4,3), (3,4) ] )^G ][128X[104X
  [4X[32X[104X
  
  [1X39.20-2 ClassElementLattice[101X
  
  [33X[1;0Y[29X[2XClassElementLattice[102X( [3XC[103X, [3Xn[103X ) [32X operation[133X
  
  [33X[0;0YFor  a  class  [3XC[103X  of  subgroups,  obtained  by  a  lattice computation, this
  operation returns the [3Xn[103X-th conjugate subgroup in the class.[133X
  
  [33X[0;0Y[13XBecause  of other methods installed, calling [2XAsList[102X ([14X30.3-8[114X) with [3XC[103X can give
  a different arrangement of the class elements![113X[133X
  
  [33X[0;0YThe [5XGAP[105X package [5XXGAP[105X permits a graphical display of the lattice of subgroups
  in a nice way.[133X
  
  [1X39.20-3 DotFileLatticeSubgroups[101X
  
  [33X[1;0Y[29X[2XDotFileLatticeSubgroups[102X( [3XL[103X, [3Xfile[103X ) [32X function[133X
  
  [33X[0;0YThis  function produces a graphical representation of the subgroup lattice [3XL[103X
  in  file  [3Xfile[103X.  The  output is in [10X.dot[110X (also known as [10XGraphViz[110X format). For
  details  on  the  format,  and information about how to display or edit this
  format   see   [7Xhttps://www.graphviz.org[107X.  (On  the  Macintosh,  the  program
  [10XOmniGraffle[110X is also able to read this format.)[133X
  
  [33X[0;0YSubgroups are labelled in the form [10X[3Xi[103X[10X-[3Xj[103X[10X[110X where [3Xi[103X is the number of the class of
  subgroups  and  [3Xj[103X  the  number  within  this  class.  Normal  subgroups  are
  represented by a box.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XDotFileLatticeSubgroups(l,"s4lat.dot");[127X[104X
  [4X[32X[104X
  
  [1X39.20-4 MaximalSubgroupsLattice[101X
  
  [33X[1;0Y[29X[2XMaximalSubgroupsLattice[102X( [3Xlat[103X ) [32X attribute[133X
  
  [33X[0;0YFor  a lattice [3Xlat[103X of subgroups this attribute contains the maximal subgroup
  relations  among the subgroups of the lattice. It is a list corresponding to
  the  [2XConjugacyClassesSubgroups[102X  ([14X39.19-3[114X)  value  of the lattice, each entry
  giving  a list of the maximal subgroups of the representative of this class.
  Every  maximal  subgroup  is  indicated by a list of the form [22X[ c, n ][122X which
  means  that the [22Xn[122X-th subgroup in class number [22Xc[122X is a maximal subgroup of the
  representative.[133X
  
  [33X[0;0YThe number [22Xn[122X corresponds to access via [2XClassElementLattice[102X ([14X39.20-2[114X) and [13Xnot[113X
  necessarily     the     [2XAsList[102X     ([14X30.3-8[114X)     arrangement!     See    also
  [2XMinimalSupergroupsLattice[102X ([14X39.20-5[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XMaximalSubgroupsLattice(l);[127X[104X
    [4X[28X[ [  ], [ [ 1, 1 ] ], [ [ 1, 1 ] ], [ [ 1, 1 ] ],[128X[104X
    [4X[28X  [ [ 2, 1 ], [ 2, 2 ], [ 2, 3 ] ], [ [ 3, 1 ], [ 3, 6 ], [ 2, 3 ] ],[128X[104X
    [4X[28X  [ [ 2, 3 ] ], [ [ 4, 1 ], [ 3, 1 ], [ 3, 2 ], [ 3, 3 ] ],[128X[104X
    [4X[28X  [ [ 7, 1 ], [ 6, 1 ], [ 5, 1 ] ],[128X[104X
    [4X[28X  [ [ 5, 1 ], [ 4, 1 ], [ 4, 2 ], [ 4, 3 ], [ 4, 4 ] ],[128X[104X
    [4X[28X  [ [ 10, 1 ], [ 9, 1 ], [ 9, 2 ], [ 9, 3 ], [ 8, 1 ], [ 8, 2 ],[128X[104X
    [4X[28X      [ 8, 3 ], [ 8, 4 ] ] ][128X[104X
    [4X[25Xgap>[125X [27Xlast[6];[127X[104X
    [4X[28X[ [ 3, 1 ], [ 3, 6 ], [ 2, 3 ] ][128X[104X
    [4X[25Xgap>[125X [27Xu1:=Representative(ConjugacyClassesSubgroups(l)[6]);[127X[104X
    [4X[28XGroup([ (3,4), (1,2)(3,4) ])[128X[104X
    [4X[25Xgap>[125X [27Xu2:=ClassElementLattice(ConjugacyClassesSubgroups(l)[3],1);;[127X[104X
    [4X[25Xgap>[125X [27Xu3:=ClassElementLattice(ConjugacyClassesSubgroups(l)[3],6);;[127X[104X
    [4X[25Xgap>[125X [27Xu4:=ClassElementLattice(ConjugacyClassesSubgroups(l)[2],3);;[127X[104X
    [4X[25Xgap>[125X [27XIsSubgroup(u1,u2);IsSubgroup(u1,u3);IsSubgroup(u1,u4);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[28Xtrue[128X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X39.20-5 MinimalSupergroupsLattice[101X
  
  [33X[1;0Y[29X[2XMinimalSupergroupsLattice[102X( [3Xlat[103X ) [32X attribute[133X
  
  [33X[0;0YFor  a  lattice  [3Xlat[103X  of  subgroups  this  attribute  contains  the  minimal
  supergroup  relations  among  the  subgroups  of  the  lattice. It is a list
  corresponding  to  the  [2XConjugacyClassesSubgroups[102X  ([14X39.19-3[114X)  value  of  the
  lattice,  each  entry  giving  a  list  of  the  minimal  supergroups of the
  representative  of  this  class.  Every minimal supergroup is indicated by a
  list  of  the  form  [22X[  c,  n ][122X, which means that the [22Xn[122X-th subgroup in class
  number [22Xc[122X is a minimal supergroup of the representative.[133X
  
  [33X[0;0YThe number [22Xn[122X corresponds to access via [2XClassElementLattice[102X ([14X39.20-2[114X) and [13Xnot[113X
  necessarily     the     [2XAsList[102X     ([14X30.3-8[114X)     arrangement!     See    also
  [2XMaximalSubgroupsLattice[102X ([14X39.20-4[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XMinimalSupergroupsLattice(l);[127X[104X
    [4X[28X[ [ [ 2, 1 ], [ 2, 2 ], [ 2, 3 ], [ 3, 1 ], [ 3, 2 ], [ 3, 3 ],[128X[104X
    [4X[28X      [ 3, 4 ], [ 3, 5 ], [ 3, 6 ], [ 4, 1 ], [ 4, 2 ], [ 4, 3 ],[128X[104X
    [4X[28X      [ 4, 4 ] ], [ [ 5, 1 ], [ 6, 2 ], [ 7, 2 ] ],[128X[104X
    [4X[28X  [ [ 6, 1 ], [ 8, 1 ], [ 8, 3 ] ], [ [ 8, 1 ], [ 10, 1 ] ],[128X[104X
    [4X[28X  [ [ 9, 1 ], [ 9, 2 ], [ 9, 3 ], [ 10, 1 ] ], [ [ 9, 1 ] ],[128X[104X
    [4X[28X  [ [ 9, 1 ] ], [ [ 11, 1 ] ], [ [ 11, 1 ] ], [ [ 11, 1 ] ], [  ] ][128X[104X
    [4X[25Xgap>[125X [27Xlast[3];[127X[104X
    [4X[28X[ [ 6, 1 ], [ 8, 1 ], [ 8, 3 ] ][128X[104X
    [4X[25Xgap>[125X [27Xu5:=ClassElementLattice(ConjugacyClassesSubgroups(l)[8],1);[127X[104X
    [4X[28XGroup([ (3,4), (2,4,3) ])[128X[104X
    [4X[25Xgap>[125X [27Xu6:=ClassElementLattice(ConjugacyClassesSubgroups(l)[8],3);[127X[104X
    [4X[28XGroup([ (1,3), (1,3,4) ])[128X[104X
    [4X[25Xgap>[125X [27XIsSubgroup(u5,u2);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsSubgroup(u6,u2);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X39.20-6 LowLayerSubgroups[101X
  
  [33X[1;0Y[29X[2XLowLayerSubgroups[102X( [[3Xact[103X, ][3XG[103X, [3Xlim[103X[, [3Xcond[103X, [3Xdosub[103X] ) [32X function[133X
  
  [33X[0;0YThis function computes representatives of the conjugacy classes of subgroups
  of  the  finite  group [3XG[103X such that the subgroups can be obtained as [3Xlim[103X-fold
  iterated  maximal subgroups. If a function [3Xcond[103X is given, only subgroups for
  which this function returns true (also for their intermediate overgroups) is
  returned.  If  also  a  function  [3Xdosub[103X is given, maximal subgroups are only
  attempted  if  this function returns true (this is separated for performance
  reasons).  In  the  example below, the result would be the same with leaving
  out  the fourth function, but calculation this way is slightly faster. If an
  initial argument [3Xact[103X is given, it must be a group containing and normalizing
  [3XG[103X,  and  representatives  for  classes  under  the  action of this group are
  chosen.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=SymmetricGroup(12);;[127X[104X
    [4X[25Xgap>[125X [27Xl:=LowLayerSubgroups(g,2,x->Size(x)>100000,x->Size(x)>200000);;[127X[104X
    [4X[25Xgap>[125X [27XCollected(List(l,Size));[127X[104X
    [4X[28X[ [ 100800, 1 ], [ 120960, 1 ], [ 161280, 1 ], [ 241920, 1 ], [ 302400, 3 ],[128X[104X
    [4X[28X  [ 322560, 1 ], [ 483840, 3 ], [ 518400, 3 ], [ 604800, 1 ], [ 725760, 1 ],[128X[104X
    [4X[28X  [ 967680, 1 ], [ 1036800, 1 ], [ 1088640, 3 ], [ 2177280, 1 ],[128X[104X
    [4X[28X  [ 3628800, 3 ], [ 7257600, 1 ], [ 19958400, 1 ], [ 39916800, 1 ],[128X[104X
    [4X[28X  [ 239500800, 1 ], [ 479001600, 1 ] ][128X[104X
  [4X[32X[104X
  
  [1X39.20-7 ContainedConjugates[101X
  
  [33X[1;0Y[29X[2XContainedConjugates[102X( [3XG[103X, [3XA[103X, [3XB[103X[, [3Xonlyone[103X] ) [32X operation[133X
  
  [33X[0;0YFor  [22XA,B  ≤  G[122X  this  operation  returns  representatives of the [3XA[103X conjugacy
  classes of subgroups that are conjugate to [3XB[103X under [3XG[103X. The function returns a
  list  of  pairs  of subgroup and conjugating element. If the optional fourth
  argument  [3Xonlyone[103X  is  given  as  [3Xtrue[103X,  then only one pair (or [3Xfail[103X if none
  exists) is returned.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=SymmetricGroup(8);;[127X[104X
    [4X[25Xgap>[125X [27Xa:=TransitiveGroup(8,47);;b:=TransitiveGroup(8,9);;[127X[104X
    [4X[25Xgap>[125X [27XContainedConjugates(g,a,b);[127X[104X
    [4X[28X[ [ Group([ (1,8)(2,3)(4,5)(6,7), (1,3)(2,8)(4,6)(5,7), (1,5)(2,6)(3,7)(4,8),[128X[104X
    [4X[28X        (4,5)(6,7) ]), () ],[128X[104X
    [4X[28X  [ Group([ (1,8)(2,3)(4,5)(6,7), (1,5)(2,6)(3,7)(4,8), (1,3)(2,8)(4,6)(5,7),[128X[104X
    [4X[28X        (2,3)(6,7) ]), (2,4)(3,5) ] ][128X[104X
    [4X[25Xgap>[125X [27XContainedConjugates(g,a,b,true);[127X[104X
    [4X[28X[ Group([ (1,8)(2,3)(4,5)(6,7), (1,3)(2,8)(4,6)(5,7), (1,5)(2,6)(3,7)(4,8),[128X[104X
    [4X[28X    (4,5)(6,7) ]), () ][128X[104X
  [4X[32X[104X
  
  [1X39.20-8 ContainingConjugates[101X
  
  [33X[1;0Y[29X[2XContainingConjugates[102X( [3XG[103X, [3XA[103X, [3XB[103X ) [32X operation[133X
  
  [33X[0;0YFor [22XA,B ≤ G[122X this operation returns all [3XG[103X conjugates of [3XA[103X that contain [3XB[103X. The
  function returns a list of pairs of subgroup and conjugating element.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=SymmetricGroup(8);;[127X[104X
    [4X[25Xgap>[125X [27Xa:=TransitiveGroup(8,47);;b:=TransitiveGroup(8,7);;[127X[104X
    [4X[25Xgap>[125X [27XContainingConjugates(g,a,b);[127X[104X
    [4X[28X[ [ Group([ (1,3,5,7), (3,5), (1,4)(2,7)(3,6)(5,8) ]), (2,3,5,4)(7,8) ] ][128X[104X
  [4X[32X[104X
  
  [1X39.20-9 MinimalFaithfulPermutationDegree[101X
  
  [33X[1;0Y[29X[2XMinimalFaithfulPermutationDegree[102X( [3XG[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XMinimalFaithfulPermutationRepresentation[102X( [3XG[103X ) [32X operation[133X
  
  [33X[0;0YFor  a finite group [3XG[103X, [2XMinimalFaithfulPermutationDegree[102X calculates the least
  positive  integer  [22Xn=μ(G)[122X  such  that  [3XG[103X  is isomorphic to a subgroup of the
  symmetric group of degree [22Xn[122X. This can require calculating the whole subgroup
  lattice.  The  operation  [2XMinimalFaithfulPermutationRepresentation[102X returns a
  corresponding isomorphism.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XMinimalFaithfulPermutationDegree(SmallGroup(96,3));[127X[104X
    [4X[28X12[128X[104X
    [4X[25Xgap>[125X [27Xg:=TransitiveGroup(10,32);;[127X[104X
    [4X[25Xgap>[125X [27XMinimalFaithfulPermutationDegree(g);[127X[104X
    [4X[28X6[128X[104X
    [4X[25Xgap>[125X [27Xmap:=MinimalFaithfulPermutationRepresentation(g);;[127X[104X
    [4X[25Xgap>[125X [27XSize(Image(map));[127X[104X
    [4X[28X720[128X[104X
  [4X[32X[104X
  
  [1X39.20-10 RepresentativesPerfectSubgroups[101X
  
  [33X[1;0Y[29X[2XRepresentativesPerfectSubgroups[102X( [3XG[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XRepresentativesSimpleSubgroups[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns a list of conjugacy representatives of perfect (respectively simple)
  subgroups  of  [3XG[103X.  This uses the library of perfect groups (see [2XPerfectGroup[102X
  ([14X50.6-2[114X)),  thus  it  will  issue an error if the library is insufficient to
  determine all perfect subgroups.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xm11:=TransitiveGroup(11,6);[127X[104X
    [4X[28XM(11)[128X[104X
    [4X[25Xgap>[125X [27Xr:=RepresentativesPerfectSubgroups(m11);;[127X[104X
    [4X[25Xgap>[125X [27XList(r,Size);[127X[104X
    [4X[28X[ 60, 60, 360, 660, 7920, 1 ][128X[104X
    [4X[25Xgap>[125X [27XList(r,StructureDescription);[127X[104X
    [4X[28X[ "A5", "A5", "A6", "PSL(2,11)", "M11", "1" ][128X[104X
  [4X[32X[104X
  
  [1X39.20-11 ConjugacyClassesPerfectSubgroups[101X
  
  [33X[1;0Y[29X[2XConjugacyClassesPerfectSubgroups[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  a  list  of  the  conjugacy classes of perfect subgroups of [3XG[103X. (see
  [2XRepresentativesPerfectSubgroups[102X ([14X39.20-10[114X).)[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xr := ConjugacyClassesPerfectSubgroups(m11);;[127X[104X
    [4X[25Xgap>[125X [27XList(r, x -> StructureDescription(Representative(x)));[127X[104X
    [4X[28X[ "A5", "A5", "A6", "PSL(2,11)", "M11", "1" ][128X[104X
    [4X[25Xgap>[125X [27XSortedList( List(r,Size) );[127X[104X
    [4X[28X[ 1, 1, 11, 12, 66, 132 ][128X[104X
  [4X[32X[104X
  
  [1X39.20-12 Zuppos[101X
  
  [33X[1;0Y[29X[2XZuppos[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThe  [13XZuppos[113X  of  a group are the cyclic subgroups of prime power order. (The
  name  [21XZuppo[121X  derives from the German abbreviation for [21Xzyklische Untergruppen
  von  Primzahlpotenzordnung[121X.)  This  attribute  gives  generators of all such
  subgroups of a group [3XG[103X. That is all elements of [3XG[103X of prime power order up to
  the equivalence that they generate the same cyclic subgroup.[133X
  
  [1X39.20-13 InfoLattice[101X
  
  [33X[1;0Y[29X[2XInfoLattice[102X [32X info class[133X
  
  [33X[0;0Yis  the  information class used by the cyclic extension methods for subgroup
  lattice calculations.[133X
  
  
  [1X39.21 [33X[0;0YSpecific Methods for Subgroup Lattice Computations[133X[101X
  
  [1X39.21-1 LatticeByCyclicExtension[101X
  
  [33X[1;0Y[29X[2XLatticeByCyclicExtension[102X( [3XG[103X[, [3Xfunc[103X[, [3Xnoperf[103X]] ) [32X function[133X
  
  [33X[0;0Ycomputes  the  lattice  of  [3XG[103X  using  the cyclic extension algorithm. If the
  function  [3Xfunc[103X  is  given,  the  algorithm  will  discard  all subgroups not
  fulfilling  [3Xfunc[103X  (and  will  also  not  extend  them),  returning a partial
  lattice.  This  can  be  useful  to  compute  only  subgroups  with  certain
  properties.  Note however that this will [13Xnot[113X necessarily yield all subgroups
  that  fulfill  [3Xfunc[103X,  but  the  subgroups  whose  subgroups are used for the
  construction  must  also fulfill [3Xfunc[103X as well. (In fact the filter [3Xfunc[103X will
  simply  discard  subgroups  in the cyclic extension algorithm. Therefore the
  trivial  subgroup  will  always  be  included.)  Also  note, that for such a
  partial   lattice   maximality/minimality   inclusion  relations  cannot  be
  computed.  (If  [3Xfunc[103X  is  a  list  of  length  2,  its first entry is such a
  discarding function, the second a function for discarding zuppos.)[133X
  
  [33X[0;0YThe  cyclic extension algorithm requires the perfect subgroups of [3XG[103X. However
  [5XGAP[105X  cannot analyze the function [3Xfunc[103X for its implication but can only apply
  it.  If  it  is  known that [3Xfunc[103X implies solvability, the computation of the
  perfect  subgroups  can be avoided by giving a third parameter [3Xnoperf[103X set to
  [9Xtrue[109X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=WreathProduct(Group((1,2,3),(1,2)),Group((1,2,3,4)));;[127X[104X
    [4X[25Xgap>[125X [27Xl:=LatticeByCyclicExtension(g,function(G)[127X[104X
    [4X[25X>[125X [27Xreturn Size(G) in [1,2,3,6];end);[127X[104X
    [4X[28X<subgroup lattice of <permutation group of size 5184 with[128X[104X
    [4X[28X9 generators>, 47 classes,[128X[104X
    [4X[28X2628 subgroups, restricted under further condition l!.func>[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe total number of classes in this example is much bigger, as the following
  example shows:[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XLatticeSubgroups(g);[127X[104X
    [4X[28X<subgroup lattice of <permutation group of size 5184 with[128X[104X
    [4X[28X9 generators>, 566 classes, 27134 subgroups>[128X[104X
  [4X[32X[104X
  
  [1X39.21-2 InvariantSubgroupsElementaryAbelianGroup[101X
  
  [33X[1;0Y[29X[2XInvariantSubgroupsElementaryAbelianGroup[102X( [3XG[103X, [3Xhoms[103X[, [3Xdims[103X] ) [32X function[133X
  
  [33X[0;0YLet  [3XG[103X  be an elementary abelian group and [3Xhoms[103X be a set of automorphisms of
  [3XG[103X.  Then this function computes all subspaces of [3XG[103X which are invariant under
  all  automorphisms  in  [3Xhoms[103X. When considering [3XG[103X as a module for the algebra
  generated  by  [3Xhoms[103X, these are all submodules. If [3Xhoms[103X is empty, it computes
  all  subgroups.  If the optional parameter [3Xdims[103X is given, only submodules of
  this dimension are computed.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=Group((1,2,3),(4,5,6),(7,8,9));[127X[104X
    [4X[28XGroup([ (1,2,3), (4,5,6), (7,8,9) ])[128X[104X
    [4X[25Xgap>[125X [27Xhom:=GroupHomomorphismByImages(g,g,[(1,2,3),(4,5,6),(7,8,9)],[127X[104X
    [4X[25X>[125X [27X[(7,8,9),(1,2,3),(4,5,6)]);[127X[104X
    [4X[28X[ (1,2,3), (4,5,6), (7,8,9) ] -> [ (7,8,9), (1,2,3), (4,5,6) ][128X[104X
    [4X[25Xgap>[125X [27Xu:=InvariantSubgroupsElementaryAbelianGroup(g,[hom]);[127X[104X
    [4X[28X[ Group([ (7,8,9), (4,5,6), (1,2,3) ]),[128X[104X
    [4X[28X  Group([ (1,3,2)(7,8,9), (1,3,2)(4,5,6) ]),[128X[104X
    [4X[28X  Group([ (1,2,3)(4,5,6)(7,8,9) ]), Group(()) ][128X[104X
  [4X[32X[104X
  
  [1X39.21-3 SubgroupsSolvableGroup[101X
  
  [33X[1;0Y[29X[2XSubgroupsSolvableGroup[102X( [3XG[103X[, [3Xopt[103X] ) [32X function[133X
  
  [33X[0;0YThis  function  (implementing  the  algorithm published in [Hul99]) computes
  subgroups  of  a  solvable  group  [3XG[103X,  using  the homomorphism principle. It
  returns a list of representatives up to [3XG[103X-conjugacy.[133X
  
  [33X[0;0YThe  optional  argument  [3Xopt[103X  is  a  record,  which  may  be used to suggest
  restrictions  on  the subgroups computed. The following record components of
  [3Xopt[103X  are  recognized  and  have  the following effects. Note that all of the
  following restrictions to subgroups with particular properties are only used
  to  speed  up  the calculation, but the result might still contain subgroups
  (that had to be computed in any case) that do not satisfy the properties. If
  this  is  not  desired, the calculation must be followed by an explicit test
  for  the  desired properties (which is not done by default, as it would be a
  general  slowdown).  The  function  guarantees  that  representatives of all
  subgroups  that  satisfy  the  properties  are found, i.e. there can be only
  false positives.[133X
  
  [8X[10Xactions[110X[8X[108X
        [33X[0;6Ymust  be a list of automorphisms of [3XG[103X. If given, only groups which are
        invariant  under  all  these automorphisms are computed. The algorithm
        must  know  the  normalizer  in  [3XG[103X  of  the group generated by [10Xactions[110X
        (defined  formally  by  embedding  in the semidirect product of [3XG[103X with
        [3Xactions[103X).  This  can  be  given  in the component [10Xfuncnorm[110X and will be
        computed if this component is not given.[133X
  
  [8X[10Xnormal[110X[8X[108X
        [33X[0;6Yif  set  to  [9Xtrue[109X  only normal subgroups are guaranteed to be returned
        (though some of the returned subgroups might still be not normal).[133X
  
  [8X[10Xconsider[110X[8X[108X
        [33X[0;6Ya function to restrict the groups computed. This must be a function of
        five  parameters,  [22XC[122X, [22XA[122X, [22XN[122X, [22XB[122X, [22XM[122X, that are interpreted as follows: The
        arguments are subgroups of a factor [22XF[122X of [3XG[103X in the relation [22XF ≥ C > A >
        N > B > M[122X. [22XN[122X and [22XM[122X are normal subgroups. [22XC[122X is the full preimage of the
        normalizer  of  [22XA/N[122X  in  [22XF/N[122X.  When computing modulo [22XM[122X and looking for
        subgroups  [22XU[122X  such  that  [22XU ∩ N = B[122X and [22X⟨ U, N ⟩ = A[122X, this function is
        called. If it returns [9Xfalse[109X then all potential groups [22XU[122X (and therefore
        all  groups later arising from them) are disregarded. This can be used
        for example to compute only subgroups of certain sizes.[133X
  
        [33X[0;6Y([13XThis is just a restriction to speed up computations. The function may
        still   return   (invariant)   subgroups   which  don't  fulfill  this
        condition![113X)  This  parameter  is  used  to permit calculations of some
        subgroups if the set of all subgroups would be too large to handle.[133X
  
        [33X[0;6YThe  actual groups [22XC[122X, [22XA[122X, [22XN[122X and [22XB[122X which are passed to this function are
        not  necessarily  subgroups  of  [3XG[103X  but might be subgroups of a proper
        factor  group  [22XF = [3XG[103X/H[122X. Therefore the [10Xconsider[110X function may not relate
        the parameter groups to [3XG[103X.[133X
  
  [8X[10Xretnorm[110X[8X[108X
        [33X[0;6Yif  set to [9Xtrue[109X the function not only returns a list [10Xsubs[110X of subgroups
        but also a corresponding list [10Xnorms[110X of normalizers in the form [10X[ subs,
        norms ][110X.[133X
  
  [8X[10Xseries[110X[8X[108X
        [33X[0;6Yis  an  elementary  abelian  series  of  [3XG[103X  which will be used for the
        computation.[133X
  
  [8X[10Xgroups[110X[8X[108X
        [33X[0;6Yis  a  list of groups to seed the calculation. Only subgroups of these
        groups are constructed.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=Group((1,2,3),(1,2),(4,5,6),(4,5),(7,8,9),(7,8));[127X[104X
    [4X[28XGroup([ (1,2,3), (1,2), (4,5,6), (4,5), (7,8,9), (7,8) ])[128X[104X
    [4X[25Xgap>[125X [27Xhom:=GroupHomomorphismByImages(g,g,[127X[104X
    [4X[25X>[125X [27X[(1,2,3),(1,2),(4,5,6),(4,5),(7,8,9),(7,8)],[127X[104X
    [4X[25X>[125X [27X[(4,5,6),(4,5),(7,8,9),(7,8),(1,2,3),(1,2)]);[127X[104X
    [4X[28X[ (1,2,3), (1,2), (4,5,6), (4,5), (7,8,9), (7,8) ] ->[128X[104X
    [4X[28X[ (4,5,6), (4,5), (7,8,9), (7,8), (1,2,3), (1,2) ][128X[104X
    [4X[25Xgap>[125X [27Xl:=SubgroupsSolvableGroup(g,rec(actions:=[hom]));;[127X[104X
    [4X[25Xgap>[125X [27XSortedList(List(l,Size));[127X[104X
    [4X[28X[ 1, 2, 3, 4, 6, 8, 9, 18, 27, 54, 108, 216 ][128X[104X
    [4X[25Xgap>[125X [27XLength(ConjugacyClassesSubgroups(g)); # to compare[127X[104X
    [4X[28X162[128X[104X
  [4X[32X[104X
  
  [1X39.21-4 SizeConsiderFunction[101X
  
  [33X[1;0Y[29X[2XSizeConsiderFunction[102X( [3Xsize[103X ) [32X function[133X
  
  [33X[0;0YThis function returns a function [10Xconsider[110X of five arguments that can be used
  in  [2XSubgroupsSolvableGroup[102X  ([14X39.21-3[114X)  for  the  option  [10Xconsider[110X to compute
  subgroups whose sizes are divisible by [3Xsize[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xl:=SubgroupsSolvableGroup(g,rec(actions:=[hom],[127X[104X
    [4X[25X>[125X [27Xconsider:=SizeConsiderFunction(6)));;[127X[104X
    [4X[25Xgap>[125X [27XSortedList(List(l,Size));[127X[104X
    [4X[28X[ 1, 3, 6, 9, 18, 27, 54, 108, 216 ][128X[104X
  [4X[32X[104X
  
  [33X[0;0YThis  example shows that in general the [10Xconsider[110X function does not provide a
  perfect filter. It is guaranteed that all subgroups fulfilling the condition
  are  returned,  but  not  all  subgroups  returned  necessarily  fulfill the
  condition.[133X
  
  [1X39.21-5 ExactSizeConsiderFunction[101X
  
  [33X[1;0Y[29X[2XExactSizeConsiderFunction[102X( [3Xsize[103X ) [32X function[133X
  
  [33X[0;0YThis function returns a function [10Xconsider[110X of five arguments that can be used
  in  [2XSubgroupsSolvableGroup[102X  ([14X39.21-3[114X)  for  the  option  [10Xconsider[110X to compute
  subgroups whose sizes are exactly [3Xsize[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xl:=SubgroupsSolvableGroup(g,rec(actions:=[hom],[127X[104X
    [4X[25X>[125X [27Xconsider:=ExactSizeConsiderFunction(6)));;[127X[104X
    [4X[25Xgap>[125X [27XSortedList(List(l,Size));[127X[104X
    [4X[28X[ 1, 3, 6, 9, 27, 54, 108, 216 ][128X[104X
  [4X[32X[104X
  
  [33X[0;0YAgain,  the  [10Xconsider[110X  function  does  not  provide  a perfect filter. It is
  guaranteed that all subgroups fulfilling the condition are returned, but not
  all subgroups returned necessarily fulfill the condition.[133X
  
  [1X39.21-6 InfoPcSubgroup[101X
  
  [33X[1;0Y[29X[2XInfoPcSubgroup[102X [32X info class[133X
  
  [33X[0;0YInformation function for the subgroup lattice functions using pcgs.[133X
  
  
  [1X39.22 [33X[0;0YSpecial Generating Sets[133X[101X
  
  [1X39.22-1 GeneratorsSmallest[101X
  
  [33X[1;0Y[29X[2XGeneratorsSmallest[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns   a   [21Xsmallest[121X   generating  set  for  the  group  [3XG[103X.  This  is  the
  lexicographically  (using  [5XGAP[105Xs  order of group elements) smallest list [22Xl[122X of
  elements  of  [3XG[103X  such that [22XG = ⟨ l ⟩[122X and [22Xl_i not ∈ ⟨ l_1, ..., l_{i-1} ⟩[122X (in
  particular  [22Xl_1[122X is not the identity element of the group). The comparison of
  two groups via lexicographic comparison of their sorted element lists yields
  the  same  relation as lexicographic comparison of their smallest generating
  sets.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=SymmetricGroup(4);;[127X[104X
    [4X[25Xgap>[125X [27XGeneratorsSmallest(g);[127X[104X
    [4X[28X[ (3,4), (2,3), (1,2) ][128X[104X
  [4X[32X[104X
  
  [1X39.22-2 LargestElementGroup[101X
  
  [33X[1;0Y[29X[2XLargestElementGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  the  largest  element  of  [3XG[103X  with respect to the ordering [10X<[110X of the
  elements family.[133X
  
  [1X39.22-3 MinimalGeneratingSet[101X
  
  [33X[1;0Y[29X[2XMinimalGeneratingSet[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns a generating set of [3XG[103X of minimal possible length.[133X
  
  [33X[0;0YNote  that  only  methods  for  finite  groups, solvable groups, or finitely
  generated  nilpotent groups are available (the latter through the [5XPolycyclic[105X
  package)  and that calculations for nonsolvable finite groups of higher rank
  can be expensive.[133X
  
  [33X[0;0YIf  you  do not really need a minimal generating set, but are satisfied with
  getting   a   reasonably   small   set   of   generators,   you  better  use
  [2XSmallGeneratingSet[102X ([14X39.22-4[114X).[133X
  
  [33X[0;0YInformation about the minimal generating sets of the finite simple groups of
  order less than [22X10^6[122X can be found in [MY79]. See also the package [5XAtlasRep[105X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XMinimalGeneratingSet(g);[127X[104X
    [4X[28X[ (2,4,3), (1,4,2,3) ][128X[104X
  [4X[32X[104X
  
  [1X39.22-4 SmallGeneratingSet[101X
  
  [33X[1;0Y[29X[2XSmallGeneratingSet[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns   a  generating  set  of  [3XG[103X  which  has  few  elements.  As  neither
  irredundancy,  nor  minimal  length  is  proven  it  runs  much  faster than
  [2XMinimalGeneratingSet[102X  ([14X39.22-3[114X).  It can be used whenever a short generating
  set is desired which not necessarily needs to be optimal.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSmallGeneratingSet(g);[127X[104X
    [4X[28X[ (1,2,3,4), (1,2) ][128X[104X
  [4X[32X[104X
  
  [1X39.22-5 IndependentGeneratorsOfAbelianGroup[101X
  
  [33X[1;0Y[29X[2XIndependentGeneratorsOfAbelianGroup[102X( [3XA[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  a list of generators [22Xa_1, a_2, ...[122X of prime power order or infinite
  order of the abelian group [3XA[103X such that [3XA[103X is the direct product of the cyclic
  groups  generated  by the [22Xa_i[122X. The list of orders of the returned generators
  must  match  the  result of [2XAbelianInvariants[102X ([14X39.16-1[114X) (taking into account
  that zero and [2Xinfinity[102X ([14X18.2-1[114X) are identified).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=AbelianGroup(IsPermGroup,[15,14,22,78]);;[127X[104X
    [4X[25Xgap>[125X [27XList(IndependentGeneratorsOfAbelianGroup(g),Order);[127X[104X
    [4X[28X[ 2, 2, 2, 3, 3, 5, 7, 11, 13 ][128X[104X
    [4X[25Xgap>[125X [27XAbelianInvariants(g);[127X[104X
    [4X[28X[ 2, 2, 2, 3, 3, 5, 7, 11, 13 ][128X[104X
  [4X[32X[104X
  
  [1X39.22-6 IndependentGeneratorExponents[101X
  
  [33X[1;0Y[29X[2XIndependentGeneratorExponents[102X( [3XG[103X, [3Xg[103X ) [32X operation[133X
  
  [33X[0;0YFor  an  abelian group [3XG[103X, with [2XIndependentGeneratorsOfAbelianGroup[102X ([14X39.22-5[114X)
  value the list [22X[ a_1, ..., a_n ][122X, this operation returns the exponent vector
  [22X[ e_1, ..., e_n ][122X to represent [22X[3Xg[103X = ∏_i a_i^{e_i}[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg := AbelianGroup([16,9,625]);;[127X[104X
    [4X[25Xgap>[125X [27Xgens := IndependentGeneratorsOfAbelianGroup(g);;[127X[104X
    [4X[25Xgap>[125X [27XList(gens, Order);[127X[104X
    [4X[28X[ 9, 16, 625 ][128X[104X
    [4X[25Xgap>[125X [27XAbelianInvariants(g);[127X[104X
    [4X[28X[ 9, 16, 625 ][128X[104X
    [4X[25Xgap>[125X [27Xr:=gens[1]^4*gens[2]^12*gens[3]^128;;[127X[104X
    [4X[25Xgap>[125X [27XIndependentGeneratorExponents(g,r);[127X[104X
    [4X[28X[ 4, 12, 128 ][128X[104X
  [4X[32X[104X
  
  
  [1X39.23 [33X[0;0Y1-Cohomology[133X[101X
  
  [33X[0;0YLet  [22XG[122X be a finite group and [22XM[122X an elementary abelian normal [22Xp[122X-subgroup of [22XG[122X.
  Then the group of 1-cocycles [22XZ^1( G/M, M )[122X is defined as[133X
  
  
  [24X[33X[0;6YZ^1(G/M, M) = { γ: G/M → M ∣ ∀ g_1, g_2 ∈ G : γ(g_1 M ⋅ g_2 M ) = γ(g_1 M)^{g_2} ⋅ γ(g_2 M) }[133X[124X
  
  [33X[0;0Yand is a [22XGF(p)[122X-vector space.[133X
  
  [33X[0;0YThe group of 1-coboundaries [22XB^1( G/M, M )[122X is defined as[133X
  
  
  [24X[33X[0;6YB^1(G/M, M) = { γ : G/M → M ∣ ∃ m ∈ M ∀ g ∈ G : γ(gM) = (m^{-1})^g ⋅ m }[133X[124X
  
  [33X[0;0YIt also is a [22XGF(p)[122X-vector space.[133X
  
  [33X[0;0YLet  [22Xα[122X  be the isomorphism of [22XM[122X into a row vector space [22Xcal W[122X and [22X(g_1, ...,
  g_l)[122X  representatives  for  a  generating  set  of  [22XG/M[122X. Then there exists a
  monomorphism [22Xβ[122X of [22XZ^1( G/M, M )[122X in the [22Xl[122X-fold direct sum of [22Xcal W[122X, such that
  [22Xβ( γ ) = ( α( γ(g_1 M) ),..., α( γ(g_l M) ) )[122X for every [22Xγ ∈ Z^1( G/M, M )[122X.[133X
  
  
  [1X39.23-1 [33X[0;0YOneCocycles[133X[101X
  
  [33X[1;0Y[29X[2XOneCocycles[102X( [3XG[103X, [3XM[103X ) [32X function[133X
  [33X[1;0Y[29X[2XOneCocycles[102X( [3XG[103X, [3Xmpcgs[103X ) [32X function[133X
  [33X[1;0Y[29X[2XOneCocycles[102X( [3Xgens[103X, [3XM[103X ) [32X function[133X
  [33X[1;0Y[29X[2XOneCocycles[102X( [3Xgens[103X, [3Xmpcgs[103X ) [32X function[133X
  
  [33X[0;0YComputes  the  group  of 1-cocycles [22XZ^1([3XG[103X/[3XM[103X,[3XM[103X)[122X. The normal subgroup [3XM[103X may be
  given  by  a  (Modulo)Pcgs  [3Xmpcgs[103X.  In  this  case  the whole calculation is
  performed      modulo      the      normal      subgroup      defined     by
  [10XDenominatorOfModuloPcgs([3Xmpcgs[103X[10X)[110X (see [14X45.1[114X). Similarly the group [3XG[103X may instead
  be  specified  by  a  set  of  elements  [3Xgens[103X that are representatives for a
  generating  system  for the factor group [3XG[103X/[3XM[103X. If this is done the 1-cocycles
  are computed with respect to these generators (otherwise the routines try to
  select  suitable  generators  themselves).  The  current version of the code
  assumes that [3XG[103X is a permutation group or a pc group.[133X
  
  [1X39.23-2 OneCoboundaries[101X
  
  [33X[1;0Y[29X[2XOneCoboundaries[102X( [3XG[103X, [3XM[103X ) [32X function[133X
  
  [33X[0;0Ycomputes  the  group of 1-coboundaries. Syntax of input and output otherwise
  is  the same as with [2XOneCocycles[102X ([14X39.23-1[114X) except that entries that refer to
  cocycles are not computed.[133X
  
  [33X[0;0YThe  operations  [2XOneCocycles[102X  ([14X39.23-1[114X)  and [2XOneCoboundaries[102X return a record
  with (at least) the components:[133X
  
  [8X[10Xgenerators[110X[8X[108X
        [33X[0;6YIs a list of representatives for a generating set of [3XG[103X/[3XM[103X. Cocycles are
        represented with respect to these generators.[133X
  
  [8X[10XoneCocycles[110X[8X[108X
        [33X[0;6YA  space  of row vectors over GF([22Xp[122X), representing [22XZ^1[122X. The vectors are
        represented in dimension [22Xa ⋅ b[122X where [22Xa[122X is the length of [10Xgenerators[110X and
        [22Xp^b[122X the size of [3XM[103X.[133X
  
  [8X[10XoneCoboundaries[110X[8X[108X
        [33X[0;6YA space of row vectors that represents [22XB^1[122X.[133X
  
  [8X[10XcocycleToList[110X[8X[108X
        [33X[0;6Yis  a function to convert a cocycle (a row vector in [10XoneCocycles[110X) to a
        corresponding list of elements of [3XM[103X.[133X
  
  [8X[10XlistToCocycle[110X[8X[108X
        [33X[0;6Yis a function to convert a list of elements of [3XM[103X to a cocycle.[133X
  
  [8X[10XisSplitExtension[110X[8X[108X
        [33X[0;6Yindicates  whether  [3XG[103X splits over [3XM[103X. The following components are only
        bound  if  the  extension  splits. Note that if [3XM[103X is given by a modulo
        pcgs  all  subgroups  are  given  as  subgroups  of  [3XG[103X  by  generators
        corresponding  to  [10Xgenerators[110X and thus may not contain the denominator
        of  the  modulo  pcgs.  In  this  case  taking  the  closure with this
        denominator  will  give  the  full  preimage  of the complement in the
        factor group.[133X
  
  [8X[10Xcomplement[110X[8X[108X
        [33X[0;6YOne complement to [3XM[103X in [3XG[103X.[133X
  
  [8X[10XcocycleToComplement( cyc )[110X[8X[108X
        [33X[0;6Yis  a  function  that takes a cocycle from [10XoneCocycles[110X and returns the
        corresponding  complement  to  [3XM[103X  in  [3XG[103X  (with  respect  to  the fixed
        complement [10Xcomplement[110X).[133X
  
  [8X[10XcomplementToCocycle([3XU[103X[8X[10X)[110X[8X[108X
        [33X[0;6Yis  a  function  that takes a complement and returns the corresponding
        cocycle.[133X
  
  [33X[0;0YIf  the factor [3XG[103X/[3XM[103X is given by a (modulo) pcgs [3Xgens[103X then special methods are
  used that compute a presentation for the factor implicitly from the pcgs.[133X
  
  [33X[0;0YNote  that the groups of 1-cocycles and 1-coboundaries are not groups in the
  sense of [2XGroup[102X ([14X39.2-1[114X) for [5XGAP[105X but vector spaces.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=Group((1,2,3,4),(1,2));;[127X[104X
    [4X[25Xgap>[125X [27Xn:=Group((1,2)(3,4),(1,3)(2,4));;[127X[104X
    [4X[25Xgap>[125X [27Xoc:=OneCocycles(g,n);[127X[104X
    [4X[28Xrec( cocycleToComplement := function( c ) ... end,[128X[104X
    [4X[28X  cocycleToList := function( c ) ... end,[128X[104X
    [4X[28X  complement := Group([ (3,4), (2,4,3) ]),[128X[104X
    [4X[28X  complementGens := [ (3,4), (2,4,3) ],[128X[104X
    [4X[28X  complementToCocycle := function( K ) ... end,[128X[104X
    [4X[28X  factorGens := [ (3,4), (2,4,3) ], generators := [ (3,4), (2,4,3) ],[128X[104X
    [4X[28X  isSplitExtension := true, listToCocycle := function( L ) ... end,[128X[104X
    [4X[28X  oneCoboundaries := <vector space over GF(2), with 2 generators>,[128X[104X
    [4X[28X  oneCocycles := <vector space over GF(2), with 2 generators> )[128X[104X
    [4X[25Xgap>[125X [27Xoc.cocycleToList([ 0*Z(2), Z(2)^0, 0*Z(2), Z(2)^0 ]);[127X[104X
    [4X[28X[ (1,2)(3,4), (1,2)(3,4) ][128X[104X
    [4X[25Xgap>[125X [27Xoc.listToCocycle([(),(1,3)(2,4)]) = Z(2) * [ 0, 0, 1, 0];[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xoc.cocycleToComplement([ 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ]);[127X[104X
    [4X[28XGroup([ (3,4), (1,3,4) ])[128X[104X
    [4X[25Xgap>[125X [27Xoc.complementToCocycle(Group((1,2,4),(1,4))) = Z(2) * [ 0, 1, 1, 1 ];[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe factor group [22XH^1([3XG[103X/[3XM[103X, [3XM[103X) = Z^1([3XG[103X/[3XM[103X, [3XM[103X) / B^1([3XG[103X/[3XM[103X, [3XM[103X)[122X is called the first
  cohomology  group.  Currently there is no function which explicitly computes
  this  group. The easiest way to represent it is as a vector space complement
  to [22XB^1[122X in [22XZ^1[122X.[133X
  
  [33X[0;0YIf  the  only  purpose  of  the  calculation  of [22XH^1[122X is the determination of
  complements it might be desirable to stop calculations once it is known that
  the  extension  cannot  split.  This  can be achieved via the more technical
  function [2XOCOneCocycles[102X ([14X39.23-3[114X).[133X
  
  [1X39.23-3 OCOneCocycles[101X
  
  [33X[1;0Y[29X[2XOCOneCocycles[102X( [3Xocr[103X, [3XonlySplit[103X ) [32X function[133X
  
  [33X[0;0Yis  the more technical function to compute 1-cocycles. It takes a record [3Xocr[103X
  as  first  argument which must contain at least the components [10Xgroup[110X for the
  group  and  [10XmodulePcgs[110X  for  a (modulo) pcgs of the module. This record will
  also  be  returned  with components as described under [2XOneCocycles[102X ([14X39.23-1[114X)
  (with  the exception of [10XisSplitExtension[110X which is indicated by the existence
  of  a  [10Xcomplement[110X)  but  components  such  as  [10XoneCoboundaries[110X  will only be
  computed if not already present.[133X
  
  [33X[0;0YIf [3XonlySplit[103X is [9Xtrue[109X, [2XOCOneCocycles[102X returns [9Xfalse[109X as soon as possible if the
  extension does not split.[133X
  
  [1X39.23-4 ComplementClassesRepresentativesEA[101X
  
  [33X[1;0Y[29X[2XComplementClassesRepresentativesEA[102X( [3XG[103X, [3XN[103X ) [32X function[133X
  
  [33X[0;0Ycomputes  complement  classes to an elementary abelian normal subgroup [3XN[103X via
  1-Cohomology.      Normally,      a     user     program     should     call
  [2XComplementClassesRepresentatives[102X  ([14X39.11-6[114X)  instead, which also works for a
  solvable (not necessarily elementary abelian) [3XN[103X.[133X
  
  [1X39.23-5 InfoCoh[101X
  
  [33X[1;0Y[29X[2XInfoCoh[102X [32X info class[133X
  
  [33X[0;0YThe info class for the cohomology calculations is [2XInfoCoh[102X.[133X
  
  
  [1X39.24 [33X[0;0YSchur Covers and Multipliers[133X[101X
  
  [33X[0;0YAdditional  attributes  and  properties  of  a  group  can  be  derived from
  computing  its Schur cover. For example, if [22XG[122X is a finitely presented group,
  the  derived  subgroup  of a Schur cover of [22XG[122X is invariant and isomorphic to
  the [2XNonabelianExteriorSquare[102X ([14X39.24-5[114X) value of [22XG[122X, see [BJR87].[133X
  
  [1X39.24-1 EpimorphismSchurCover[101X
  
  [33X[1;0Y[29X[2XEpimorphismSchurCover[102X( [3XG[103X[, [3Xpl[103X] ) [32X attribute[133X
  
  [33X[0;0Yreturns  an  epimorphism  [22Xepi[122X  from a group [22XD[122X onto [3XG[103X. The group [22XD[122X is one (of
  possibly  several)  Schur  covers  of  [3XG[103X. The group [22XD[122X can be obtained as the
  [2XSource[102X  ([14X32.3-8[114X)  value of [3Xepi[103X. The kernel of [22Xepi[122X is the Schur multiplier of
  [3XG[103X.  If  [3Xpl[103X  is given as a list of primes, only the multiplier part for these
  primes  is realized. At the moment, [22XD[122X is represented as a finitely presented
  group.[133X
  
  [1X39.24-2 SchurCover[101X
  
  [33X[1;0Y[29X[2XSchurCover[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns one (of possibly several) Schur covers of the group [3XG[103X.[133X
  
  [33X[0;0YAt  the  moment  this cover is represented as a finitely presented group and
  [2XIsomorphismPermGroup[102X ([14X43.3-1[114X) would be needed to convert it to a permutation
  group.[133X
  
  [33X[0;0YIf  also the relation to [3XG[103X is needed, [2XEpimorphismSchurCover[102X ([14X39.24-1[114X) should
  be used.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=Group((1,2,3,4),(1,2));;[127X[104X
    [4X[25Xgap>[125X [27Xepi:=EpimorphismSchurCover(g);[127X[104X
    [4X[28X[ F1, F2, F3 ] -> [ (1,2), (2,3), (3,4) ][128X[104X
    [4X[25Xgap>[125X [27XSize(Source(epi));[127X[104X
    [4X[28X48[128X[104X
    [4X[25Xgap>[125X [27Xf:=FreeGroup("a","b");;[127X[104X
    [4X[25Xgap>[125X [27Xg:=f/ParseRelators(f,"a2,b3,(ab)5");;[127X[104X
    [4X[25Xgap>[125X [27Xepi:=EpimorphismSchurCover(g);[127X[104X
    [4X[28X[ a, b ] -> [ a, b ][128X[104X
    [4X[25Xgap>[125X [27XSize(Kernel(epi));[127X[104X
    [4X[28X2[128X[104X
  [4X[32X[104X
  
  [33X[0;0YIf   the  group  becomes  bigger,  Schur  Cover  calculations  might  become
  unfeasible.[133X
  
  [33X[0;0YThere  is  another  operation,  [2XAbelianInvariantsMultiplier[102X ([14X39.24-3[114X), which
  only  returns  the  structure of the Schur Multiplier, and which should work
  for larger groups as well.[133X
  
  [1X39.24-3 AbelianInvariantsMultiplier[101X
  
  [33X[1;0Y[29X[2XAbelianInvariantsMultiplier[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns a list of the abelian invariants of the Schur multiplier of [3XG[103X.[133X
  
  [33X[0;0YAt  the  moment,  this  operation will not give any information about how to
  extend the multiplier to a Schur Cover.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XAbelianInvariantsMultiplier(g);[127X[104X
    [4X[28X[ 2 ][128X[104X
    [4X[25Xgap>[125X [27XAbelianInvariantsMultiplier(AlternatingGroup(6));[127X[104X
    [4X[28X[ 2, 3 ][128X[104X
    [4X[25Xgap>[125X [27XAbelianInvariantsMultiplier(SL(2,3));[127X[104X
    [4X[28X[  ][128X[104X
    [4X[25Xgap>[125X [27XAbelianInvariantsMultiplier(SL(3,2));[127X[104X
    [4X[28X[ 2 ][128X[104X
    [4X[25Xgap>[125X [27XAbelianInvariantsMultiplier(PSU(4,2));[127X[104X
    [4X[28X[ 2 ][128X[104X
  [4X[32X[104X
  
  [33X[0;0Y(Note that the last command from the example will take some time.)[133X
  
  [33X[0;0YThe  [5XGAP[105X 4.4.12  manual  contained  examples  for  larger  groups e.g. [22XM_22[122X.
  However, some issues that may very rarely (and not easily reproducibly) lead
  to  wrong  results  were  discovered  in the code capable of handling larger
  groups,  and  in [5XGAP[105X 4.5 it was replaced by a more reliable basic method. To
  deal with larger groups, one can use the function [2XSchurMultiplier[102X ([14Xcohomolo:
  SchurMultiplier[114X)  from  the  [5Xcohomolo[105X  package. Also, additional methods for
  [2XAbelianInvariantsMultiplier[102X  are  installed  in  the  [5XPolycyclic[105X package for
  pcp-groups.[133X
  
  [1X39.24-4 Epicentre[101X
  
  [33X[1;0Y[29X[2XEpicentre[102X( [3XG[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XExteriorCentre[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThere  are  various ways of describing the epicentre of a group [3XG[103X. It is the
  smallest  normal  subgroup  [22XN[122X  of [3XG[103X such that [22X[3XG[103X/N[122X is a central quotient of a
  group. It is also equal to the Exterior Center of [3XG[103X, see [Ell98].[133X
  
  [1X39.24-5 NonabelianExteriorSquare[101X
  
  [33X[1;0Y[29X[2XNonabelianExteriorSquare[102X( [3XG[103X ) [32X operation[133X
  
  [33X[0;0YComputes  the  nonabelian  exterior square [22X[3XG[103X ∧ [3XG[103X[122X of the group [3XG[103X, which for a
  finitely  presented  group  is  the derived subgroup of any Schur cover of [3XG[103X
  (see [BJR87]).[133X
  
  [1X39.24-6 EpimorphismNonabelianExteriorSquare[101X
  
  [33X[1;0Y[29X[2XEpimorphismNonabelianExteriorSquare[102X( [3XG[103X ) [32X operation[133X
  
  [33X[0;0YComputes  the  mapping [22X[3XG[103X ∧ [3XG[103X → [3XG[103X[122X. The kernel of this mapping is equal to the
  Schur multiplier of [3XG[103X.[133X
  
  [1X39.24-7 IsCentralFactor[101X
  
  [33X[1;0Y[29X[2XIsCentralFactor[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0YThis function determines if there exists a group [22XH[122X such that [3XG[103X is isomorphic
  to  the  quotient [22XH/Z(H)[122X. A group with this property is called in literature
  [13Xcapable[113X.  A  group  being  capable is equivalent to the epicentre of [3XG[103X being
  trivial, see [BFS79].[133X
  
  
  [1X39.24-8 [33X[0;0YCovering groups of symmetric groups[133X[101X
  
  [33X[0;0YThe  covering  groups  of  symmetric  groups  were classified in [Sch11]; an
  inductive  procedure  to  construct faithful, irreducible representations of
  minimal  degree  over  all  fields  was  presented  in  [Maa10]. Methods for
  [2XEpimorphismSchurCover[102X  ([14X39.24-1[114X)  are  provided for natural symmetric groups
  which  use these representations. For alternating groups, the restriction of
  these  representations are provided, but they may not be irreducible. In the
  case  of degree [22X6[122X and [22X7[122X, they are not the full covering groups and so matrix
  representations are just stored explicitly for the six-fold covers.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XEpimorphismSchurCover(SymmetricGroup(15));[127X[104X
    [4X[28X[ < immutable compressed matrix 64x64 over GF(9) >,[128X[104X
    [4X[28X  < immutable compressed matrix 64x64 over GF(9) > ] ->[128X[104X
    [4X[28X[ (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15), (1,2) ][128X[104X
    [4X[25Xgap>[125X [27XEpimorphismSchurCover(AlternatingGroup(15));[127X[104X
    [4X[28X[ < immutable compressed matrix 64x64 over GF(9) >,[128X[104X
    [4X[28X  < immutable compressed matrix 64x64 over GF(9) > ] ->[128X[104X
    [4X[28X[ (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15), (13,14,15) ][128X[104X
    [4X[25Xgap>[125X [27XSchurCoverOfSymmetricGroup(12);[127X[104X
    [4X[28X<matrix group of size 958003200 with 2 generators>[128X[104X
    [4X[25Xgap>[125X [27XDoubleCoverOfAlternatingGroup(12);[127X[104X
    [4X[28X<matrix group of size 479001600 with 2 generators>[128X[104X
    [4X[25Xgap>[125X [27XBasicSpinRepresentationOfSymmetricGroup( 10, 3, -1 );[127X[104X
    [4X[28X[ < immutable compressed matrix 16x16 over GF(9) >,[128X[104X
    [4X[28X  < immutable compressed matrix 16x16 over GF(9) >,[128X[104X
    [4X[28X  < immutable compressed matrix 16x16 over GF(9) >,[128X[104X
    [4X[28X  < immutable compressed matrix 16x16 over GF(9) >,[128X[104X
    [4X[28X  < immutable compressed matrix 16x16 over GF(9) >,[128X[104X
    [4X[28X  < immutable compressed matrix 16x16 over GF(9) >,[128X[104X
    [4X[28X  < immutable compressed matrix 16x16 over GF(9) >,[128X[104X
    [4X[28X  < immutable compressed matrix 16x16 over GF(9) >,[128X[104X
    [4X[28X  < immutable compressed matrix 16x16 over GF(9) > ][128X[104X
  [4X[32X[104X
  
  [1X39.24-9 BasicSpinRepresentationOfSymmetricGroup[101X
  
  [33X[1;0Y[29X[2XBasicSpinRepresentationOfSymmetricGroup[102X( [3Xn[103X, [3Xp[103X, [3Xsign[103X ) [32X function[133X
  
  [33X[0;0YConstructs   the   image  of  the  Coxeter  generators  in  the  basic  spin
  (projective)  representation of the symmetric group of degree [3Xn[103X over a field
  of  characteristic  [22X[3Xp[103X  ≥  0[122X.  There  are  two  such representations and [3Xsign[103X
  controls  which  is  returned:  +1  gives  a  group where the preimage of an
  adjacent  transposition  [22X(i,i+1)[122X  has  order  4,  -1 gives a group where the
  preimage  of  an  adjacent  transposition [22X(i,i+1)[122X has order 2. If no [3Xsign[103X is
  specified,  +1  is  used  by  default.  If  no  [3Xp[103X is specified, 3 is used by
  default.  (Note  that  the  convention  of  which cover is labelled as +1 is
  inconsistent in the literature.)[133X
  
  [1X39.24-10 SchurCoverOfSymmetricGroup[101X
  
  [33X[1;0Y[29X[2XSchurCoverOfSymmetricGroup[102X( [3Xn[103X, [3Xp[103X, [3Xsign[103X ) [32X operation[133X
  
  [33X[0;0YConstructs  a  Schur  cover  of [10XSymmetricGroup([3Xn[103X[10X)[110X as a faithful, irreducible
  matrix  group  in  characteristic  [3Xp[103X  ([22X[3Xp[103X ≠ 2[122X). For [22X[3Xn[103X ≥ 4[122X, there are two such
  covers,  and  [3Xsign[103X  determines which is returned: +1 gives a group where the
  preimage  of an adjacent transposition [22X(i,i+1)[122X has order 4, -1 gives a group
  where  the  preimage of an adjacent transposition [22X(i,i+1)[122X has order 2. If no
  [3Xsign[103X is specified, +1 is used by default. If no [3Xp[103X is specified, 3 is used by
  default.  (Note  that  the  convention  of  which cover is labelled as +1 is
  inconsistent  in  the literature.) For [22X[3Xn[103X ≤ 3[122X, the symmetric group is its own
  Schur  cover  and  [3Xsign[103X  is  ignored.  For  [22X[3Xp[103X  =  2[122X,  there  is no faithful,
  irreducible representation of the Schur cover unless [22X[3Xn[103X = 1[122X or [22X[3Xn[103X = 3[122X, so [9Xfail[109X
  is  returned  if  [22X[3Xp[103X  =  2[122X.  For  [22X[3Xp[103X  =  3[122X,  [22X[3Xn[103X  =  3[122X,  the  representation  is
  indecomposable,  but  reducible.  The field of the matrix group is generally
  [10XGF([3Xp[103X[10X^2)[110X if [22X[3Xp[103X > 0[122X, and an abelian number field if [22X[3Xp[103X = 0[122X.[133X
  
  [1X39.24-11 DoubleCoverOfAlternatingGroup[101X
  
  [33X[1;0Y[29X[2XDoubleCoverOfAlternatingGroup[102X( [3Xn[103X, [3Xp[103X ) [32X operation[133X
  
  [33X[0;0YConstructs  a  double cover of [10XAlternatingGroup([3Xn[103X[10X)[110X as a faithful, completely
  reducible matrix group in characteristic [3Xp[103X ([22Xp ≠ 2[122X) for [22Xn ≥ 4[122X. For [22Xn ≤ 3[122X, the
  alternating  group  is its own Schur cover, and [9Xfail[109X is returned. For [22Xp = 2[122X,
  there  is  no  faithful,  completely  reducible representation of the double
  cover,  so  [9Xfail[109X  is  returned.  The  field of the matrix group is generally
  [10XGF(p^2)[110X  if  [22Xp>0[122X,  and  an abelian number field if [22Xp=0[122X. If [3Xp[103X is omitted, the
  default is 3.[133X
  
  
  [1X39.25 [33X[0;0Y2-Cohomology[133X[101X
  
  [1X39.25-1 TwoCohomologyGeneric[101X
  
  [33X[1;0Y[29X[2XTwoCohomologyGeneric[102X( [3XG[103X, [3XM[103X ) [32X operation[133X
  
  [33X[0;0YThis  function  computes the second cohomology group for an arbitrary finite
  group [3XG[103X. The generators of the module [3XM[103X must correspond to the generators of
  [3XG[103X. It returns a record with components [10Xcoboundaries[110X, [10Xcocycles[110X and [10Xcohomology[110X
  which  are  lists  of  vectors  that  form  a basis of the respective group.
  [10Xcohomology[110X  is  chosen  as  a vector space complement to [10Xcoboundaries[110X in the
  [10Xcocycles[110X.  These  vectors  are  representing  tails in [3XM[103X with respect to the
  [10Xrelators[110X of the presentation [10Xpresentation[110X of [3XG[103X. (Note that this presentation
  is  on  a  generating  set  chosen  by  the  routine, this generating system
  corresponds  to  the components [10Xgroup[110X and [10Xmodule[110X of the record returned. The
  extension   corresponding   to   a   cocyle   [10Xc[110X   can   be   constructed  as
  [10XFpGroupCocycle(r,c)[110X where [10Xr[110X is the cohomology record. This is currently done
  as a finitely presented group.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=Group((1,2,3,4,5),(1,2,3));;[127X[104X
    [4X[25Xgap>[125X [27Xmats:=[[[2,0,0,1],[1,2,1,0],[2,1,1,1],[2,1,1,0]],[127X[104X
    [4X[25X>[125X [27X[[0,2,0,0],[1,2,1,0],[0,0,1,0],[0,0,0,1]]]*Z(3)^0;;[127X[104X
    [4X[25Xgap>[125X [27Xmo:=GModuleByMats(mats,GF(3));;[127X[104X
    [4X[25Xgap>[125X [27Xcoh:=TwoCohomologyGeneric(g,mo);;[127X[104X
    [4X[25Xgap>[125X [27Xcoh.cocycles;[127X[104X
    [4X[28X< immutable compressed matrix 8x44 over GF(3) >[128X[104X
    [4X[25Xgap>[125X [27Xcoh.coboundaries;[127X[104X
    [4X[28X[ < immutable compressed vector length 44 over GF(3) >,[128X[104X
    [4X[28X  < immutable compressed vector length 44 over GF(3) >,[128X[104X
    [4X[28X  < immutable compressed vector length 44 over GF(3) >,[128X[104X
    [4X[28X  < immutable compressed vector length 44 over GF(3) >,[128X[104X
    [4X[28X  < immutable compressed vector length 44 over GF(3) >,[128X[104X
    [4X[28X  < immutable compressed vector length 44 over GF(3) >,[128X[104X
    [4X[28X  < immutable compressed vector length 44 over GF(3) > ][128X[104X
    [4X[25Xgap>[125X [27Xcoh.cohomology;[127X[104X
    [4X[28X[ < immutable compressed vector length 44 over GF(3) > ][128X[104X
    [4X[25Xgap>[125X [27Xg1:=FpGroupCocycle(coh,coh.zero,true);[127X[104X
    [4X[28X<fp group of size 4860 on the generators [ F1, F2, F3, m1, m2, m3, m4 ]>[128X[104X
    [4X[25Xgap>[125X [27Xg2:=FpGroupCocycle(coh,coh.cohomology[1],true);[127X[104X
    [4X[28X<fp group of size 4860 on the generators [ F1, F2, F3, m1, m2, m3, m4 ]>[128X[104X
    [4X[25Xgap>[125X [27Xg1:=Image(IsomorphismPermGroup(g1));[127X[104X
    [4X[28X<permutation group with 7 generators>[128X[104X
    [4X[25Xgap>[125X [27XLength(ComplementClassesRepresentatives(g1,SolvableRadical(g1)));[127X[104X
    [4X[28X3[128X[104X
    [4X[25Xgap>[125X [27Xg2:=Image(IsomorphismPermGroup(g2));[127X[104X
    [4X[28X<permutation group with 7 generators>[128X[104X
    [4X[25Xgap>[125X [27XLength(ComplementClassesRepresentatives(g2,SolvableRadical(g2)));[127X[104X
    [4X[28X0[128X[104X
  [4X[32X[104X
  
  [1X39.25-2 FpGroupCocycle[101X
  
  [33X[1;0Y[29X[2XFpGroupCocycle[102X( [3Xr[103X, [3Xc[103X[, [3Xdoperm[103X] ) [32X function[133X
  
  [33X[0;0YFor  a record [3Xr[103X as returned by [2XTwoCohomologyGeneric[102X ([14X39.25-1[114X) and a vector [3Xc[103X
  in  the  space  of two-cocycles, this operation returns a finitely presented
  group that is an extension corresponding to the cocycle [3Xc[103X. If the underlying
  module  has dimension [22Xd[122X, the last [22Xd[122X generators generate the normal subgroup.
  If  the  optional  parameter [3Xdoperm[103X is given as [3Xtrue[103X, a faithful permutation
  representation  is computed and stored in the attribute [2XIsomorphismPermGroup[102X
  ([14X43.3-1[114X)  of  the computed group. If the option [10Xnormalform[110X is given as [10Xtrue[110X,
  arithmetic  in  the resulting finitely presented group will bring words into
  normal form.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=Group((2,15,8,16)(3,17,14,21)(4,23,20,6)(5,9,22,11)(7,13,19,25),[127X[104X
    [4X[25X>[125X [27X(2,12,7,17)(3,18,13,23)(4,24,19,9)(5,10,25,15)(6,11,16,21));;[127X[104X
    [4X[25Xgap>[125X [27XStructureDescription(g);[127X[104X
    [4X[28X"GL(2,5)"[128X[104X
    [4X[25Xgap>[125X [27Xmats:=[[[1,1,0,2],[2,0,0,0],[0,2,2,0],[0,1,0,0]],[127X[104X
    [4X[25X>[125X [27X[[0,0,0,1],[1,1,2,0],[1,0,2,1],[1,0,1,0]]]*Z(3)^0;;[127X[104X
    [4X[25Xgap>[125X [27Xmo:=GModuleByMats(mats,GF(3));;[127X[104X
    [4X[25Xgap>[125X [27Xcoh:=TwoCohomologyGeneric(g,mo);;[127X[104X
    [4X[25Xgap>[125X [27Xcoh.cohomology;[127X[104X
    [4X[28X[ < immutable compressed vector length 116 over GF(3) > ][128X[104X
    [4X[25Xgap>[125X [27Xp:=FpGroupCocycle(coh,coh.zero,true);[127X[104X
    [4X[28X<fp group of size 38880 on the generators[128X[104X
    [4X[28X[ F1, F2, F3, F4, F5, F6, m1, m2, m3, m4 ]>[128X[104X
    [4X[25Xgap>[125X [27Xg1:=Image(IsomorphismPermGroup(p));[127X[104X
    [4X[28X<permutation group with 10 generators>[128X[104X
    [4X[25Xgap>[125X [27Xp:=FpGroupCocycle(coh,coh.cohomology[1],true);[127X[104X
    [4X[28X<fp group of size 38880 on the generators[128X[104X
    [4X[28X[ F1, F2, F3, F4, F5, F6, m1, m2, m3, m4 ]>[128X[104X
    [4X[25Xgap>[125X [27Xg2:=Image(IsomorphismPermGroup(p));[127X[104X
    [4X[28X<permutation group with 10 generators>[128X[104X
    [4X[25Xgap>[125X [27XCollected(List(MaximalSubgroupClassReps(g1),Size));[127X[104X
    [4X[28X[ [ 480, 3 ], [ 3888, 1 ], [ 6480, 1 ], [ 7776, 1 ], [ 19440, 1 ] ][128X[104X
    [4X[25Xgap>[125X [27XCollected(List(MaximalSubgroupClassReps(g2),Size));[127X[104X
    [4X[28X[ [ 3888, 1 ], [ 6480, 1 ], [ 7776, 1 ], [ 19440, 1 ] ][128X[104X
    [4X[25Xgap>[125X [27Xp:=FpGroupCocycle(coh,coh.cohomology[1],true:normalform);;[127X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xp.7*p.1; # i.e. m1*F1, but in normal form[127X[104X
    [4X[28XF1*m4[128X[104X
  [4X[32X[104X
  
  [33X[0;0YAlso see Section [14X46.8[114X for operations and methods specific for Pc groups.[133X
  
  
  [1X39.26 [33X[0;0YTests for the Availability of Methods[133X[101X
  
  [33X[0;0YThe  following filters and operations indicate capabilities of [5XGAP[105X. They can
  be  used  in  the  method  selection  or  algorithms  to check whether it is
  feasible  to  compute certain operations for a given group. In general, they
  return [9Xtrue[109X if good algorithms for the given arguments are available in [5XGAP[105X.
  An  answer  [9Xfalse[109X indicates that no method for this group may exist, or that
  the existing methods might run into problems.[133X
  
  [33X[0;0YTypical  examples  when this might happen is with finitely presented groups,
  for  which  many  of  the  methods  cannot  be  guaranteed to succeed in all
  situations.[133X
  
  [33X[0;0YThe  willingness  of [5XGAP[105X to perform certain operations may change, depending
  on  which  further  information  is known about the arguments. Therefore the
  filters  used  are  not  implemented  as  properties  but  as  [21Xother filters[121X
  (see [14X13.7[114X and [14X13.8[114X).[133X
  
  [1X39.26-1 CanEasilyTestMembership[101X
  
  [33X[1;0Y[29X[2XCanEasilyTestMembership[102X( [3XG[103X ) [32X filter[133X
  
  [33X[0;0YThis  filter  indicates  whether  [5XGAP[105X can test membership of elements in the
  group  [3XG[103X  (via the operation [2X\in[102X ([14X30.6-1[114X)) in reasonable time. It is used by
  the  method  selection  to  decide  whether  an  algorithm  that  relies  on
  membership tests may be used.[133X
  
  [1X39.26-2 CanEasilyComputeWithIndependentGensAbelianGroup[101X
  
  [33X[1;0Y[29X[2XCanEasilyComputeWithIndependentGensAbelianGroup[102X( [3XG[103X ) [32X filter[133X
  
  [33X[0;0YThis filter indicates whether [5XGAP[105X can in reasonable time compute independent
  abelian  generators  of the group [3XG[103X (via [2XIndependentGeneratorsOfAbelianGroup[102X
  ([14X39.22-5[114X))  and  then can decompose arbitrary group elements with respect to
  these  generators  using [2XIndependentGeneratorExponents[102X ([14X39.22-6[114X). It is used
  by  the method selection to decide whether an algorithm that relies on these
  two operations may be used.[133X
  
  [1X39.26-3 CanComputeSize[101X
  
  [33X[1;0Y[29X[2XCanComputeSize[102X( [3Xdom[103X ) [32X filter[133X
  
  [33X[0;0YThis  filter  indicates  that we know that the size of the domain [3Xdom[103X (which
  might  be  [2Xinfinity[102X  ([14X18.2-1[114X)) can be computed reasonably easily. It doesn't
  imply as quick a computation as [10XHasSize[110X would but its absence does not imply
  that the size cannot be computed.[133X
  
  [1X39.26-4 CanComputeSizeAnySubgroup[101X
  
  [33X[1;0Y[29X[2XCanComputeSizeAnySubgroup[102X( [3XG[103X ) [32X filter[133X
  
  [33X[0;0YThis  filter  indicates  whether  [5XGAP[105X  can  easily  compute  the size of any
  subgroup  of  the group [3XG[103X. (This is for example advantageous if one can test
  that  a  stabilizer  index equals the length of the orbit computed so far to
  stop early.)[133X
  
  [1X39.26-5 CanComputeIndex[101X
  
  [33X[1;0Y[29X[2XCanComputeIndex[102X( [3XG[103X, [3XH[103X ) [32X operation[133X
  
  [33X[0;0YThis  function  indicates  whether  the index [22X[[3XG[103X:[3XH[103X][122X (which might be [2Xinfinity[102X
  ([14X18.2-1[114X))  can  be  computed.  It assumes that [22X[3XH[103X ≤ [3XG[103X[122X (see [2XCanComputeIsSubset[102X
  ([14X39.26-6[114X)).[133X
  
  [1X39.26-6 CanComputeIsSubset[101X
  
  [33X[1;0Y[29X[2XCanComputeIsSubset[102X( [3XA[103X, [3XB[103X ) [32X operation[133X
  
  [33X[0;0YThis filter indicates that [5XGAP[105X can test (via [2XIsSubset[102X ([14X30.5-1[114X)) whether [3XB[103X is
  a subset of [3XA[103X.[133X
  
  [1X39.26-7 KnowsHowToDecompose[101X
  
  [33X[1;0Y[29X[2XKnowsHowToDecompose[102X( [3XG[103X[, [3Xgens[103X] ) [32X property[133X
  
  [33X[0;0YTests  whether the group [3XG[103X can decompose elements in the generators [3Xgens[103X. If
  [3Xgens[103X is not given it tests, whether it can decompose in the generators given
  in the [2XGeneratorsOfGroup[102X ([14X39.2-4[114X) value of [3XG[103X.[133X
  
  [33X[0;0YThis  property can be used for example to check whether a group homomorphism
  by images (see [2XGroupHomomorphismByImages[102X ([14X40.1-1[114X)) can be reasonably defined
  from this group.[133X
  
  
  [1X39.27 [33X[0;0YSpecific functions for Normalizer calculation[133X[101X
  
  [1X39.27-1 NormalizerViaRadical[101X
  
  [33X[1;0Y[29X[2XNormalizerViaRadical[102X( [3XG[103X, [3XS[103X ) [32X function[133X
  
  [33X[0;0YThis    function   implements   a   particular   approach,   following   the
  SolvableRadical  paradigm, for calculating the normalizer of a subgroup [3XS[103X in
  [3XG[103X.  It  is  at  the  moment provided only as a separate function, and not as
  method  for  the  operation [10XNormalizer[110X, as it can often be slower than other
  built-in   routines.   In  certain  hard  cases  (non-solvable  groups  with
  nontrivial  radical), however its performance is substantially superior. The
  function thus is provided as a non-automated tool for advanced users.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:=TransitiveGroup(30,2030);;[127X[104X
    [4X[25Xgap>[125X [27Xs:=SylowSubgroup(g,5);;[127X[104X
    [4X[25Xgap>[125X [27XSize(NormalizerViaRadical(g,s));[127X[104X
    [4X[28X28800[128X[104X
  [4X[32X[104X
  
  [33X[0;0YNote  that  this  example  only demonstrates usage, but that in this case in
  fact the ordinary [10XNormalizer[110X routine performs faster.[133X
  
