  
  [1X2 [33X[0;0YAffine crystallographic groups[133X[101X
  
  [33X[0;0YAn  affine  crystallographic  group  [3XG[103X  is  a  subgroup  of the group of all
  Euclidean  motions  of  [22Xd[122X-dimensional  space,  with  the  property  that its
  subgroup  [3XT[103X of all pure translations is a discrete normal subgroup of finite
  index.  If  the rank of the translation subgroup [3XT[103X is [22Xd[122X, [3XG[103X is called a space
  group. The quotient [3XG[103X/[3XT[103X is called the point group of [3XG[103X.[133X
  
  [33X[0;0YIn this package, affine crystallographic groups are represented as groups of
  augmented  matrices  of  dimension  [22Xd+1[122X.  Most  functions  assume a group of
  rational  matrices, but some may also work with cyclotomic matrix groups. In
  particular,  it  is  possible  to compute the translation basis of an affine
  crystallographic  group given in a cyclotomic representation, and to pass to
  a   rational   representation   by  conjugating  with  that  basis.  Further
  functionality  for  cyclotomic  crystallographic  groups  is  currently  not
  guaranteed.[133X
  
  [33X[0;0YAugmented matrices can take one of two forms. Matrices of the form[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X                     [ M 0 ][128X[104X
    [4X[28X                     [ t 1 ][128X[104X
  [4X[32X[104X
  
  [33X[0;0Yact  from  the  right  on  row vectors [22X(x,1)[122X. Such a matrix is said to be an
  affine  matrix  acting  on  the  right. Since in [5XGAP[105X all groups act from the
  right, this is the preferred representation of an affine transformation.[133X
  
  [33X[0;0YThe second representation of affine transformations is by augmented matrices
  of the form[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X                     [ M t ][128X[104X
    [4X[28X                     [ 0 1 ][128X[104X
  [4X[32X[104X
  
  [33X[0;0Ywhich  act  from the left on column vectors [22X(x,1)[122X. Such matrices are said to
  be  affine  matrices  acting on the left. This is the representation usually
  adopted by crystallographers.[133X
  
  [33X[0;0Y[5XCryst[105X supports affine crystallographic groups in both representations. Every
  affine   crystallographic   group   is  constructed  in  one  of  these  two
  representations.[133X
  
  [33X[0;0YAffine  crystallographic groups in different representations should never be
  mixed,  however.  It is recommended to adopt one of the two representations,
  and  then to stick to that decision. In order to facilitate this, there is a
  global  variable  [10XCrystGroupDefaultAction[110X, whose value is either [10XRightAction[110X
  or  [10XLeftAction[110X.  The  initial  value is [10XRightAction[110X, but this can be changed
  with [2XSetCrystGroupDefaultAction[102X ([14X2.1-1[114X).[133X
  
  
  [1X2.1 [33X[0;0YThe default action[133X[101X
  
  [1X2.1-1 SetCrystGroupDefaultAction[101X
  
  [33X[1;0Y[29X[2XSetCrystGroupDefaultAction[102X( [3Xaction[103X ) [32X function[133X
  
  [33X[0;0Ysets  the  default  action,  where  [3Xaction[103X  must  be  either  [10XRightAction[110X or
  [10XLeftAction[110X.   Constructor   functions  without  an  explicit  representation
  qualifier  then  will  construct  an  affine  crystallographic  group in the
  representation specified by [10XCrystGroupDefaultAction[110X.[133X
  
  
  [1X2.2 [33X[0;0YConstruction[133X[101X
  
  [1X2.2-1 AffineCrystGroupOnRight[101X
  
  [33X[1;0Y[29X[2XAffineCrystGroupOnRight[102X( [3Xgens[103X ) [32X function[133X
  [33X[1;0Y[29X[2XAffineCrystGroupOnRight[102X( [3Xgenlist[103X ) [32X function[133X
  [33X[1;0Y[29X[2XAffineCrystGroupOnRight[102X( [3Xgenlist[103X, [3Xidentity[103X ) [32X function[133X
  
  [33X[0;0Yreturns  the matrix group generated by [3Xgens[103X or [3Xgenlist[103X, which must be affine
  matrices acting on the right, as affine crystallographic group acting on the
  right.  An  already  existing group [3XS[103X of affine matrices acting on the right
  can be converted with [2XAsAffineCrystGroupOnRight[102X ([14X2.2-2[114X).[133X
  
  [1X2.2-2 AsAffineCrystGroupOnRight[101X
  
  [33X[1;0Y[29X[2XAsAffineCrystGroupOnRight[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Yconverts  a  group  [3XS[103X  of affine matrices acting on the right into an affine
  crystallographic group acting on the right.[133X
  
  [1X2.2-3 IsAffineCrystGroupOnRight[101X
  
  [33X[1;0Y[29X[2XIsAffineCrystGroupOnRight[102X( [3XS[103X ) [32X property[133X
  
  [33X[0;0Yis  [9Xtrue[109X  exactly for those groups which have been constructed in one of the
  two ways above.[133X
  
  [1X2.2-4 AffineCrystGroupOnLeft[101X
  
  [33X[1;0Y[29X[2XAffineCrystGroupOnLeft[102X( [3Xgens[103X ) [32X function[133X
  [33X[1;0Y[29X[2XAffineCrystGroupOnLeft[102X( [3Xgenlist[103X ) [32X function[133X
  [33X[1;0Y[29X[2XAffineCrystGroupOnLeft[102X( [3Xgenlist[103X, [3Xidentity[103X ) [32X function[133X
  
  [33X[0;0Yreturns  the matrix group generated by [3Xgens[103X or [3Xgenlist[103X, which must be affine
  matrices  acting on the left, as affine crystallographic group acting on the
  left.  An already existing group [3XS[103X of affine matrices acting on the left can
  be converted with [2XAsAffineCrystGroupOnLeft[102X ([14X2.2-5[114X).[133X
  
  [1X2.2-5 AsAffineCrystGroupOnLeft[101X
  
  [33X[1;0Y[29X[2XAsAffineCrystGroupOnLeft[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Yconverts  a  group  [3XS[103X  of  affine matrices acting on the left into an affine
  crystallographic group acting on the left.[133X
  
  [1X2.2-6 IsAffineCrystGroupOnLeft[101X
  
  [33X[1;0Y[29X[2XIsAffineCrystGroupOnLeft[102X( [3XS[103X ) [32X property[133X
  
  [33X[0;0Yis  [9Xtrue[109X  exactly for those groups which have been constructed in one of the
  two ways above.[133X
  
  [33X[0;0YIt  is  recommended  to adopt one representation for affine crystallographic
  groups,  and  then to stick to it. To facilitate this, routines are provided
  which assume a default representation.[133X
  
  [1X2.2-7 AffineCrystGroup[101X
  
  [33X[1;0Y[29X[2XAffineCrystGroup[102X( [3Xgens[103X ) [32X function[133X
  [33X[1;0Y[29X[2XAffineCrystGroup[102X( [3Xgenlist[103X ) [32X function[133X
  [33X[1;0Y[29X[2XAffineCrystGroup[102X( [3Xgenlist[103X, [3Xidentity[103X ) [32X function[133X
  
  [33X[0;0Ycalls   [10XAffineCrystGroupOnRight[110X  or  [10XAffineCrystGroupOnLeft[110X  with  the  same
  arguments, depending on the value of [10XCrystGroupDefaultAction[110X.[133X
  
  [1X2.2-8 AsAffineCrystGroup[101X
  
  [33X[1;0Y[29X[2XAsAffineCrystGroup[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Ycalls  [10XAsAffineCrystGroupOnRight[110X  or  [10XAsAffineCrystGroupOnLeft[110X with the same
  argument, depending on the value of [10XCrystGroupDefaultAction[110X.[133X
  
  [1X2.2-9 IsAffineCrystGroup[101X
  
  [33X[1;0Y[29X[2XIsAffineCrystGroup[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Ycalls  [10XIsAffineCrystGroupOnRight[110X  or  [10XIsAffineCrystGroupOnLeft[110X with the same
  argument, depending on the value of [10XCrystGroupDefaultAction[110X.[133X
  
  [1X2.2-10 TransposedMatrixGroup[101X
  
  [33X[1;0Y[29X[2XTransposedMatrixGroup[102X( [3XS[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns the transpose of the affine crystallographic group [3XS[103X. If [3XS[103X is acting
  on the right, its transpose is acting on the left, and vice versa.[133X
  
  
  [1X2.3 [33X[0;0YPoint group[133X[101X
  
  [33X[0;0YThe point group [3XP[103X of an affine crystallographic group [3XS[103X is the quotient [3XS[103X/[3XT[103X,
  where  [3XT[103X is the normal subgroup of all pure translations. [3XP[103X is isomorphic to
  the  group generated by the linear parts of all affine matrices contained in
  [3XS[103X. In [5XCryst[105X this latter group is identified with the point group of [3XS[103X.[133X
  
  [1X2.3-1 PointGroup[101X
  
  [33X[1;0Y[29X[2XPointGroup[102X( [3XS[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns the point group of [3XS[103X.[133X
  
  [1X2.3-2 IsPointGroup[101X
  
  [33X[1;0Y[29X[2XIsPointGroup[102X( [3XP[103X ) [32X property[133X
  
  [33X[0;0Yreturns  [9Xtrue[109X if and only if [3XP[103X has been constructed as the point group of an
  affine crystallographic group [3XS[103X.[133X
  
  [1X2.3-3 AffineCrystGroupOfPointGroup[101X
  
  [33X[1;0Y[29X[2XAffineCrystGroupOfPointGroup[102X( [3XP[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  the  affine  crystallographic  group  [3XS[103X,  from  which  [3XP[103X  has  been
  constructed.[133X
  
  [1X2.3-4 PointHomomorphism[101X
  
  [33X[1;0Y[29X[2XPointHomomorphism[102X( [3XS[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  a  homomorphism from the affine crystallographic group to its point
  group.[133X
  
  [1X2.3-5 IsPointHomomorphism[101X
  
  [33X[1;0Y[29X[2XIsPointHomomorphism[102X( [3XH[103X ) [32X property[133X
  
  [33X[0;0Yreturns  [9Xtrue[109X if and only if [3XH[103X has been constructed as the [10XPointHomomorphism[110X
  of an affine crystallographic group.[133X
  
  
  [1X2.4 [33X[0;0YTranslation lattice[133X[101X
  
  [33X[0;0YThe  vectors  by  which  the pure translations in an affine crystallographic
  group  translate  form a discrete lattice, [3XL[103X, called the translation lattice
  of [3XS[103X.[133X
  
  [1X2.4-1 TranslationBasis[101X
  
  [33X[1;0Y[29X[2XTranslationBasis[102X( [3XS[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  a  basis  of  the  translation  lattice of [3XS[103X. The basis returned is
  unique for the translation lattice.[133X
  
  [1X2.4-2 InternalBasis[101X
  
  [33X[1;0Y[29X[2XInternalBasis[102X( [3XS[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  a  basis  used internally for many computations. It consists of the
  translation  basis  [3XB[103X  of [3XS[103X, extended by further standard basis vectors if [3XB[103X
  has not full rank.[133X
  
  [33X[0;0YIf  a  generating  set  [3XB[103X  of  the  translation  lattice  of [3XS[103X is known from
  somewhere, this knowledge can be added to [3XS[103X with[133X
  
  [1X2.4-3 AddTranslationBasis[101X
  
  [33X[1;0Y[29X[2XAddTranslationBasis[102X( [3XS[103X, [3XB[103X ) [32X function[133X
  
  [33X[0;0YThis  function  must  do further work, so that [10XSetTranslationBasis[110X cannot be
  used  for  this  purpose.  If  doubts  arise  about  the  correctness of the
  translation basis that has been added by hand, one can check the correctness
  of the stored value with[133X
  
  [1X2.4-4 CheckTranslationBasis[101X
  
  [33X[1;0Y[29X[2XCheckTranslationBasis[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0YAn  affine  crystallographic group [3XS[103X acting on [22Xd[122X-dimensional Euclidean space
  is called a [13Xspace group[113X if its translation lattice has rank [22Xd[122X.[133X
  
  [1X2.4-5 IsSpaceGroup[101X
  
  [33X[1;0Y[29X[2XIsSpaceGroup[102X( [3XS[103X ) [32X property[133X
  
  [33X[0;0Ytests if the affine crystallographic group [3XS[103X is a space group.[133X
  
  [33X[0;0YSince  many  computations  are done internally in the [10XInternalBasis[110X of [3XS[103X, we
  say that [3XS[103X is in standard form if the [10XInternalBasis[110X is the standard basis of
  Euclidean  row  space  or  column  space,  respectively. This means that the
  translation  lattice  is  generated  by  the first [22Xk[122X standard basis vectors,
  where [22Xk[122X is the rank of the translation lattice.[133X
  
  [1X2.4-6 IsStandardAffineCrystGroup[101X
  
  [33X[1;0Y[29X[2XIsStandardAffineCrystGroup[102X( [3XS[103X ) [32X property[133X
  
  [33X[0;0Ychecks if [3XS[103X is in standard form.[133X
  
  [1X2.4-7 IsStandardSpaceGroup[101X
  
  [33X[1;0Y[29X[2XIsStandardSpaceGroup[102X( [3XS[103X ) [32X filter[133X
  
  [33X[0;0Ychecks if [3XS[103X is a space group in standard form.[133X
  
  [1X2.4-8 StandardAffineCrystGroup[101X
  
  [33X[1;0Y[29X[2XStandardAffineCrystGroup[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Yreturns a conjugate of [3XS[103X which is in standard form.[133X
  
  [33X[0;0YIf  a  space  group  [3XS[103X  is a semi-direct product of its point group with its
  translation subgroup, [3XS[103X is said to be symmorphic.[133X
  
  [1X2.4-9 IsSymmorphicSpaceGroup[101X
  
  [33X[1;0Y[29X[2XIsSymmorphicSpaceGroup[102X( [3XS[103X ) [32X property[133X
  
  [33X[0;0Ychecks if the space group [3XS[103X is symmorphic.[133X
  
  
  [1X2.5 [33X[0;0YSpecial methods[133X[101X
  
  [33X[0;0YIn  the representation by augmented matrices, affine crystallographic groups
  are  infinite  matrix  groups.  Their  infinity is relatively trivial in the
  sense   that   they  have  an  abelian  normal  subgroup  of  finite  index.
  Nevertheless,  for many operations special methods have to be installed that
  avoid  attempting  algorithms  that  never  finish.  These  methods all make
  essential  use of the exactness of the sequence of homomorphisms [10X0 -> [3XT[103X[10X -> [3XS[103X[10X
  -> [3XP[103X[10X -> 1[110X, where [3XT[103X is the translation subgroup of [3XS[103X, and [3XP[103X its point group.[133X
  
  [33X[0;0YAll   operations   for   general   groups   that   make   sense  for  affine
  crystallographic  groups should work also in that case. In particular, there
  should be no restrictions for finite [10XAffineCrystGroups[110X. For infinite groups,
  some   restrictions  apply,  however.  For  instance,  algorithms  from  the
  orbit-stabilizer  family  can  work only if the orbits generated are finite.
  Note,  however,  that [10XNormalizer[110X, [10XCentralizer[110X and [10XRepresentativeAction[110X in an
  [10XAffineCrystGroup[110X work even if the corresponding orbit is infinite.[133X
  
  [33X[0;0YSome  methods  installed  for  affine crystallographic groups have a special
  behavior.[133X
  
  [1X2.5-1 \^[101X
  
  [33X[1;0Y[29X[2X\^[102X( [3XS[103X, [3Xconj[103X ) [32X method[133X
  
  [33X[0;0YIf  [3XS[103X  is  an  [10XAffineCrystGroupOnRight[110X,  the  group  [22Xconj^-1  *  S * conj[122X is
  returned.  [3Xconj[103X  must  be  an  affine matrix acting on the right. If [3XS[103X is an
  [10XAffineCrystGroupOnLeft[110X,  the group [22Xconj * S * conj^-1[122X is returned. [3Xconj[103X must
  be an affine matrix acting on the left.[133X
  
  [1X2.5-2 IsomorphismFpGroup[101X
  
  [33X[1;0Y[29X[2XIsomorphismFpGroup[102X( [3XP[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  an isomorphism from the [10XPointGroup[110X [3XP[103X to an isomorphic [10XFpGroup[110X [3XF[103X. If
  [3XP[103X is solvable, [3XF[103X is given in a power-commutator presentation.[133X
  
  [1X2.5-3 IsomorphismFpGroup[101X
  
  [33X[1;0Y[29X[2XIsomorphismFpGroup[102X( [3XS[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  an isomorphism from the [10XAffineCrystGroup[110X [3XS[103X to an isomorphic [10XFpGroup[110X
  [3XF[103X.  If  [3XS[103X  is  solvable,  [3XF[103X is given in a power-commutator presentation. The
  presentation  of  [3XF[103X is an extension of the presentation of the point group [3XP[103X
  of [3XS[103X used in [10XIsomorphismFpGroup( [3XP[103X[10X )[110X.[133X
  
  [33X[0;0YIf  the  package  polycyclic is installed, [5XCryst[105X automatically loads it, and
  then provides special methods for [10XIsomorphismPcpGroup[110X.[133X
  
  [1X2.5-4 IsomorphismPcpGroup[101X
  
  [33X[1;0Y[29X[2XIsomorphismPcpGroup[102X( [3XP[103X ) [32X attribute[133X
  
  [33X[0;0Ywith [3XP[103X a solvable [10XPointGroup[110X, returns an isomorphism from [3XP[103X to an isomorphic
  [10XPcpGroup[110X  [3Xpcp[103X. For details about [10XPcpGroups[110X, we refer to the documentation of
  the package polycyclic.[133X
  
  [1X2.5-5 IsomorphismPcpGroup[101X
  
  [33X[1;0Y[29X[2XIsomorphismPcpGroup[102X( [3XS[103X ) [32X attribute[133X
  
  [33X[0;0Ywith  [3XS[103X  a solvable [10XAffineCrystGroup[110X (i.e., one with a solvable [10XPointGroup[110X),
  returns   an   isomorphism  from  [3XS[103X  to  an  isomorphic  [10XPcpGroup[110X  [3Xpcp[103X.  The
  presentation of [3Xpcp[103X is an extension of the presentation of the point group [3XP[103X
  of [3XS[103X used in [10XIsomorphismPcpGroup( [3XP[103X[10X )[110X.[133X
  
  
  [1X2.6 [33X[0;0YMaximal subgroups[133X[101X
  
  [33X[0;0YSince  an [10XAffineCrystGroup[110X has infinitely many maximal subgroups in general,
  in  the  computation of maximal subgroups it must be further specified which
  maximal  subgroups  are  desired.  Recall  that  a  maximal  subgroup  of an
  [10XAffineCrystGroup[110X  is  either  latticeequal  or  classequal.  A  latticeequal
  subgroup  has the same translation lattice as the parent, while a classequal
  subgroup  has  the  same point group as the parent. In the classequal case a
  maximal  subgroup  always has prime-power index, whereas in the latticeequal
  case this is so only in dimensions up to 3.[133X
  
  [1X2.6-1 MaximalSubgroupClassReps[101X
  
  [33X[1;0Y[29X[2XMaximalSubgroupClassReps[102X( [3XS[103X, [3Xflags[103X ) [32X operation[133X
  
  [33X[0;0Yreturns  a  list  of conjugacy class representatives of maximal subgroups of
  the [10XAffineCrystGroup[110X [3XS[103X.[133X
  
  [1X2.6-2 ConjugacyClassesMaximalSubgroups[101X
  
  [33X[1;0Y[29X[2XConjugacyClassesMaximalSubgroups[102X( [3XS[103X, [3Xflags[103X ) [32X operation[133X
  
  [33X[0;0Yreturns   a   list   of  conjugacy  classes  of  maximal  subgroups  of  the
  [10XAffineCrystGroup[110X [3XS[103X.[133X
  
  [33X[0;0YIn these two functions, the argument [3Xflags[103X specifies which maximal subgroups
  are computed. [3Xflags[103X is a record which may have the following components:[133X
  
  [8X[10Xflags.primes := [p1 .. pr][110X[8X[108X
        [33X[0;6Yonly  maximal  subgroups  of  p-power index for the given primes p are
        computed[133X
  
  [8X[10Xflags.latticeequal := true[110X[8X[108X
        [33X[0;6Yonly latticeequal maximal subgroups are computed[133X
  
  [8X[10Xflags.classequal := true[110X[8X[108X
        [33X[0;6Yonly classequal maximal subgroups are computed[133X
  
  [33X[0;0Y[10Xflags.latticeequal[110X  and  [10Xflags.classequal[110X  must  not both be bound and [9Xtrue[109X.
  [10Xflags.primes[110X may be omitted only if [10Xflags.latticeequal[110X is bound and [9Xtrue[109X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS := SpaceGroupIT(3,222);[127X[104X
    [4X[28XSpaceGroupOnRightIT(3,222,'2')[128X[104X
    [4X[25Xgap>[125X [27XL := MaximalSubgroupClassReps( S, rec( primes := [3,5] ) );;[127X[104X
    [4X[25Xgap>[125X [27XList( L, IndexInParent );[127X[104X
    [4X[28X[ 3, 27, 125 ][128X[104X
    [4X[25Xgap>[125X [27XL := MaximalSubgroupClassReps( S,             [127X[104X
    [4X[25X>[125X [27X                 rec( classequal := true, primes := [3,5] ) );;[127X[104X
    [4X[25Xgap>[125X [27XList( L, IndexInParent );                                                 [127X[104X
    [4X[28X[ 27, 125 ][128X[104X
    [4X[25Xgap>[125X [27XL := MaximalSubgroupClassReps( S,[127X[104X
    [4X[25X>[125X [27X                 rec( latticeequal := true, primes := [3,5] ) );;[127X[104X
    [4X[25Xgap>[125X [27XList( L, IndexInParent );                                       [127X[104X
    [4X[28X[ 3 ][128X[104X
    [4X[25Xgap>[125X [27XL := MaximalSubgroupClassReps( S, rec( latticeequal := true ) );;[127X[104X
    [4X[25Xgap>[125X [27XLength(L);[127X[104X
    [4X[28X5[128X[104X
    [4X[25Xgap>[125X [27XList( L, IndexInParent );                                       [127X[104X
    [4X[28X[ 2, 2, 2, 3, 4 ][128X[104X
  [4X[32X[104X
  
  
  [1X2.7 [33X[0;0YSpace groups with a given point group[133X[101X
  
  [1X2.7-1 SpaceGroupsByPointGroupOnRight[101X
  
  [33X[1;0Y[29X[2XSpaceGroupsByPointGroupOnRight[102X( [3XP[103X[, [3Xnorm[103X][, [3Xorbsflag[103X] ) [32X operation[133X
  
  [33X[0;0Ywhere  [3XP[103X  is  any  finite  subgroup  of [22XGL(d,ℤ)[122X, returns a list of all space
  groups (acting on the right) with point group [3XP[103X, up to conjugacy in the full
  translation group of Euclidean space. All these space groups are returned as
  [10XAffineCrystGroupOnRight[110X  in standard representation. If a second argument is
  present, which must be a list of elements of the normalizer of [3XP[103X in [22XGL(d,ℤ)[122X,
  only  space  groups  inequivalent  under conjugation with these elements are
  returned.  If  these normalizer elements, together with [3XP[103X, generate the full
  normalizer  of  [3XP[103X  in [22XGL(d,ℤ)[122X, then exactly one representative of each space
  group  type is obtained. If the third argument [3Xorbsflag[103X, which must be [9Xfalse[109X
  or  [9Xtrue[109X,  is also present and [9Xtrue[109X, all space groups up to conjugacy in the
  full  translation  group  are returned, but these space groups are collected
  into orbits under the conjugation action with elements from [3Xnorm[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XP := Group([ [ [ -1, 0 ], [ 0, -1 ] ], [ [ -1, 0 ], [ 0, 1 ] ] ]);[127X[104X
    [4X[28XGroup([ [ [ -1, 0 ], [ 0, -1 ] ], [ [ -1, 0 ], [ 0, 1 ] ] ])[128X[104X
    [4X[25Xgap>[125X [27XSpaceGroupsByPointGroupOnRight( P );[127X[104X
    [4X[28X[ <matrix group with 4 generators>, <matrix group with 4 generators>, [128X[104X
    [4X[28X  <matrix group with 4 generators>, <matrix group with 4 generators> ][128X[104X
  [4X[32X[104X
  
  [33X[0;0YObtaining [3Xnorm[103X with [10XNormalizerInGLnZ[110X requires the [5XGAP[105X package [5XCaratInterface[105X
  to be installed (and compiled).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xnorm := GeneratorsOfGroup( NormalizerInGLnZ( P ) );[127X[104X
    [4X[28X[ [ [ -1, 0 ], [ 0, -1 ] ], [ [ -1, 0 ], [ 0, 1 ] ], [ [ -1, 0 ], [ 0, -1 ] ],[128X[104X
    [4X[28X  [ [ 1, 0 ], [ 0, -1 ] ], [ [ 0, 1 ], [ 1, 0 ] ] ][128X[104X
    [4X[25Xgap>[125X [27XSpaceGroupsByPointGroupOnRight( P, norm );[127X[104X
    [4X[28X[ <matrix group with 4 generators>, <matrix group with 4 generators>, [128X[104X
    [4X[28X  <matrix group with 4 generators> ][128X[104X
    [4X[25Xgap>[125X [27XSpaceGroupsByPointGroupOnRight( P, norm, true );[127X[104X
    [4X[28X[ [ <matrix group with 4 generators> ], [128X[104X
    [4X[28X  [ <matrix group with 4 generators>, <matrix group with 4 generators> ], [128X[104X
    [4X[28X  [ <matrix group with 4 generators> ] ][128X[104X
  [4X[32X[104X
  
  [1X2.7-2 SpaceGroupTypesByPointGroupOnRight[101X
  
  [33X[1;0Y[29X[2XSpaceGroupTypesByPointGroupOnRight[102X( [3XP[103X[, [3Xorbsflag[103X] ) [32X operation[133X
  
  [33X[0;0Yreturns  a list of space group type representatives (acting on the right) of
  the  point group [3XP[103X. As in the case of [10XSpaceGroupsByPointGroupOnRight[110X, if the
  boolean  argument  [3Xorbsflag[103X  is  present and [9Xtrue[109X, not only space group type
  representatives,   but  all  space  groups  up  to  conjugacy  in  the  full
  translation group are returned. These are then collected into lists of space
  groups  of  the same space group type. As it needs the full normalizer of [3XP[103X,
  this  function  requires the [5XGAP[105X package [5XCaratInterface[105X to be installed (and
  compiled).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSpaceGroupTypesByPointGroupOnRight( P );[127X[104X
    [4X[28X[ <matrix group with 4 generators>, <matrix group with 4 generators>, [128X[104X
    [4X[28X  <matrix group with 4 generators> ][128X[104X
    [4X[25Xgap>[125X [27XSpaceGroupTypesByPointGroupOnRight( P, true );[127X[104X
    [4X[28X[ [ <matrix group with 4 generators> ], [128X[104X
    [4X[28X  [ <matrix group with 4 generators>, <matrix group with 4 generators> ], [128X[104X
    [4X[28X  [ <matrix group with 4 generators> ] ][128X[104X
  [4X[32X[104X
  
  [1X2.7-3 SpaceGroupsByPointGroupOnLeft[101X
  
  [33X[1;0Y[29X[2XSpaceGroupsByPointGroupOnLeft[102X( [3XP[103X[, [3Xnorm[103X][, [3Xorbsflag[103X] ) [32X operation[133X
  
  [33X[0;0Yworks  the same way as [10XSpaceGroupsByPointGroupOnRight[110X, except that the space
  groups acting from the left are returned.[133X
  
  [1X2.7-4 SpaceGroupTypesByPointGroupOnLeft[101X
  
  [33X[1;0Y[29X[2XSpaceGroupTypesByPointGroupOnLeft[102X( [3XP[103X[, [3Xorbsflag[103X] ) [32X operation[133X
  
  [33X[0;0Yworks  the  same  way as [10XSpaceGroupTypesByPointGroupOnRight[110X, except that the
  space groups acting from the left are returned.[133X
  
  [1X2.7-5 SpaceGroupsByPointGroup[101X
  
  [33X[1;0Y[29X[2XSpaceGroupsByPointGroup[102X( [3XP[103X[, [3Xnorm[103X][, [3Xorbsflag[103X] ) [32X operation[133X
  
  [33X[0;0Ycalls [10XSpaceGroupByPointGroupOnRight[110X or [10XSpaceGroupByPointGroupOnLeft[110X with the
  same arguments, depending on the value of [10XCrystGroupDefaultAction[110X.[133X
  
  [1X2.7-6 SpaceGroupTypesByPointGroup[101X
  
  [33X[1;0Y[29X[2XSpaceGroupTypesByPointGroup[102X( [3XP[103X[, [3Xorbsflag[103X] ) [32X operation[133X
  
  [33X[0;0Ycalls          either          [10XSpaceGroupTypesByPointGroupOnRight[110X         or
  [10XSpaceGroupTypesByPointGroupOnLeft[110X  with the same arguments, depending on the
  variable [10XCrystGroupDefaultAction[110X.[133X
  
  
  [1X2.8 [33X[0;0YWyckoff positions[133X[101X
  
  [33X[0;0YA  Wyckoff  position of a space group [3XS[103X is an equivalence class of points in
  Euclidean  space,  having  stabilizers  which  are conjugate subgroups of [3XS[103X.
  Apart  from  a  subset  of  lower dimension, which contains points with even
  bigger stabilizers, a Wyckoff position consists of an [3XS[103X-orbit of some affine
  subspace  [3XA[103X.  In  [5XCryst[105X,  a  Wyckoff  position  [3XW[103X  is  specified  by  such a
  representative affine subspace.[133X
  
  [1X2.8-1 WyckoffPositions[101X
  
  [33X[1;0Y[29X[2XWyckoffPositions[102X( [3XS[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns the list of Wyckoff positions of the space group [3XS[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS := SpaceGroupIT(2,14);[127X[104X
    [4X[28XSpaceGroupOnRightIT(2,14,'1')[128X[104X
    [4X[25Xgap>[125X [27XW := WyckoffPositions(S);[127X[104X
    [4X[28X[ < Wyckoff position, point group 1, translation := [ 0, 0 ], [128X[104X
    [4X[28X    basis := [  ] >[128X[104X
    [4X[28X    , < Wyckoff position, point group 1, translation := [ 1/3, 2/3 ], [128X[104X
    [4X[28X    basis := [  ] >[128X[104X
    [4X[28X    , < Wyckoff position, point group 1, translation := [ 2/3, 1/3 ], [128X[104X
    [4X[28X    basis := [  ] >[128X[104X
    [4X[28X    , < Wyckoff position, point group 2, translation := [ 0, 0 ], [128X[104X
    [4X[28X    basis := [ [ 1, -1 ] ] >[128X[104X
    [4X[28X    , < Wyckoff position, point group 3, translation := [ 0, 0 ], [128X[104X
    [4X[28X    basis := [ [ 1, 0 ], [ 0, 1 ] ] >[128X[104X
    [4X[28X     ][128X[104X
  [4X[32X[104X
  
  [33X[0;0YIn  the  previous example, [3XS[103X has three kinds of special points (the basis is
  empty),  whose  representatives all have a stabilizer with the a point group
  in  the  same  conjugacy class (with label 1), one kind of special line (the
  basis has length 1), and the general position.[133X
  
  [1X2.8-2 WyckoffPositionsByStabilizer[101X
  
  [33X[1;0Y[29X[2XWyckoffPositionsByStabilizer[102X( [3XS[103X, [3Xsub[103X ) [32X function[133X
  
  [33X[0;0Ywhere  [3XS[103X is a space group and [3Xsub[103X a subgroup of the point group or a list of
  such  subgroups, determines only the Wyckoff positions whose representatives
  have  a  stabilizer with a point group conjugate to the subgroup [3Xsub[103X or to a
  subgroup contained in the list [3Xsub[103X, respectively.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xsub := Group([ [ [ 0, -1 ], [ -1, 0 ] ] ]);[127X[104X
    [4X[28XGroup([ [ [ 0, -1 ], [ -1, 0 ] ] ])[128X[104X
    [4X[25Xgap>[125X [27XIsSubgroup( PointGroup( S ), sub );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XWyckoffPositionsByStabilizer( S, sub );[127X[104X
    [4X[28X[ < Wyckoff position, point group 1, translation := [ 0, 0 ], [128X[104X
    [4X[28X    basis := [ [ 1, -1 ] ] >[128X[104X
    [4X[28X     ][128X[104X
  [4X[32X[104X
  
  [1X2.8-3 IsWyckoffPosition[101X
  
  [33X[1;0Y[29X[2XIsWyckoffPosition[102X( [3Xobj[103X ) [32X Representation[133X
  
  [33X[0;0Ychecks whether [3Xobj[103X is a Wyckoff position.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XForAll( W, IsWyckoffPosition );[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X2.8-4 WyckoffBasis[101X
  
  [33X[1;0Y[29X[2XWyckoffBasis[102X( [3XW[103X ) [32X operation[133X
  
  [33X[0;0Yreturns  a  basis  of  the  representative  affine  subspace  of the Wyckoff
  position [3XW[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XWyckoffBasis( W[4] );[127X[104X
    [4X[28X[ [ 1, -1 ] ][128X[104X
  [4X[32X[104X
  
  [1X2.8-5 WyckoffTranslation[101X
  
  [33X[1;0Y[29X[2XWyckoffTranslation[102X( [3XW[103X ) [32X operation[133X
  
  [33X[0;0Yreturns  a  point  of  the  representative  affine  subspace  of the Wyckoff
  position [3XW[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XWyckoffTranslation( W[3] );[127X[104X
    [4X[28X[ 2/3, 1/3 ][128X[104X
  [4X[32X[104X
  
  [1X2.8-6 WyckoffSpaceGroup[101X
  
  [33X[1;0Y[29X[2XWyckoffSpaceGroup[102X( [3XW[103X ) [32X operation[133X
  
  [33X[0;0Yreturns the space group of which [3XW[103X is a Wyckoff position.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XWyckoffSpaceGroup( W[1] );[127X[104X
    [4X[28XSpaceGroupOnRightIT(2,14,'1')[128X[104X
  [4X[32X[104X
  
  [1X2.8-7 WyckoffStabilizer[101X
  
  [33X[1;0Y[29X[2XWyckoffStabilizer[102X( [3XW[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  the stabilizer of the (generic) points in the representative affine
  subspace  of  the  Wyckoff  position [3XW[103X. This stabilizer is a subgroup of the
  space group of [3XW[103X, and thus an [10XAffineCrystGroup[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xstab := WyckoffStabilizer( W[4] );[127X[104X
    [4X[28XGroup([ [ [ 0, -1, 0 ], [ -1, 0, 0 ], [ 0, 0, 1 ] ] ])[128X[104X
    [4X[25Xgap>[125X [27XIsAffineCrystGroupOnRight( stab );[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X2.8-8 WyckoffOrbit[101X
  
  [33X[1;0Y[29X[2XWyckoffOrbit[102X( [3XW[103X ) [32X attribute[133X
  
  [33X[0;0Ydetermines  the orbit of the representative affine subspace [3XA[103X of the Wyckoff
  position  [3XW[103X  under the space group [3XS[103X of [3XW[103X (modulo lattice translations). The
  affine  subspaces  in  this  orbit are then converted into a list of Wyckoff
  positions,  which  is  returned. The Wyckoff positions in this list are just
  different  representations  of  [3XW[103X. Their [10XWyckoffBasis[110X and [10XWyckoffTranslation[110X
  are  chosen  such  that the induced parametrizations of their representative
  subspaces are mapped onto each other under the space group operation.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xorb := WyckoffOrbit( W[4] );[127X[104X
    [4X[28X[ < Wyckoff position, point group 2, translation := [ 0, 0 ], [128X[104X
    [4X[28X    basis := [ [ -2, -1 ] ] >[128X[104X
    [4X[28X    , < Wyckoff position, point group 2, translation := [ 0, 0 ], [128X[104X
    [4X[28X    basis := [ [ 1, -1 ] ] >[128X[104X
    [4X[28X    , < Wyckoff position, point group 2, translation := [ 0, 0 ], [128X[104X
    [4X[28X    basis := [ [ 1, 2 ] ] >[128X[104X
    [4X[28X     ][128X[104X
    [4X[25Xgap>[125X [27XSet(orb);[127X[104X
    [4X[28X[ < Wyckoff position, point group 2, translation := [ 0, 0 ], [128X[104X
    [4X[28X    basis := [ [ -2, -1 ] ] >[128X[104X
    [4X[28X     ][128X[104X
  [4X[32X[104X
  
  [1X2.8-9 WyckoffGraph[101X
  
  [33X[1;0Y[29X[2XWyckoffGraph[102X( [3XW[103X[, [3Xdef[103X] ) [32X operation[133X
  [33X[1;0Y[29X[2XWyckoffGraph[102X( [3XS[103X[, [3Xdef[103X] ) [32X operation[133X
  
  [33X[0;0Ydisplays  the incidence relations of a set of Wyckoff positions graphically.
  This  function  is available only under [5XXGAP[105X. In the first form, [3XW[103X is a list
  of  Wyckoff  positions,  which  must  belong to the same space group. In the
  second  form,  [3XS[103X  is a space group; in this case, the function is applied to
  the  complete  list  of  Wyckoff  positions  of  [3XS[103X.  In both forms, a second
  argument,  [3Xdef[103X,  is  possible,  which  is  a record with optional components
  [10Xtitle[110X,  [10Xwidth[110X  and  [10Xheight[110X,  specifying  the  title, width and height of the
  graphic sheet on which the graph will be displayed.[133X
  
  [33X[0;0YEach  vertex  of  the  graph  represents  a  Wyckoff  position. Vertices are
  arranged  in horizontal layers, determined by the dimension [3Xs[103X of the Wyckoff
  position  and the size [3Xs[103X of its stabilizer. For each layer, the list <[ d, s
  ]>  is  displayed  at  the  right  border of the graphic sheet. The vertical
  positions  of  the  layers  are  ordered  according  to the dimension of the
  Wyckoff  position  (primary criterion, smaller dimension above) and the size
  of  the  stabilizer  (secondary  criterion,  bigger  stabilizer  above). Two
  Wyckoff positions are connected if the closure of the lower one contains the
  upper one. Two Wyckoff positions are connected by a line only if there is no
  Wyckoff position in between. The connection line is labelled with the number
  of  affine  subspaces contained in the lower Wyckoff position that contain a
  fixed  representative  affine  subspace  of  the upper Wyckoff position. For
  instance,  if  the lower Wyckoff position consists of a space group orbit of
  lines  (and  thus  the  upper  one  of an orbit of points), the label of the
  connection  line  is  the  number  of lines in the orbit which cross a fixed
  representative point of the upper Wyckoff position.[133X
  
  [33X[0;0YThe  initial  layout  of  the  graph  is  not always optimal. In particular,
  several  connection  lines  can be drawn on top of each other, so that it is
  not  easy to see who is connected with whom. With the left mouse button, the
  graph  can  be rearranged, however. Just drag each vertex to a more suitable
  place.  Note,  however,  that  a  vertex  can  not leave its layer. For more
  details, please consult the [5XXGAP[105X manual.[133X
  
  [33X[0;0YBy  right-clicking on a vertex, a popup menu with information on the Wyckoff
  position   of   that   vertex  appears.  It  informs  on  the  size  of  the
  [10XWyckoffStabilizer[110X,  the dimension of the Wyckoff position, the length of the
  [10XWyckoffOrbit[110X  (modulo  lattice translations), the translation and basis of a
  representative    affine    subspace,    the   isomorphims   type   of   the
  [10XWyckoffStabilizer[110X,  and  the  ConjugacyClassInfo of the point group [3XP[103X of the
  [10XWyckoffStabilizer[110X.  The ConjugacyClassInfo lists for each conjugacy class of
  elements  of [3XP[103X the number of that class, the order, trace and determinant of
  its  elements,  and  the  size  of  the class. This information is useful to
  identify the geometric operation of the stabilizer. The isomorphism type and
  ConjugacyClassInfo may not be displayed initially. It this case, they can be
  obtained  by  left-clicking  on  them,  or  by  left-clicking  on the button
  labelled   [3Xall[103X.   Unfortunately,   the   popup   window  cannot  be  resized
  automatically,  and since the ConjugacyClassInfo needs several lines for the
  display,  the information may be hidden behind the border of the window. You
  will  have  to  use  the  slider  of the popup window to make it visible, or
  resize  the  window with the help of your window manager. Alternatively, you
  can  right-click  again on the same vertex, in which case a new popup window
  of sufficient size appears.[133X
  
  
  [1X2.9 [33X[0;0YNormalizers[133X[101X
  
  [33X[0;0YAt  present,  most  of  the  functions  in this section require that the [5XGAP[105X
  package  [5XCaratInterface[105X  is  installed  (and  compiled). Otherwise, they are
  available  only  for space groups from the crystallographic groups catalogue
  or the International Tables (section [14X2.12[114X).[133X
  
  [1X2.9-1 NormalizerPointGroupInGLnZ[101X
  
  [33X[1;0Y[29X[2XNormalizerPointGroupInGLnZ[102X( [3XP[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  the  normalizer  of the [10XPointGroup[110X [3XP[103X in the group of all unimodular
  transformations  of  the  lattice  spanned  by  the  [10XInternalBasis[110X  [3XB[103X of the
  [10XAffineCrystGroup[110X  [3XS[103X  of  [3XP[103X.  If [3XS[103X is in standard representation, this is the
  same  as  [10XNormalizer(  GL(dim,Integers),  P  )[110X,  otherwise it is [10XNormalizer(
  GL(dim,Integers),  P^(B^-1)  )^B[110X. This notion probably makes sense only if [3XS[103X
  is a space group. Note that [3XP[103X must have elements with integer entries (which
  is the case if [3XS[103X is a space group).[133X
  
  [1X2.9-2 CentralizerPointGroupInGLnZ[101X
  
  [33X[1;0Y[29X[2XCentralizerPointGroupInGLnZ[102X( [3XP[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  the  centralizer of the [10XPointGroup[110X [3XP[103X in the group of all unimodular
  transformations  of  the  lattice  spanned  by  the  [10XInternalBasis[110X  [3XB[103X of the
  [10XAffineCrystGroup[110X  [3XS[103X  of  [3XP[103X.  If [3XS[103X is in standard representation, this is the
  same  as  [10XCentralizer(  GL(dim,Integers),  P )[110X, otherwise it is [10XCentralizer(
  GL(dim,Integers),  P^(B^-1)  )^B[110X. This notion probably makes sense only if [3XS[103X
  is a space group. Note that [3XP[103X must have elements with integer entries (which
  is the case if [3XS[103X is a space group).[133X
  
  [1X2.9-3 TranslationNormalizer[101X
  
  [33X[1;0Y[29X[2XTranslationNormalizer[102X( [3XS[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  the  normalizer of the space group [3XS[103X in the full translation group.
  At  present,  this  function  is  implemented only for space groups, not for
  general  [10XAffineCrystGroups[110X. The translation normalizer [3XTN[103X of [3XS[103X may contain a
  continuous  subgroup [3XC[103X. A basis of the space of such continuous translations
  is  bound in [10XTN!.continuousTranslations[110X. Since this subgroup is not finitely
  generated,  it is [13Xnot[113X contained in the group generated by [10XGeneratorsOfGroup(
  [3XTN[103X[10X  )[110X. Properly speaking, the translation normalizer is the span of [3XTN[103X and [3XC[103X
  together.[133X
  
  [1X2.9-4 AffineNormalizer[101X
  
  [33X[1;0Y[29X[2XAffineNormalizer[102X( [3XS[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns the affine normalizer of the space group [3XS[103X. The affine normalizer [3XAF[103X
  contains  the  translation  normalizer  as  a  subgroup.  Similarly  as with
  [10XTranslationNormalizer[110X,  the  subgroup [3XC[103X of continuous translations, which is
  not  finitely generated, is not part of the group that is returned. However,
  a  basis  of  the space of continuous translations is bound in the component
  [10XAF!.continuousTranslations[110X.[133X
  
  [1X2.9-5 AffineInequivalentSubgroups[101X
  
  [33X[1;0Y[29X[2XAffineInequivalentSubgroups[102X( [3XS[103X, [3Xsub[103X ) [32X function[133X
  
  [33X[0;0Ytakes  as  input a space group [3XS[103X and a list of subgroups of [3XS[103X, and returns a
  sublist of affine inequivalent subgroups. Note that the affine normalizer of
  [3XS[103X  must  be  discrete  in  the current implementation. If it is not, [9Xfail[109X is
  returned.[133X
  
  [33X[0;0YFor  two  space  groups [3XS1[103X and [3XS2[103X of the same dimension (and acting from the
  same side),[133X
  
  [1X2.9-6 ConjugatorSpaceGroups[101X
  
  [33X[1;0Y[29X[2XConjugatorSpaceGroups[102X( [3XS1[103X, [3XS2[103X ) [32X operation[133X
  
  [33X[0;0Yreturns  an  affine  matrix [3Xm[103X such that [10XS1^m = S2[110X, or [9Xfail[109X if no such matrix
  exists,  i.e.,  if  the  two  space groups are not equivalent. This function
  requires that the [5XGAP[105X package [5XCaratInterface[105X is installed (and compiled).[133X
  
  
  [1X2.10 [33X[0;0YColor groups[133X[101X
  
  [33X[0;0YA  color group [3XC[103X is a group whose elements are colored in the following way.
  The  elements  having  the  same color as the identity element [10XOne(C)[110X form a
  subgroup  [3XH[103X  of finite index [3Xn[103X. [3XH[103X is called the [10XColorSubgroup[110X of [3XC[103X. Elements
  of  [3XC[103X have the same color if and only if they are in the same right coset of
  [3XH[103X  in  [3XC[103X. The labelling of the colors, which runs from 1 to [3Xn[103X, is determined
  by a fixed labelling of the right cosets of [3XH[103X. The list of right cosets of [3XH[103X
  is  stored  in  the attribute [10XColorCosetList[110X. The color of the elements of a
  coset  corresponds  to the position of the coset in that list. Elements of [3XH[103X
  by  definition  have  color 1, i.e., the coset with representative [10XOne(C)[110X is
  always the first element of the [10XColorCosetList[110X of [3XC[103X. Color groups which have
  a parent inherit their coloring from that parent, including the labelling of
  the  colors.  As  with other groups, color groups having no parent are their
  own parent.[133X
  
  [33X[0;0YRight  multiplication by a fixed element [3Xg[103X of [3XC[103X induces a permutation <p(g)>
  of  the  colors of the parent of [3XC[103X. This defines a natural homomorphism of [3XC[103X
  into  the  symmetric  group  of  degree [3Xn[103X. The image of this homomorphism is
  called  the  [10XColorPermGroup[110X  of  [3XC[103X, and the homomorphism to it is called the
  [10XColorHomomorphism[110X of [3XC[103X.[133X
  
  [1X2.10-1 ColorGroup[101X
  
  [33X[1;0Y[29X[2XColorGroup[102X( [3XG[103X, [3XH[103X ) [32X function[133X
  
  [33X[0;0Yconstructs  a  colored  copy  of [3XG[103X, with color subgroup [3XH[103X (which should have
  finite  index  in  [3XG[103X). Color groups constructed in this way are always their
  own  parent. It is not possible to set their parent attribute to a different
  value.[133X
  
  [33X[0;0YGroups  which  may be colored include, in particular, [10XAffineCrystGroups[110X, but
  coloring of any finite group should work as well.[133X
  
  [1X2.10-2 IsColorGroup[101X
  
  [33X[1;0Y[29X[2XIsColorGroup[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0Ychecks whether [3XG[103X is a color group.[133X
  
  [1X2.10-3 ColorSubgroup[101X
  
  [33X[1;0Y[29X[2XColorSubgroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns the color subgroup of [3XG[103X.[133X
  
  [1X2.10-4 ColorCosetList[101X
  
  [33X[1;0Y[29X[2XColorCosetList[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns the color labelling cosets of [3XG[103X.[133X
  
  [1X2.10-5 ColorOfElement[101X
  
  [33X[1;0Y[29X[2XColorOfElement[102X( [3XG[103X, [3Xelem[103X ) [32X function[133X
  
  [33X[0;0Yreturns the color of an element of [3XG[103X.[133X
  
  [1X2.10-6 ColorPermGroup[101X
  
  [33X[1;0Y[29X[2XColorPermGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns the ColorPermGroup of [3XG[103X, which is the permutation group induced by [3XG[103X
  acting on the colors of the parent of [3XG[103X.[133X
  
  [1X2.10-7 ColorHomomorphism[101X
  
  [33X[1;0Y[29X[2XColorHomomorphism[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns the homomorphism from [3XG[103X to its [10XColorPermGroup[110X.[133X
  
  [1X2.10-8 Subgroup[101X
  
  [33X[1;0Y[29X[2XSubgroup[102X( [3XC[103X, [3Xelems[103X ) [32X operation[133X
  
  [33X[0;0Ywhere  [3XC[103X  is a color group, returns the colored subgroup [3XU[103X of [3XC[103X generated by
  [3Xelems[103X. The parent of [3XU[103X is set to the parent of [3XC[103X, from which the coloring of
  [3XU[103X is inherited.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := Group(  (1,2,3), (2,3,4) );[127X[104X
    [4X[28XGroup([ (1,2,3), (2,3,4) ])[128X[104X
    [4X[25Xgap>[125X [27XH := Group( (1,2,3) ); [127X[104X
    [4X[28XGroup([ (1,2,3) ])[128X[104X
    [4X[25Xgap>[125X [27XC := ColorGroup( G, H );[127X[104X
    [4X[28XGroup([ (1,2,3), (2,3,4) ])[128X[104X
    [4X[25Xgap>[125X [27XColorSubgroup( C ) = H;[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XColorCosetList( C );[127X[104X
    [4X[28X[ RightCoset(Group( [ (1,2,3) ] ),()), RightCoset(Group( [ (1,2,3) ] ),(1,2)[128X[104X
    [4X[28X    (3,4)), RightCoset(Group( [ (1,2,3) ] ),(1,3)(2,4)), [128X[104X
    [4X[28X  RightCoset(Group( [ (1,2,3) ] ),(1,4)(2,3)) ][128X[104X
    [4X[25Xgap>[125X [27XList( last, x -> ColorOfElement( C, Representative(x) ) );[127X[104X
    [4X[28X[ 1, 2, 3, 4 ][128X[104X
    [4X[25Xgap>[125X [27XU := Subgroup( C, [(1,3)(2,4)] );[127X[104X
    [4X[28XGroup([ (1,3)(2,4) ])[128X[104X
    [4X[25Xgap>[125X [27XIsColorGroup( U );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XColorSubgroup( U );[127X[104X
    [4X[28XGroup(())[128X[104X
    [4X[25Xgap>[125X [27XColorCosetList( U );[127X[104X
    [4X[28X[ RightCoset(Group( () ),()), RightCoset(Group( () ),(1,3)(2,4)) ][128X[104X
    [4X[25Xgap>[125X [27XList( last, x -> ColorOfElement( U, Representative(x) ) );[127X[104X
    [4X[28X[ 1, 3 ][128X[104X
  [4X[32X[104X
  
  
  [1X2.11 [33X[0;0YColored AffineCrystGroups[133X[101X
  
  [33X[0;0YIf  [3XC[103X  is  a  colored  [10XAffineCrystGroup[110X whose [10XColorSubgroup[110X is lattice-equal
  (translationengleich)  with  [3XC[103X, then the [10XPointGroup[110X of [3XC[103X can consistently be
  colored. In that case,[133X
  
  [1X2.11-1 PointGroup[101X
  
  [33X[1;0Y[29X[2XPointGroup[102X( [3XC[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  a  colored  point  group.  Otherwise,  the  [10XPointGroup[110X  of  [3XC[103X is an
  ordinary, uncolored group.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS := SpaceGroupIT( 2, 10 );                                  [127X[104X
    [4X[28XSpaceGroupOnRightIT(2,10,'1')[128X[104X
    [4X[25Xgap>[125X [27Xm := MaximalSubgroupClassReps( S, rec( primes := [2] ) );    [127X[104X
    [4X[28X[ <matrix group with 4 generators>, <matrix group with 3 generators>, [128X[104X
    [4X[28X  <matrix group with 4 generators> ][128X[104X
    [4X[25Xgap>[125X [27XList( last, x -> TranslationBasis(x) = TranslationBasis(S) );[127X[104X
    [4X[28X[ false, true, false ][128X[104X
    [4X[25Xgap>[125X [27XC := ColorGroup( S, m[1] );; IsColorGroup( PointGroup( C ) );[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XC := ColorGroup( S, m[2] );; IsColorGroup( PointGroup( C ) );[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [33X[0;0YTwo  colorings  of  a [13Xspace group[113X [3XS[103X are [13Xequivalent[113X if the two [10XColorSubgroups[110X
  are  conjugate  in  the  affine  normalizer  of  [3XS[103X.  For instance, a list of
  inequivalent  index-2 [10XColorSubgroups[110X of [3XS[103X can be obtained with the following
  code:[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xsub := MaximalSubgroupClassReps( S, rec( primes := [2] ) );[127X[104X
    [4X[28X[ <matrix group with 4 generators>, <matrix group with 3 generators>, [128X[104X
    [4X[28X  <matrix group with 4 generators> ][128X[104X
    [4X[25Xgap>[125X [27XList( sub, Size );[127X[104X
    [4X[28X[ infinity, infinity, infinity ][128X[104X
    [4X[25Xgap>[125X [27Xsub := Filtered( sub, s -> IndexInParent( s ) = 2 );[127X[104X
    [4X[28X[ <matrix group of size infinity with 4 generators>, [128X[104X
    [4X[28X  <matrix group of size infinity with 3 generators>, [128X[104X
    [4X[28X  <matrix group of size infinity with 4 generators> ][128X[104X
    [4X[25Xgap>[125X [27XLength( AffineInequivalentSubgroups( S, sub ) );[127X[104X
    [4X[28X2[128X[104X
  [4X[32X[104X
  
  [33X[0;0YNote    that    [10XAffineInequivalentSubgroups[110X   requires   the   [5XGAP[105X   package
  [5XCaratInterface[105X  to  be installed. Otherwise, this function is supported only
  for [10XAffineCrystGroups[110X constructed from the crystallographic groups catalog.[133X
  
  
  [1X2.12 [33X[0;0YInternational Tables[133X[101X
  
  [33X[0;0YFor  the  user's  convenience,  a table with the 17 plane groups and the 230
  space  groups  is  included  in [5XCryst[105X. These groups are given in exactly the
  same  settings  (i.e.,  choices of basis and origin) as in the International
  Tables.  Space  groups  with  a  centered lattice are therefore given in the
  non-primitive  basis  crystallographers  are used to. This is in contrast to
  the  crystallographic  groups  catalogue,  where always a primitive basis is
  used.[133X
  
  [33X[0;0YFor  some  of the 3D space groups, two different settings are available. The
  possible  settings  are labelled with the characters [10X'1'[110X, [10X'2'[110X, [10X'b'[110X, [10X'c'[110X, [10X'h'[110X
  and  [10X'r'[110X.  If  only  one  setting is available, it is labelled [10X'1'[110X. For some
  space  groups  there  exists a point with higher symmetry than the origin of
  the [10X'1'[110X setting. In such cases, a second setting [10X'2'[110X is available, which has
  this  high  symmetry  point  as  origin. This second setting [10X'2'[110X then is the
  default setting. Space groups which have a unique axis can have this axis in
  [3Xb[103X  direction  (setting [10X'b'[110X) or [3Xc[103X direction (setting [10X'c'[110X). [10X'b'[110X is the default
  setting.  Rhombohedral  space groups are given in a hexagonal basis (setting
  [10X'h'[110X) and in a rhombohedral basis (setting [10X'r'[110X). [10X'h'[110X is the default setting.[133X
  
  [1X2.12-1 SpaceGroupSettingsIT[101X
  
  [33X[1;0Y[29X[2XSpaceGroupSettingsIT[102X( [3Xdim[103X, [3Xnr[103X ) [32X function[133X
  
  [33X[0;0Yreturns a string, whose characters label the available settings of the space
  group with number [3Xnr[103X and dimension [3Xdim[103X.[133X
  
  [1X2.12-2 SpaceGroupOnRightIT[101X
  
  [33X[1;0Y[29X[2XSpaceGroupOnRightIT[102X( [3Xdim[103X, [3Xnr[103X[, [3Xsetting[103X] ) [32X function[133X
  
  [33X[0;0Yreturns  space group number [3Xnr[103X in dimension [3Xdim[103X in the representation acting
  on  the  right. In the third argument, the desired setting can be specified.
  Otherwise, the space group is returned in the default setting for that space
  group.[133X
  
  [1X2.12-3 SpaceGroupOnLeftIT[101X
  
  [33X[1;0Y[29X[2XSpaceGroupOnLeftIT[102X( [3Xdim[103X, [3Xnr[103X[, [3Xsetting[103X] ) [32X function[133X
  
  [33X[0;0Yreturns  space group number [3Xnr[103X in dimension [3Xdim[103X in the representation acting
  on  the  left.  In the third argument, the desired setting can be specified.
  Otherwise, the space group is returned in the default setting for that space
  group.[133X
  
  [1X2.12-4 SpaceGroupIT[101X
  
  [33X[1;0Y[29X[2XSpaceGroupIT[102X( [3Xdim[103X, [3Xnr[103X[, [3Xsetting[103X] ) [32X function[133X
  
  [33X[0;0Yreturns  either  [10XSpaceGroupOnRightIT[110X  or  [10XSpaceGroupOnLeftIT[110X  with  the same
  arguments, depending on the value of [10XCrystGroupDefaultAction[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSpaceGroupSettingsIT( 3, 146 );[127X[104X
    [4X[28X"hr"[128X[104X
    [4X[25Xgap>[125X [27XSpaceGroupOnRightIT( 3, 146 );        [127X[104X
    [4X[28XSpaceGroupOnRightIT(3,146,'h')[128X[104X
    [4X[25Xgap>[125X [27XSpaceGroupOnRightIT( 3, 146, 'r' );[127X[104X
    [4X[28XSpaceGroupOnRightIT(3,146,'r')[128X[104X
  [4X[32X[104X
  
  [33X[0;0Y [133X
  
