  
  [1X1 [33X[0;0YThe Crystallographic Groups Catalog[133X[101X
  
  [33X[0;0YThe  package  [5XCrystCat[105X  provides  a  catalog  of  crystallographic groups of
  dimensions  2,  3, and 4 which covers most of the data contained in the book
  [21XCrystallographic  groups  of  four-dimensional  space[121X  [BBN+78]. It has been
  brought into [5XGAP[105X format by Volkmar Felsch.[133X
  
  [33X[0;0YThe [5XGAP[105X 4 version of the catalog requires the package [5XCryst[105X, which is loaded
  automatically.  The  benefit of this is that space groups extracted from the
  catalog  now  have  the  rich  set  of  methods  provided  by [5XCryst[105X at their
  disposal, and are no longer dumb lists of generators. Moreover, space groups
  are  now fully supported in both the representation acting from the left and
  the representation acting from the right.[133X
  
  [33X[0;0YIn  2001,  Bernd Souvignier discovered an error in the above mentioned book:
  On  page  118,  in the tabulation of enantiomorphic space-group types, it is
  wrongly   claimed   that  the  (affine)  four-dimensional  space-group  type
  08/01/01/002  splits  into  an  enantiomorphic  pair of (proper) space-group
  types.  This  is  indicated by an asterisk preceding the space-group number.
  This   asterisk  has  to  be  removed.  As  a  consequence,  the  number  of
  four-dimensional  space-group  types  splitting  into  enantiomorphic  pairs
  (given  on  page  11  and  page  52 of the book) reduces from 112 to 111. An
  erratum has been submitted to Acta Cryst.[133X
  
  [33X[0;0YThe only implication of this correction for the package [5XCrystCat[105X is that the
  output of the function[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28XDisplaySpaceGroupType( 4, 8, 1, 1, 2 );[128X[104X
  [4X[32X[104X
  
  [33X[0;0Yhad to be changed from[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X#I    *Space-group type (4,8,1,1,2); orbit size 2; fp-free[128X[104X
  [4X[32X[104X
  
  [33X[0;0Yto[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X#I     Space-group type (4,8,1,1,2); orbit size 2; fp-free[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThis has been done in the release [5XGAP[105X 4.3.[133X
  
  
  [1X1.1 [33X[0;0YHow to access the data of the book[133X[101X
  
  [33X[0;0YAmong  others, the catalog offers functions which provide access to the data
  listed in Tables 1, 5, and 6 of [BBN+78]:[133X
  
  [30X    [33X[0;6YThe  information  on  the  crystal  families  listed in Table 1 can be
        reproduced using the [10XDisplayCrystalFamily[110X function.[133X
  
  [30X    [33X[0;6YSimilarly,  the [10XDisplayCrystalSystem[110X function can be used to reproduce
        the information on the crystal systems provided in Table 1.[133X
  
  [30X    [33X[0;6YThe  information  given  in  the  [22Xℚ[122X-class  headlines of Table 1 can be
        displayed  by  the  [10XDisplayQClass[110X  function, whereas the [10XFpGroupQClass[110X
        function can be used to reproduce the presentations that are listed in
        Table 1 for the [22Xℚ[122X-class representatives.[133X
  
  [30X    [33X[0;6YThe  information  given  in  the  [22Xℤ[122X-class headlines of Table 1 will be
        covered  by  the results of the [10XDisplayZClass[110X function, and the matrix
        generators  of  the  [22Xℤ[122X-class  representatives  can  be  constructed by
        calling the [10XMatGroupZClass[110X function.[133X
  
  [30X    [33X[0;6YThe    [10XDisplaySpaceGroupType[110X   and   the   [10XDisplaySpaceGroupGenerators[110X
        functions  can  be  used  to  reproduce  all of the information on the
        space-group types that is provided in Table 1.[133X
  
  [30X    [33X[0;6YThe  normalizers  listed  in  Table 5 can be reproduced by calling the
        [10XNormalizerZClass[110X function.[133X
  
  [30X    [33X[0;6YFinally,  the  [10XCharTableQClass[110X  function  will  compute  the character
        tables listed in Table 6, whereas the isomorphism types given in Table
        6 may be obtained by calling the [10XDisplayQClass[110X function.[133X
  
  [33X[0;0YThe  display  functions  mentioned in the above list print their output with
  different  indentation.  So, calling them in a suitably nested loop, you may
  produce  a  listing  in which the information about the objects of different
  type will be properly indented as has been done in Table 1 of [BBN+78].[133X
  
  
  [1X1.2 [33X[0;0YRepresentation of space groups[133X[101X
  
  [33X[0;0YProbably  the  most important function in the catalog is the [10XSpaceGroupBBNWZ[110X
  function  which  provides  representatives  of  the  affine classes of space
  groups.  A space group of dimension [22Xn[122X is represented by an [22X(n+1)[122X-dimensional
  rational matrix group as follows.[133X
  
  [33X[0;0YIf  [22XS[122X is an [22Xn[122X-dimensional space group, then each element [22Xs[122X in [22XS[122X is an affine
  mapping  [22Xs: V -> V[122X of an [22Xn[122X-dimensional [22Xℝ[122X-vector space [22XV[122X onto itself. Hence [22Xs[122X
  can be written as the product of an appropriate invertible linear mapping [22Xg:
  V  ->  V[122X and a translation by some translation vector [22Xt ∈ V[122X such that, if we
  write mappings from the left, we have [22Xs(v) = g(v) + t[122X for all [22Xv ∈ V[122X.[133X
  
  [33X[0;0YIf  we  fix a basis of [22XV[122X and then replace each [22Xv ∈ V[122X by the column vector of
  its  coefficients  with respect to that basis (and hence [22XV[122X by the isomorphic
  column  vector space [22Xℝ^n × 1[122X), we can describe the linear mapping [22Xg[122X involved
  in  [22Xs[122X by an [22Xn × n[122X matrix [22XM_g ∈ GL_n(ℝ)[122X which acts by multiplication from the
  left on the column vectors in [22Xℝ^n × 1[122X. Hence, if we identify [22XV[122X with [22Xℝ^n × 1[122X,
  we have [22Xs(v) = M_g v + t[122X for all [22Xv ∈ ℝ^n × 1[122X.[133X
  
  [33X[0;0YMoreover, if we extend each column vector [22Xv ∈ ℝ^n × 1[122X to a column [22X[ [ v ], [
  1  ]  ][122X  of  length  [22Xn+1[122X by adding an entry 1 in the last position and if we
  define  an  [22X(n+1) × (n+1)[122X matrix [22XM_s = [ [ M_g, t ], [ 0, 1 ] ][122X, we have [22X[ [
  s(v)  ], [ 1 ] ] = M_s [ [ v ], [ 1 ] ][122X for all [22Xv ∈ ℝ^n × 1[122X. This means that
  we  can represent the space group [22XS[122X by the isomorphic group [22XM(S) = M_s | s ∈
  S[122X.  The  submatrices  [22XM_g[122X  occurring  in  the elements of [22XM(S)[122X form an [22Xn × n[122X
  matrix group [22XP(S)[122X, the [21Xpoint group[121X of [22XM(S)[122X. In fact, we can choose the basis
  of  [22Xℝ^n  ×  1[122X such that [22XM_g ∈ GL_n(ℤ)[122X and [22Xt ∈ ℚ^n × 1[122X for all [22XM_s ∈ M(S)[122X. In
  particular,  the  space  group representatives that are normally used by the
  crystallographers  are  of  this  form,  and the book [BBN+78] uses the same
  convention.[133X
  
  [33X[0;0YThe   representation   described   above   is   the   one  usually  used  by
  crystallographers.  There  is, however, an alternative to the representation
  of the space group elements by matrices of the form [22X[ [ M_g, t ], [ 0, 1 ] ][122X
  as  described  above.  Instead  of  considering  the  coefficient vectors as
  columns  we  may consider them as rows. Then we can associate to each affine
  mapping  [22Xs  ∈  S[122X  an [22X(n+1) × (n+1)[122X matrix [22XM'_s = [ [ M'_g', 0 ], [ t', 1 ] ][122X
  with  [22XM'_g' ∈ GL_n(ℝ)[122X and [22Xt' ∈ ℝ^1 × n[122X such that [22X[s(v'),1] = [v',1] M'_s[122X for
  all  [22Xv' ∈ ℝ^1 × n[122X, and we may represent [22XS[122X by the matrix group [22XM'(S) = M'_s |
  s  ∈  S[122X. Again, we can choose the basis of [22Xℝ^1 × n[122X such that [22XM'_g' ∈ GL_n(ℤ)[122X
  and [22Xt' ∈ ℚ^1 × n[122X for all [22XM'_s ∈ M'(S)[122X.[133X
  
  [33X[0;0YFrom  the  mathematical  point  of  view, both approaches are equivalent. In
  particular,  [22XM(S)[122X and [22XM'(S)[122X are isomorphic, for instance via the isomorphism
  [22Xτ[122X  mapping [22XM_s ∈ M(S)[122X to [22X(M_s^tr)^-1[122X. Unfortunately, however, neither of the
  two is a good choice for our [5XGAP[105X catalog.[133X
  
  [33X[0;0YThe  first  convention,  using matrices which act on column vectors from the
  left,  is  not consistent with the fact that actions in [5XGAP[105X are usually from
  the right.[133X
  
  [33X[0;0YOn the other hand, if we choose the second convention, we run into a problem
  with  the names of the space groups as introduced in [BBN+78]. Any such name
  does not just describe the abstract isomorphism type of the respective space
  group [22XS[122X, but reflects properties of the matrix group [22XM(S)[122X. In particular, it
  contains  as  a leading part the name of the [22Xℤ[122X-class of the associated point
  group  [22XP(S)[122X.  Since the classification of space groups by affine equivalence
  is tantamount to their classification by abstract isomorphism, [22XM'(S)[122X lies in
  the  same  affine  class as [22XM(S)[122X and hence should get the same name as [22XM(S)[122X.
  But the point group [22XP(S)[122X that occurs in that name is not always [22Xℤ[122X-equivalent
  to  the  point group [22XP'(S)[122X of [22XM'(S)[122X. For example, the isomorphism [22Xτ: M(S) ->
  M'(S)[122X  defined  above  maps  the  [22Xℤ[122X-class representative with the parameters
  [22X[3,7,3,2][122X  (in  the  notation described below) to the [22Xℤ[122X-class representative
  with  the  parameters  [22X[3,7,3,3][122X.  In  other  words:  The  space group names
  introduced for the groups [22XM(S)[122X in [BBN+78] lead to confusing inconsistencies
  if assigned to the groups [22XM'(S)[122X.[133X
  
  [33X[0;0YIn order to avoid this confusion we decided that the first convention is the
  lesser  evil,  and  so  the [5XGAP[105X catalog follows the book. In particular, all
  functions  listed  in  section [14X1.1[114X use the convention of the book. The space
  groups,  however,  can  be  constructed in both representations, so that the
  user  can  choose  the  one  that  seems  more appropriate in the particular
  situation.  The  function  [10XSpaceGroupOnLeftBBNWZ[110X constructs a space group in
  the   [21Xcrystallographic[121X   representation   acting   on   the   left,  whereas
  [10XSpaceGroupOnRightBBNWZ[110X constructs a space group in the representation acting
  on  the  right,  as  preferred by [5XGAP[105X. In order to avoid long function names
  (and  in order to avoid mixing groups in different representations), one can
  set  one's  own  default  with  the function [10XSetCrystGroupDefaultAction[110X (see
  [2XSetCrystGroupDefaultAction[102X   ([14XReference:   CrystGroupDefaultAction[114X)),  which
  takes  as  argument  either  [10XLeftAction[110X or [10XRightAction[110X. [10XSpaceGroupBBNWZ[110X then
  constructs  a  space  group  in  this default representation. Initially, the
  default is [10XRightAction[110X.[133X
  
  [33X[0;0YThe  space  groups  constructed from the catalog are matrix groups, which in
  addition      have     the     property     [10XIsAffineCrystGroupOnLeft[110X     (or
  [10XIsAffineCrystGroupOnRight[110X, respectively). The package [5XCryst[105X provides methods
  to  compute with such groups. [5XCryst[105X is necessary for any serious computation
  with  space  groups,  because  the  support of plain [5XGAP[105X for infinite matrix
  groups (such as space groups) is very limited.[133X
  
  [33X[0;0YBefore we describe all available catalog functions in detail, we have to add
  two remarks.[133X
  
  [33X[0;0Y[13XRemark  1:[113X The concepts used in this section are defined in chapter 1 (Basic
  definitions)  of  [BBN+78]. However, note that the definition of the concept
  of  a  crystal  system given on page 16 of that book relies on the following
  statement about [22Xℚ[122X-classes:[133X
  
  [8X[108X
        [33X[0;6YFor  a  [22Xℚ[122X-class  [3XC[103X  there  is a unique holohedry [3XH[103X such that each f.u.
        group  in  [3XC[103X  is  a  subgroup  of  some  f.u. group in [3XH[103X, but is not a
        subgroup of any f.u. group belonging to a holohedry of smaller order.[133X
  
  [33X[0;0YThis  statement  is  correct  for  dimensions  1, 2, 3, and 4, and hence the
  definition  of  [21Xcrystal  system[121X  given on page 16 of [BBN+78] is known to be
  unambiguous for these dimensions. However, there is a counterexample to this
  statement  in seven-dimensional space so that the definition breaks down for
  some higher dimensions.[133X
  
  [33X[0;0YTherefore,  the  authors  of  the  book  have since proposed to replace this
  definition  of  [21Xcrystal  system[121X by the following much simpler one, which has
  been  discussed  in  more  detail  in  [NPW81].  To formulate it, we use the
  intersections  of  [22Xℚ[122X-classes  and Bravais flocks as introduced on page 17 of
  [BBN+78],  and we define the classification of the set of all [22Xℤ[122X-classes into
  crystal systems as follows:[133X
  
  [8X[108X
        [33X[0;6Y[13XDefinition[113X:  A  crystal  system (introduced as an equivalence class of
        [22Xℤ[122X-classes)  consists  of full geometric crystal classes. The [22Xℤ[122X-classes
        of  two  (geometric) crystal classes belong to the same crystal system
        if  and only if these geometric crystal classes intersect the same set
        of Bravais flocks of [22Xℤ[122X-classes.[133X
  
  [33X[0;0YFrom  this  definition  of  a  crystal  system of [22Xℤ[122X-classes one then obtains
  crystal systems of f.u. groups, of space-group types, and of space groups in
  the same manner as with the preceding definitions in the book.[133X
  
  [33X[0;0YThe  new  definition  is unambiguous for all dimensions. Moreover, it can be
  checked  from the tables in the book that it defines the same classification
  as the old one for dimensions 1, 2, 3, and 4.[133X
  
  [33X[0;0YIt  should  be  noted  that  the  concept  of crystal family is well-defined
  independently  of  the  dimension  if  one  uses  the  [21Xmore  natural[121X  second
  definition  of  it  at the end of page 17. Moreover, the first definition of
  crystal  family on page 17 defines the same concept as the second one if the
  now proposed definition of crystal system is used.[133X
  
  [33X[0;0Y[13XRemark  2:[113X  The  second  remark just concerns a different terminology in the
  tables  of  [BBN+78] and in the current catalog. In group theory, the number
  of elements of a finite group usually is called the [21Xorder[121X of the group. This
  terminology has been used throughout the book. Here, however, we will follow
  the [5XGAP[105X conventions and use the term [21Xsize[121X instead.[133X
  
  
  [1X1.3 [33X[0;0YCrystal Families[133X[101X
  
  [1X1.3-1 NrCrystalFamilies[101X
  
  [33X[1;0Y[29X[2XNrCrystalFamilies[102X( [3Xdim[103X ) [32X function[133X
  
  [33X[0;0Yreturns  the  number of crystal families in case of dimension [3Xdim[103X. It can be
  used to formulate loops over the crystal families.[133X
  
  [33X[0;0YThere  are  4,  6,  and  23  crystal  families  of  dimension  2,  3, and 4,
  respectively.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xn := NrCrystalFamilies( 4 );[127X[104X
    [4X[28X23[128X[104X
  [4X[32X[104X
  
  [1X1.3-2 DisplayCrystalFamily[101X
  
  [33X[1;0Y[29X[2XDisplayCrystalFamily[102X( [3Xdim[103X, [3Xfamily[103X ) [32X function[133X
  
  [33X[0;0Ydisplays  for  the specified crystal family essentially the same information
  as is provided for that family in Table 1 of [BBN+78], namely[133X
  
  [30X    [33X[0;6Ythe family name,[133X
  
  [30X    [33X[0;6Ythe number of parameters,[133X
  
  [30X    [33X[0;6Ythe common rational decomposition pattern,[133X
  
  [30X    [33X[0;6Ythe common real decomposition pattern,[133X
  
  [30X    [33X[0;6Ythe number of crystal systems in the family, and[133X
  
  [30X    [33X[0;6Ythe number of Bravais flocks in the family.[133X
  
  [33X[0;0YFor details see [BBN+78].[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XDisplayCrystalFamily( 4, 17 );[127X[104X
    [4X[28X#I Family XVII: cubic orthogonal; 2 free parameters;[128X[104X
    [4X[28X#I  Q-decomposition pattern 1+3; R-decomposition pattern 1+3;[128X[104X
    [4X[28X#I  2 crystal systems; 6 Bravais flocks[128X[104X
    [4X[25Xgap>[125X [27XDisplayCrystalFamily( 4, 18 );[127X[104X
    [4X[28X#I Family XVIII: octagonal; 2 free parameters;[128X[104X
    [4X[28X#I  Q-irreducible; R-decomposition pattern 2+2;[128X[104X
    [4X[28X#I  1 crystal system; 1 Bravais flock[128X[104X
    [4X[25Xgap>[125X [27XDisplayCrystalFamily( 4, 21 );[127X[104X
    [4X[28X#I Family XXI: di-isohexagonal orthogonal; 1 free parameter;[128X[104X
    [4X[28X#I  R-irreducible; 2 crystal systems; 2 Bravais flocks[128X[104X
  [4X[32X[104X
  
  
  [1X1.4 [33X[0;0YCrystal Systems[133X[101X
  
  [1X1.4-1 NrCrystalSystems[101X
  
  [33X[1;0Y[29X[2XNrCrystalSystems[102X( [3Xdim[103X ) [32X function[133X
  
  [33X[0;0Yreturns  the  number  of crystal systems in case of dimension [3Xdim[103X. It can be
  used to formulate loops over the crystal systems.[133X
  
  [33X[0;0YThere  are  4,  7,  and  33  crystal  systems  of  dimension  2,  3,  and 4,
  respectively.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xn := NrCrystalSystems( 2 );[127X[104X
    [4X[28X4[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe following two functions are functions of crystal systems.[133X
  
  [33X[0;0YEach  crystal  system  is characterized by a pair ([3Xdim[103X, [3Xsystem[103X) where [3Xdim[103X is
  the associated dimension, and [3Xsystem[103X is the number of the crystal system.[133X
  
  [1X1.4-2 DisplayCrystalSystem[101X
  
  [33X[1;0Y[29X[2XDisplayCrystalSystem[102X( [3Xdim[103X, [3Xsystem[103X ) [32X function[133X
  
  [33X[0;0Ydisplays  for  the specified crystal system essentially the same information
  as is provided for that system in Table 1 of [BBN+78], namely[133X
  
  [30X    [33X[0;6Ythe number of [22Xℚ[122X-classes in the crystal system and[133X
  
  [30X    [33X[0;6Ythe  identification  number,  i. e., the triple ([3Xdim[103X, [3Xsystem[103X, [3Xq-class[103X)
        described  below,  of the [22Xℚ[122X-class that is the holohedry of the crystal
        system.[133X
  
  [33X[0;0YFor details see [BBN+78].[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xfor sys in [ 1 .. 4 ] do  DisplayCrystalSystem( 2, sys );  od;[127X[104X
    [4X[28X#I  Crystal system 1: 2 Q-classes; holohedry (2,1,2)[128X[104X
    [4X[28X#I  Crystal system 2: 2 Q-classes; holohedry (2,2,2)[128X[104X
    [4X[28X#I  Crystal system 3: 2 Q-classes; holohedry (2,3,2)[128X[104X
    [4X[28X#I  Crystal system 4: 4 Q-classes; holohedry (2,4,4)[128X[104X
  [4X[32X[104X
  
  
  [1X1.5 [33X[0;0YQ-Classes[133X[101X
  
  [1X1.5-1 NrQClassesCrystalSystem[101X
  
  [33X[1;0Y[29X[2XNrQClassesCrystalSystem[102X( [3Xdim[103X, [3Xsystem[103X ) [32X function[133X
  
  [33X[0;0Yreturns  the  number of [22Xℚ[122X-classes within the given crystal system. It can be
  used to formulate loops over the [22Xℚ[122X-classes.[133X
  
  [33X[0;0YThe following five functions are functions of [22Xℚ[122X-classes.[133X
  
  [33X[0;0YIn general, the parameters characterizing a [22Xℚ[122X-class will form a triple ([3Xdim[103X,
  [3Xsystem[103X, [3Xq-class[103X) where [3Xdim[103X is the associated dimension, [3Xsystem[103X is the number
  of  the  associated crystal system, and [3Xq-class[103X is the number of the [22Xℚ[122X-class
  within  the crystal system. However, in case of dimensions 2 or 3, a [22Xℚ[122X-class
  may  also be characterized by a pair ([3Xdim[103X, [3XIT-number[103X) where [3XIT-number[103X is the
  number  in  the  International  Tables  for  Crystallography  [Hah95] of any
  space-group  type  lying  in  (a  [22Xℤ[122X-class  of)  that [22Xℚ[122X-class, or just by the
  Hermann-Mauguin  symbol of any space-group type lying in (a [22Xℤ[122X-class of) that
  [22Xℚ[122X-class.[133X
  
  [33X[0;0YThe   Hermann-Mauguin   symbols   which   we   use  in  [5XGAP[105X  are  the  short
  Hermann-Mauguin  symbols  defined  in  the 1983 edition of the International
  Tables  [Hah95],  but  any  occurring  indices  are  expressed  by  ordinary
  integers,   and   bars  are  replaced  by  minus  signs.  For  example,  the
  Hermann-Mauguin  symbol  [3XP[103X[22Xoverline42_1m[122X  will  be  represented by the string
  [10X"P-421m"[110X.[133X
  
  [1X1.5-2 DisplayQClass[101X
  
  [33X[1;0Y[29X[2XDisplayQClass[102X( [3Xdim[103X, [3Xsystem[103X, [3Xq-class[103X ) [32X function[133X
  [33X[1;0Y[29X[2XDisplayQClass[102X( [3Xdim[103X, [3XIT-number[103X ) [32X function[133X
  [33X[1;0Y[29X[2XDisplayQClass[102X( [3XHermann-Mauguin-symbol[103X ) [32X function[133X
  
  [33X[0;0Ydisplays  for  the  specified [22Xℚ[122X-class essentially the same information as is
  provided  for  that  [22Xℚ[122X-class in Table 1 of [BBN+78] (except for the defining
  relations given there), namely[133X
  
  [30X    [33X[0;6Ythe size of the groups in the [22Xℚ[122X-class,[133X
  
  [30X    [33X[0;6Ythe isomorphism type of the groups in the [22Xℚ[122X-class,[133X
  
  [30X    [33X[0;6Ythe Hurley pattern,[133X
  
  [30X    [33X[0;6Ythe rational constituents,[133X
  
  [30X    [33X[0;6Ythe number of [22Xℤ[122X-classes in the [22Xℚ[122X-class, and[133X
  
  [30X    [33X[0;6Ythe number of space-group types in the [22Xℚ[122X-class.[133X
  
  [33X[0;0YFor details see [BBN+78].[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XDisplayQClass( "p2" );[127X[104X
    [4X[28X#I   Q-class H (2,1,2): size 2; isomorphism type 2.1 = C2;[128X[104X
    [4X[28X#I    Q-constituents 2*(2,1,2); cc; 1 Z-class; 1 space group[128X[104X
    [4X[25Xgap>[125X [27XDisplayQClass( "R-3" );[127X[104X
    [4X[28X#I   Q-class (3,5,2): size 6; isomorphism type 6.1 = C6;[128X[104X
    [4X[28X#I    Q-constituents (3,1,2)+(3,4,3); ncc; 2 Z-classes; 2 space grps[128X[104X
    [4X[25Xgap>[125X [27XDisplayQClass( 3, 195 );[127X[104X
    [4X[28X#I   Q-class (3,7,1): size 12; isomorphism type 12.5 = A4;[128X[104X
    [4X[28X#I    C-irreducible; 3 Z-classes; 5 space grps[128X[104X
    [4X[25Xgap>[125X [27XDisplayQClass( 4, 27, 4 );[127X[104X
    [4X[28X#I   Q-class H (4,27,4): size 20; isomorphism type 20.3 = D10xC2;[128X[104X
    [4X[28X#I    Q-irreducible; 1 Z-class; 1 space group[128X[104X
    [4X[25Xgap>[125X [27XDisplayQClass( 4, 29, 1 );[127X[104X
    [4X[28X#I  *Q-class (4,29,1): size 18; isomorphism type 18.3 = D6xC3;[128X[104X
    [4X[28X#I    R-irreducible; 3 Z-classes; 5 space grps[128X[104X
  [4X[32X[104X
  
  [33X[0;0YNote  in  the  preceding  examples that, as pointed out above, the term [21Xsize[121X
  denotes the order of a representative group of the specified [22Xℚ[122X-class and, of
  course, not the (infinite) class length.[133X
  
  [1X1.5-3 FpGroupQClass[101X
  
  [33X[1;0Y[29X[2XFpGroupQClass[102X( [3Xdim[103X, [3Xsystem[103X, [3Xq-class[103X ) [32X function[133X
  [33X[1;0Y[29X[2XFpGroupQClass[102X( [3Xdim[103X, [3XIT-number[103X ) [32X function[133X
  [33X[1;0Y[29X[2XFpGroupQClass[102X( [3XHermann-Mauguin-symbol[103X ) [32X function[133X
  
  [33X[0;0Yreturns a finitely presented group [3XF[103X, say, which is isomorphic to the groups
  in the specified [22Xℚ[122X-class.[133X
  
  [33X[0;0YThe presentation of that group is the same as the corresponding presentation
  given  in  Table  1  of [BBN+78] except for the fact that its generators are
  listed  in  reverse  order. The reason for this change is that, whenever the
  group  in  question  is  solvable,  the resulting generators form a pcgs (as
  defined in section [14X'Reference: Polycyclic Groups'[114X in the reference manual of
  [5XGAP[105X)  if  they  are  numbered  [21Xfrom top to bottom[121X, and the presentation is a
  power-commutator  presentation.  The  [10XPcGroupQClass[110X  function described next
  will make use of this fact in order to construct a pc group isomorphic to [3XF[103X.[133X
  
  [33X[0;0YNote  that,  for  any  [22Xℤ[122X-class  in  the  specified [22Xℚ[122X-class, the matrix group
  returned  by  the [10XMatGroupZClass[110X function (see below) not only is isomorphic
  to [3XF[103X, but also its generators satisfy the defining relators of [3XF[103X.[133X
  
  [33X[0;0YBesides the usual components, [3XF[103X will have an attribute [10XCrystCatRecord[110X, which
  is  a record with component [10Xparameters[110X, which keeps a list of the parameters
  that specify the given [22Xℚ[122X-class.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XF := FpGroupQClass( 4, 20, 3 );[127X[104X
    [4X[28XFpGroupQClass( 4, 20, 3 )[128X[104X
    [4X[25Xgap>[125X [27XGeneratorsOfGroup( F );[127X[104X
    [4X[28X[ f1, f2 ][128X[104X
    [4X[25Xgap>[125X [27XRelatorsOfFpGroup( F );[127X[104X
    [4X[28X[ f1^2*f2^-3, f2^6, f2^-1*f1^-1*f2*f1*f2^-4 ][128X[104X
    [4X[25Xgap>[125X [27XSize( F );[127X[104X
    [4X[28X12[128X[104X
    [4X[25Xgap>[125X [27XCrystCatRecord( F ).parameters;[127X[104X
    [4X[28X[ 4, 20, 3 ][128X[104X
  [4X[32X[104X
  
  [1X1.5-4 PcGroupQClass[101X
  
  [33X[1;0Y[29X[2XPcGroupQClass[102X( [3Xdim[103X, [3Xsystem[103X, [3Xq-class[103X ) [32X function[133X
  [33X[1;0Y[29X[2XPcGroupQClass[102X( [3Xdim[103X, [3XIT-number[103X ) [32X function[133X
  [33X[1;0Y[29X[2XPcGroupQClass[102X( [3XHermann-Mauguin-symbol[103X ) [32X function[133X
  
  [33X[0;0Yreturns  a  pc  group  [22XP[122X,  say,  isomorphic  to  the groups in the specified
  [22Xℚ[122X-class,  if  these groups are solvable, or the value [9Xfail[109X (together with an
  appropriate warning), otherwise.[133X
  
  [33X[0;0Y[22XP[122X  is  constructed  by  first establishing a finitely presented group (as it
  would  be  returned  by the [10XFpGroupQClass[110X function described above) and then
  constructing from it an isomorphic pc group. If the underlying pcgs is not a
  prime orders pcgs (see section [14X'Reference: Polycyclic Groups'[114X), then it will
  be refined appropriately (and a warning will be displayed).[133X
  
  [33X[0;0YBesides the usual components, [3XP[103X will have an attribute [10XCrystCatRecord[110X, which
  is  a record with component [10Xparameters[110X, which saves a list of the parameters
  that specify the given [22Xℚ[122X-class.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XP := PcGroupQClass( 4, 31, 3 );[127X[104X
    [4X[28X#I  Warning: a non-solvable group can't be represented as a pc group[128X[104X
    [4X[28Xfail[128X[104X
    [4X[25Xgap>[125X [27XP := PcGroupQClass( 4, 20, 3 );[127X[104X
    [4X[28X#I  Warning: the presentation has been extended to get a prime order pcgs[128X[104X
    [4X[28XPcGroupQClass( 4, 20, 3 )[128X[104X
    [4X[25Xgap>[125X [27XGeneratorsOfGroup( P );[127X[104X
    [4X[28X[ f1, f2, f3 ][128X[104X
    [4X[25Xgap>[125X [27XSize( P );[127X[104X
    [4X[28X12[128X[104X
    [4X[25Xgap>[125X [27XCrystCatRecord( P ).parameters;[127X[104X
    [4X[28X[ 4, 20, 3 ][128X[104X
  [4X[32X[104X
  
  [1X1.5-5 CharTableQClass[101X
  
  [33X[1;0Y[29X[2XCharTableQClass[102X( [3Xdim[103X, [3Xsystem[103X, [3Xq-class[103X ) [32X function[133X
  [33X[1;0Y[29X[2XCharTableQClass[102X( [3Xdim[103X, [3XIT-number[103X ) [32X function[133X
  [33X[1;0Y[29X[2XCharTableQClass[102X( [3XHermann-Mauguin-symbol[103X ) [32X function[133X
  
  [33X[0;0Yreturns  the character table [22XT[122X, say, of a representative group of (a [22Xℤ[122X-class
  of) the specified [22Xℚ[122X-class.[133X
  
  [33X[0;0YAlthough  the  set  of  characters  can be considered as an invariant of the
  specified [22Xℚ[122X-class, the resulting table will depend on the order in which [5XGAP[105X
  sorts  the  conjugacy classes of elements and the irreducible characters and
  hence,  in general, will not coincide with the corresponding table presented
  in [BBN+78].[133X
  
  [33X[0;0Y[10XCharTableQClass[110X  proceeds as follows. If the groups in the given [22Xℚ[122X-class are
  solvable, then it first calls the [10XPcGroupQClass[110X and [10XRefinedPcGroup[110X functions
  to  get a suitable isomorphic pc group, and then it calls the [10XCharacterTable[110X
  function to compute the character table of that pc group. In the case of the
  five  [22Xℚ[122X-classes of dimension 4 whose groups are not solvable, it first calls
  the  [10XFpGroupQClass[110X  function  to get an isomorphic finitely presented group,
  then it constructs a specially chosen faithful permutation representation of
  low  degree for that group, and finally it determines the character table of
  the   resulting  permutation  group  again  by  calling  the  [10XCharacterTable[110X
  function.[133X
  
  [33X[0;0YIn  general,  the  above  strategy  will  be  much  more  efficient than the
  alternative  possibilities  of  calling  the  [10XCharacterTable[110X  function for a
  finitely  presented  group  provided  by the [10XFpGroupQClass[110X function or for a
  matrix group provided by the [10XMatGroupZClass[110X function.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XT := CharTableQClass( 4, 20, 3 );;[127X[104X
    [4X[25Xgap>[125X [27XCharacterDegrees( T );[127X[104X
    [4X[28X[ [ 1, 4 ], [ 2, 2 ] ][128X[104X
  [4X[32X[104X
  
  
  [1X1.6 [33X[0;0YZ-Classes[133X[101X
  
  [1X1.6-1 NrZClassesQClass[101X
  
  [33X[1;0Y[29X[2XNrZClassesQClass[102X( [3Xdim[103X, [3Xsystem[103X, [3Xq-class[103X ) [32X function[133X
  [33X[1;0Y[29X[2XNrZClassesQClass[102X( [3Xdim[103X, [3XIT-number[103X ) [32X function[133X
  [33X[1;0Y[29X[2XNrZClassesQClass[102X( [3XHermann-Mauguin-symbol[103X ) [32X function[133X
  
  [33X[0;0Yreturns  the number of [22Xℤ[122X-classes within the given [22Xℚ[122X-class. It can be used to
  formulate loops over the [22Xℤ[122X-classes.[133X
  
  [33X[0;0YThe following functions are functions of [22Xℤ[122X-classes.[133X
  
  [33X[0;0YIn  general,  the  parameters characterizing a [22Xℤ[122X-class will form a quadruple
  ([3Xdim[103X,  [3Xsystem[103X,  [3Xq-class[103X,  [3Xz-class[103X)  where  [3Xdim[103X  is the associated dimension,
  [3Xsystem[103X is the number of the associated crystal system, [3Xq-class[103X is the number
  of  the  associated  [22Xℚ[122X-class  within  the crystal system, and [3Xz-class[103X is the
  number  of  the [22Xℤ[122X-class within the [22Xℚ[122X-class. However, in case of dimensions 2
  or  3,  a [22Xℤ[122X-class may also be characterized by a pair ([3Xdim[103X, [3XIT-number[103X) where
  [3XIT-number[103X  is  the  number  in  the  International  Tables  [Hah95]  of  any
  space-group  type  lying  in  that  [22Xℤ[122X-class,  or just by the Hermann-Mauguin
  symbol of any space-group type lying in that [22Xℤ[122X-class.[133X
  
  [1X1.6-2 DisplayZClass[101X
  
  [33X[1;0Y[29X[2XDisplayZClass[102X( [3Xdim[103X, [3Xsystem[103X, [3Xq-class[103X, [3Xz-class[103X ) [32X function[133X
  [33X[1;0Y[29X[2XDisplayZClass[102X( [3Xdim[103X, [3XIT-number[103X ) [32X function[133X
  [33X[1;0Y[29X[2XDisplayZClass[102X( [3XHermann-Mauguin-symbol[103X ) [32X function[133X
  
  [33X[0;0Ydisplays  for  the  specified [22Xℤ[122X-class essentially the same information as is
  provided  for that [22Xℤ[122X-class in Table 1 of [BBN+78] (except for the generating
  matrices of a class representative group given there), namely[133X
  
  [30X    [33X[0;6Yfor dimensions 2 and 3, the Hermann-Mauguin symbol of a representative
        space-group type which belongs to that [22Xℤ[122X-class,[133X
  
  [30X    [33X[0;6Ythe Bravais type,[133X
  
  [30X    [33X[0;6Ysome decomposability information,[133X
  
  [30X    [33X[0;6Ythe number of space-group types belonging to the [22Xℤ[122X-class,[133X
  
  [30X    [33X[0;6Ythe size of the associated cohomology group.[133X
  
  [33X[0;0YFor details see [BBN+78].[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XDisplayZClass( 2, 3 );[127X[104X
    [4X[28X#I    Z-class (2,2,1,1) = Z(pm): Bravais type II/I; fully Z-reducible;[128X[104X
    [4X[28X#I     2 space groups; cohomology group size 2[128X[104X
    [4X[25Xgap>[125X [27XDisplayZClass( "F-43m" );[127X[104X
    [4X[28X#I    Z-class (3,7,4,2) = Z(F-43m): Bravais type VI/II; Z-irreducible;[128X[104X
    [4X[28X#I     2 space groups; cohomology group size 2[128X[104X
    [4X[25Xgap>[125X [27XDisplayZClass( 4, 2, 3, 2 );[127X[104X
    [4X[28X#I    Z-class B (4,2,3,2): Bravais type II/II; Z-decomposable;[128X[104X
    [4X[28X#I     2 space groups; cohomology group size 4[128X[104X
    [4X[25Xgap>[125X [27XDisplayZClass( 4, 21, 3, 1 );[127X[104X
    [4X[28X#I   *Z-class (4,21,3,1): Bravais type XVI/I; Z-reducible;[128X[104X
    [4X[28X#I     1 space group; cohomology group size 1[128X[104X
  [4X[32X[104X
  
  [1X1.6-3 MatGroupZClass[101X
  
  [33X[1;0Y[29X[2XMatGroupZClass[102X( [3Xdim[103X, [3Xsystem[103X, [3Xq-class[103X, [3Xz-class[103X ) [32X function[133X
  [33X[1;0Y[29X[2XMatGroupZClass[102X( [3Xdim[103X, [3XIT-number[103X ) [32X function[133X
  [33X[1;0Y[29X[2XMatGroupZClass[102X( [3XHermann-Mauguin-symbol[103X ) [32X function[133X
  
  [33X[0;0Yreturns  a  [22Xdim  × dim[122X matrix group [3XM[103X, say, which is a representative of the
  specified  [22Xℤ[122X-class.  Its  generators  satisfy  the  defining relators of the
  finitely  presented group which may be computed by calling the [10XFpGroupQClass[110X
  function (see above) for the [22Xℚ[122X-class which contains the given [22Xℤ[122X-class.[133X
  
  [33X[0;0YThe  generators  of  [3XM[103X  are  the  same matrices as those given in Table 1 of
  [BBN+78].  Note,  however, that they will be listed in reverse order to keep
  them  in  parallel  to the abstract generators provided by the [10XFpGroupQClass[110X
  function (see above).[133X
  
  [33X[0;0YBesides the usual components, [3XM[103X will have an attribute [10XCrystCatRecord[110X, which
  is  a  record  with two components. The first component is [10Xparameters[110X, which
  saves  a  list  of the parameters that specify the given [22Xℤ[122X-class. The second
  component  is  [10Xconjugator[110X,  whose  value  is  the identity element of [3XM[103X. Its
  purpose  is  to  make the resulting record consistent with those returned by
  the [10XNormalizerZClass[110X or [10XZClassRepsDadeGroup[110X functions described below.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XM := MatGroupZClass( 4, 20, 3, 1 );[127X[104X
    [4X[28XMatGroupZClass( 4, 20, 3, 1 )[128X[104X
    [4X[25Xgap>[125X [27Xfor g in GeneratorsOfGroup( M ) do[127X[104X
    [4X[25X>[125X [27X Print( "\n" ); PrintArray( g ); od; Print( "\n" );[127X[104X
    [4X[28X[128X[104X
    [4X[28X[ [   0,   1,   0,   0 ],[128X[104X
    [4X[28X  [  -1,   0,   0,   0 ],[128X[104X
    [4X[28X  [   0,   0,  -1,  -1 ],[128X[104X
    [4X[28X  [   0,   0,   0,   1 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28X[ [  -1,   0,   0,   0 ],[128X[104X
    [4X[28X  [   0,  -1,   0,   0 ],[128X[104X
    [4X[28X  [   0,   0,  -1,  -1 ],[128X[104X
    [4X[28X  [   0,   0,   1,   0 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XSize( M );[127X[104X
    [4X[28X12[128X[104X
    [4X[25Xgap>[125X [27XCrystCatRecord( M ).parameters;[127X[104X
    [4X[28X[ 4, 20, 3, 1 ][128X[104X
  [4X[32X[104X
  
  [1X1.6-4 NormalizerZClass[101X
  
  [33X[1;0Y[29X[2XNormalizerZClass[102X( [3Xdim[103X, [3Xsystem[103X, [3Xq-class[103X, [3Xz-class[103X ) [32X function[133X
  [33X[1;0Y[29X[2XNormalizerZClass[102X( [3Xdim[103X, [3XIT-number[103X ) [32X function[133X
  [33X[1;0Y[29X[2XNormalizerZClass[102X( [3XHermann-Mauguin-symbol[103X ) [32X function[133X
  
  [33X[0;0Yreturns  the normalizer [3XN[103X, say, in [22XGL(dim,ℤ)[122X of the representative [22Xdim × dim[122X
  matrix  group  which  is  constructed  by  the  [10XMatGroupZClass[110X function (see
  above).[133X
  
  [33X[0;0YIf the size of [3XN[103X is finite, then [3XN[103X again lies in some [22Xℤ[122X-class. In this case,
  [3XN[103X  will  have  an  attribute  [10XCrystCatRecord[110X,  which  is  a  record with two
  components, [10Xparameters[110X and [10Xconjugator[110X. These contain, respectively, the list
  of  parameters  of  that  [22Xℤ[122X-class, and a matrix [22Xg ∈ GL(dim,ℤ)[122X, such that [22XN =
  g^-1 R g[122X, where [22XR[122X is the representative group of that [22Xℤ[122X-class.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XN := NormalizerZClass( 4, 20, 3, 1 );[127X[104X
    [4X[28XNormalizerZClass( 4, 20, 3, 1 )[128X[104X
    [4X[25Xgap>[125X [27Xfor g in GeneratorsOfGroup( N ) do[127X[104X
    [4X[25X>[125X [27X Print( "\n" ); PrintArray( g ); od; Print( "\n" );[127X[104X
    [4X[28X[128X[104X
    [4X[28X[ [   1,   0,   0,   0 ],[128X[104X
    [4X[28X  [   0,   1,   0,   0 ],[128X[104X
    [4X[28X  [   0,   0,   1,   0 ],[128X[104X
    [4X[28X  [   0,   0,  -1,  -1 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28X[ [   1,   0,   0,   0 ],[128X[104X
    [4X[28X  [   0,  -1,   0,   0 ],[128X[104X
    [4X[28X  [   0,   0,  -1,  -1 ],[128X[104X
    [4X[28X  [   0,   0,   1,   0 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28X[ [   0,   1,   0,   0 ],[128X[104X
    [4X[28X  [  -1,   0,   0,   0 ],[128X[104X
    [4X[28X  [   0,   0,   1,   0 ],[128X[104X
    [4X[28X  [   0,   0,   0,   1 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28X[ [  -1,   0,   0,   0 ],[128X[104X
    [4X[28X  [   0,  -1,   0,   0 ],[128X[104X
    [4X[28X  [   0,   0,  -1,   0 ],[128X[104X
    [4X[28X  [   0,   0,   0,  -1 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XSize( N );[127X[104X
    [4X[28X96[128X[104X
    [4X[25Xgap>[125X [27XCrystCatRecord( N ).parameters;[127X[104X
    [4X[28X[ 4, 20, 22, 1 ][128X[104X
    [4X[25Xgap>[125X [27XCrystCatRecord( N ).conjugator = One( N );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XL := NormalizerZClass( 3, 42 );[127X[104X
    [4X[28XNormalizerZClass( 3, 3, 2, 4 )[128X[104X
    [4X[25Xgap>[125X [27XSize( L );[127X[104X
    [4X[28X16[128X[104X
    [4X[25Xgap>[125X [27XCrystCatRecord( L ).parameters;[127X[104X
    [4X[28X[ 3, 4, 7, 2 ][128X[104X
    [4X[25Xgap>[125X [27XCrystCatRecord( L ).conjugator;[127X[104X
    [4X[28X[ [ 0, 0, -1 ], [ 1, 0, 0 ], [ 0, -1, -1 ] ][128X[104X
    [4X[25Xgap>[125X [27XM := NormalizerZClass( "C2/m" );[127X[104X
    [4X[28X<matrix group of size infinity with 5 generators>[128X[104X
    [4X[25Xgap>[125X [27XSize( M );[127X[104X
    [4X[28Xinfinity[128X[104X
    [4X[25Xgap>[125X [27XHasCrystCatRecord( M );[127X[104X
    [4X[28Xfalse[128X[104X
  [4X[32X[104X
  
  
  [1X1.7 [33X[0;0YDade groups[133X[101X
  
  [33X[0;0YSome of the [22Xℤ[122X-classes of dimension [3Xd[103X, say, are [21Xmaximal[121X in the sense that the
  groups   in   these   classes  are  maximal  finite  subgroups  of  [22XGL(d,ℤ)[122X.
  Generalizing  a  term  which  is  being  used  for  dimension 4, we call the
  representatives of these maximal [22Xℤ[122X-classes the [13XDade groups[113X of dimension [22Xd[122X.[133X
  
  [1X1.7-1 NrDadeGroups[101X
  
  [33X[1;0Y[29X[2XNrDadeGroups[102X( [3Xdim[103X ) [32X function[133X
  
  [33X[0;0Yreturns  the  number  of  Dade  groups  of  dimension [3Xdim[103X. It can be used to
  formulate loops over the Dade groups.[133X
  
  [33X[0;0YThere are 2, 4, and 9 Dade groups of dimension 2, 3, and 4, respectively.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XNrDadeGroups( 4 );[127X[104X
    [4X[28X9[128X[104X
  [4X[32X[104X
  
  [1X1.7-2 DadeGroup[101X
  
  [33X[1;0Y[29X[2XDadeGroup[102X( [3Xdim[103X, [3Xn[103X ) [32X function[133X
  
  [33X[0;0Yreturns the [3Xn[103Xth Dade group of dimension [3Xdim[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XD := DadeGroup( 4, 7 );[127X[104X
    [4X[28XMatGroupZClass( 4, 31, 7, 2 )[128X[104X
  [4X[32X[104X
  
  [1X1.7-3 DadeGroupNumbersZClass[101X
  
  [33X[1;0Y[29X[2XDadeGroupNumbersZClass[102X( [3Xdim[103X, [3Xsystem[103X, [3Xq-class[103X, [3Xz-class[103X ) [32X function[133X
  [33X[1;0Y[29X[2XDadeGroupNumbersZClass[102X( [3Xdim[103X, [3XIT-number[103X ) [32X function[133X
  [33X[1;0Y[29X[2XDadeGroupNumbersZClass[102X( [3XHermann-Mauguin-symbol[103X ) [32X function[133X
  
  [33X[0;0Yreturns  the set of all those integers [22Xn_i[122X for which the [22Xn_i[122Xth Dade group of
  dimension  [3Xdim[103X  contains a subgroup which, in [22XGL(dim,ℤ)[122X, is conjugate to the
  representative group of the given [22Xℤ[122X-class.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XdadeNums := DadeGroupNumbersZClass( 4, 4, 1, 2 );[127X[104X
    [4X[28X[ 1, 5, 8 ][128X[104X
    [4X[25Xgap>[125X [27Xfor d in dadeNums do[127X[104X
    [4X[25X>[125X [27X    D := DadeGroup( 4, d );[127X[104X
    [4X[25X>[125X [27X    Print( D, " of size ", Size( D ), "\n" );[127X[104X
    [4X[25X>[125X [27Xod;[127X[104X
    [4X[28XMatGroupZClass( 4, 20, 22, 1 ) of size 96[128X[104X
    [4X[28XMatGroupZClass( 4, 30, 13, 1 ) of size 288[128X[104X
    [4X[28XMatGroupZClass( 4, 32, 21, 1 ) of size 384[128X[104X
  [4X[32X[104X
  
  [1X1.7-4 ZClassRepsDadeGroup[101X
  
  [33X[1;0Y[29X[2XZClassRepsDadeGroup[102X( [3Xdim[103X, [3Xsystem[103X, [3Xq-class[103X, [3Xz-class[103X, [3Xn[103X ) [32X function[133X
  [33X[1;0Y[29X[2XZClassRepsDadeGroup[102X( [3Xdim[103X, [3XIT-number[103X, [3Xn[103X ) [32X function[133X
  [33X[1;0Y[29X[2XZClassRepsDadeGroup[102X( [3XHermann-Mauguin-symbol[103X, [3Xn[103X ) [32X function[133X
  
  [33X[0;0Ydetermines  in  the  [3Xn[103Xth  Dade  group  of  dimension [3Xdim[103X all those conjugacy
  classes   whose   groups   are,  in  [22XGL(dim,ℤ)[122X,  conjugate  to  the  [22Xℤ[122X-class
  representative  group  [3XR[103X,  say,  of  the given [22Xℤ[122X-class. It returns a list of
  representative groups of these conjugacy classes.[133X
  
  [33X[0;0YLet  [3XM[103X  be  any  group  in  the  resulting  list.  [3XM[103X  then  has an attribute
  [10XCrystCatRecord[110X,  which  is  a  record  with  two  components.  The component
  [10Xparameters[110X  is the list of parameters of the [22Xℤ[122X-class of [3XR[103X, and [10Xconjugator[110X is
  a  suitable matrix [3Xg[103X from [22XGL(dim,ℤ)[122X, respectively, such that [3XM[103X equals [22Xg^-1 R
  g[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XDadeGroupNumbersZClass( 2, 2, 1, 2 );[127X[104X
    [4X[28X[ 1, 2 ][128X[104X
    [4X[25Xgap>[125X [27XZClassRepsDadeGroup( 2, 2, 1, 2, 1 );[127X[104X
    [4X[28X[ MatGroupZClass( 2, 2, 1, 2 )^[ [ 0, 1 ], [ -1, 0 ] ] ][128X[104X
    [4X[25Xgap>[125X [27XZClassRepsDadeGroup( 2, 2, 1, 2, 2 );[127X[104X
    [4X[28X[ MatGroupZClass( 2, 2, 1, 2 )^[ [ 1, -1 ], [ 0, -1 ] ], [128X[104X
    [4X[28X  MatGroupZClass( 2, 2, 1, 2 )^[ [ 1, 0 ], [ -1, 1 ] ] ][128X[104X
    [4X[25Xgap>[125X [27XR := last[2];;[127X[104X
    [4X[25Xgap>[125X [27XCrystCatRecord( R ).parameters;[127X[104X
    [4X[28X[ 2, 2, 1, 2 ][128X[104X
    [4X[25Xgap>[125X [27XCrystCatRecord( R ).conjugator;[127X[104X
    [4X[28X[ [ 1, 0 ], [ -1, 1 ] ][128X[104X
  [4X[32X[104X
  
  
  [1X1.8 [33X[0;0YSpace groups and space group types[133X[101X
  
  [1X1.8-1 NrSpaceGroupTypesZClass[101X
  
  [33X[1;0Y[29X[2XNrSpaceGroupTypesZClass[102X( [3Xdim[103X, [3Xsystem[103X, [3Xq-class[103X, [3Xz-class[103X ) [32X function[133X
  [33X[1;0Y[29X[2XNrSpaceGroupTypesZClass[102X( [3Xdim[103X, [3XIT-number[103X ) [32X function[133X
  [33X[1;0Y[29X[2XNrSpaceGroupTypesZClass[102X( [3XHermann-Mauguin-symbol[103X ) [32X function[133X
  
  [33X[0;0Yreturns  the number of space-group types within the given [22Xℤ[122X-class. It can be
  used to formulate loops over the space-group types.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XN := NrSpaceGroupTypesZClass( 4, 4, 1, 1 );[127X[104X
    [4X[28X13[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe following functions are functions of space-group types.[133X
  
  [33X[0;0YIn  general,  the  parameters  characterizing a space-group type will form a
  quintuple  ([3Xdim[103X,  [3Xsystem[103X,  [3Xq-class[103X,  [3Xz-class[103X,  [3Xsg-type[103X)  where  [3Xdim[103X  is  the
  associated dimension, [3Xsystem[103X is the number of the associated crystal system,
  [3Xq-class[103X  is  the number of the associated [22Xℚ[122X-class within the crystal system,
  [3Xz-class[103X  is the number of the [22Xℤ[122X-class within the [22Xℚ[122X-class, and [3Xsg-type[103X is the
  space-group  type within the [22Xℤ[122X-class. However, in case of dimensions 2 or 3,
  you  may  instead  specify  a  [22Xℤ[122X-class  by a pair ([3Xdim[103X, [3XIT-number[103X) or by its
  Hermann-Mauguin  symbol  (as described above). Then the function will handle
  the  first space-group type within that [22Xℤ[122X-class, i.e., [3Xsg-type[103X = 1, that is,
  the corresponding symmorphic space group (split extension).[133X
  
  [1X1.8-2 DisplaySpaceGroupType[101X
  
  [33X[1;0Y[29X[2XDisplaySpaceGroupType[102X( [3Xdim[103X, [3Xsystem[103X, [3Xq-class[103X, [3Xz-class[103X, [3Xsg-type[103X ) [32X function[133X
  [33X[1;0Y[29X[2XDisplaySpaceGroupType[102X( [3Xdim[103X, [3XIT-number[103X ) [32X function[133X
  [33X[1;0Y[29X[2XDisplaySpaceGroupType[102X( [3XHermann-Mauguin-symbol[103X ) [32X function[133X
  
  [33X[0;0Ydisplays for the specified space-group type some of the information which is
  provided for that space-group type in Table 1 of [BBN+78], namely[133X
  
  [30X    [33X[0;6Ythe orbit size associated with that space-group type and,[133X
  
  [30X    [33X[0;6Yfor dimensions 2 and 3, the [3XIT-number[103X and the Hermann-Mauguin symbol.[133X
  
  [33X[0;0YFor details see [BBN+78].[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XDisplaySpaceGroupType( 2, 17 );[127X[104X
    [4X[28X#I     Space-group type (2,4,4,1,1); IT(17) = p6mm; orbit size 1[128X[104X
    [4X[25Xgap>[125X [27XDisplaySpaceGroupType( "Pm-3" );[127X[104X
    [4X[28X#I     Space-group type (3,7,2,1,1); IT(200) = Pm-3; orbit size 1[128X[104X
    [4X[25Xgap>[125X [27XDisplaySpaceGroupType( 4, 32, 10, 2, 4 );[127X[104X
    [4X[28X#I    *Space-group type (4,32,10,2,4); orbit size 18[128X[104X
    [4X[25Xgap>[125X [27XDisplaySpaceGroupType( 3, 6, 1, 1, 4 );[127X[104X
    [4X[28X#I    *Space-group type (3,6,1,1,4); IT(169) = P61, IT(170) = P65;[128X[104X
    [4X[28X#I      orbit size 2; fp-free[128X[104X
  [4X[32X[104X
  
  [1X1.8-3 DisplaySpaceGroupGenerators[101X
  
  [33X[1;0Y[29X[2XDisplaySpaceGroupGenerators[102X( [3Xdim[103X, [3Xsystem[103X, [3Xq-class[103X, [3Xz-class[103X, [3Xsg-type[103X ) [32X function[133X
  [33X[1;0Y[29X[2XDisplaySpaceGroupGenerators[102X( [3Xdim[103X, [3XIT-number[103X ) [32X function[133X
  [33X[1;0Y[29X[2XDisplaySpaceGroupGenerators[102X( [3XHermann-Mauguin-symbol[103X ) [32X function[133X
  
  [33X[0;0Ydisplays  the  non-translation generators of a representative space group of
  the  specified  space-group  type  without actually constructing that matrix
  group.  The  generators are given in the representation acting from the left
  on column vectors.[133X
  
  [33X[0;0YIn more detail: Let [3Xn[103X = [3Xdim[103X be the given dimension, and let [22XM_1, ..., M_r[122X be
  the generators of the representative [22Xn × n[122X matrix group of the given [22Xℤ[122X-class
  (this  is  the  group  which  you  will  get  if you call the [10XMatGroupZClass[110X
  function  (see  above)  for  that  [22Xℤ[122X-class). Then, for the given space-group
  type,  the  [10XSpaceGroupOnLeftBBNWZ[110X function described below will construct as
  representative  of that space-group type an [22X(n+1) × (n+1)[122X matrix group which
  is generated by the [3Xn[103X translations which are induced by the (standard) basis
  vectors of the [3Xn[103X-dimensional Euclidean space, and [3Xr[103X additional matrices [22XS_1,
  ...,  S_r[122X  of  the  form [22XS_i = [matrix M_i & t_i cr 0 & 1 ][122X, where the [22Xn × n[122X
  submatrices  [22XM_i[122X  are  as  defined  above,  and  the  [22Xt_i[122X are [3Xn[103X-columns with
  rational entries. The [10XDisplaySpaceGroupGenerators[110X function saves time by not
  constructing the group, but just displaying the [22Xr[122X matrices [22XS_1,..., S_r[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XDisplaySpaceGroupGenerators( "P61" );[127X[104X
    [4X[28X#I  Non-translation generators of SpaceGroupOnLeftBBNWZ( 3, 6, 1, 1, 4 )[128X[104X
    [4X[28X[128X[104X
    [4X[28X[ [   -1,    0,    0,    0 ],[128X[104X
    [4X[28X  [    0,   -1,    0,    0 ],[128X[104X
    [4X[28X  [    0,    0,    1,  1/2 ],[128X[104X
    [4X[28X  [    0,    0,    0,    1 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28X[ [    0,   -1,    0,    0 ],[128X[104X
    [4X[28X  [    1,   -1,    0,    0 ],[128X[104X
    [4X[28X  [    0,    0,    1,  1/3 ],[128X[104X
    [4X[28X  [    0,    0,    0,    1 ] ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X1.8-4 SpaceGroupOnLeftBBNWZ[101X
  
  [33X[1;0Y[29X[2XSpaceGroupOnLeftBBNWZ[102X( [3Xdim[103X, [3Xsystem[103X, [3Xq-class[103X, [3Xz-class[103X, [3Xsg-type[103X ) [32X function[133X
  [33X[1;0Y[29X[2XSpaceGroupOnLeftBBNWZ[102X( [3Xdim[103X, [3XIT-number[103X ) [32X function[133X
  [33X[1;0Y[29X[2XSpaceGroupOnLeftBBNWZ[102X( [3XHermann-Mauguin-symbol[103X ) [32X function[133X
  
  [33X[0;0Yreturns  a  representative,  [3XS[103X,  of  the  space  group type specified by the
  arguments.  [3XS[103X  is  returned  in the form of an [10XAffineCrystGroupOnLeft[110X, which
  acts  from  the  left  on  column  vectors  (see also the description of the
  [10XDisplaySpaceGroupGenerators[110X  function  above).  The  package  [5XCryst[105X provides
  methods for the computation with space groups.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS := SpaceGroupOnLeftBBNWZ( "P61" );[127X[104X
    [4X[28XSpaceGroupOnLeftBBNWZ( 3, 6, 1, 1, 4 )[128X[104X
    [4X[25Xgap>[125X [27Xfor s in GeneratorsOfGroup( S ) do[127X[104X
    [4X[25X>[125X [27X Print( "\n" ); PrintArray( s ); od; Print( "\n" );[127X[104X
    [4X[28X[128X[104X
    [4X[28X[ [   -1,    0,    0,    0 ],[128X[104X
    [4X[28X  [    0,   -1,    0,    0 ],[128X[104X
    [4X[28X  [    0,    0,    1,  1/2 ],[128X[104X
    [4X[28X  [    0,    0,    0,    1 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28X[ [    0,   -1,    0,    0 ],[128X[104X
    [4X[28X  [    1,   -1,    0,    0 ],[128X[104X
    [4X[28X  [    0,    0,    1,  1/3 ],[128X[104X
    [4X[28X  [    0,    0,    0,    1 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28X[ [  1,  0,  0,  1 ],[128X[104X
    [4X[28X  [  0,  1,  0,  0 ],[128X[104X
    [4X[28X  [  0,  0,  1,  0 ],[128X[104X
    [4X[28X  [  0,  0,  0,  1 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28X[ [  1,  0,  0,  0 ],[128X[104X
    [4X[28X  [  0,  1,  0,  1 ],[128X[104X
    [4X[28X  [  0,  0,  1,  0 ],[128X[104X
    [4X[28X  [  0,  0,  0,  1 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28X[ [  1,  0,  0,  0 ],[128X[104X
    [4X[28X  [  0,  1,  0,  0 ],[128X[104X
    [4X[28X  [  0,  0,  1,  1 ],[128X[104X
    [4X[28X  [  0,  0,  0,  1 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XCrystCatRecord( S ).parameters;[127X[104X
    [4X[28X[ 3, 6, 1, 1, 4 ][128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe  resulting  group  has  an  attribute  [10XCrystCatRecord[110X,  whose  component
  [10Xparameters[110X specifies the given space-group type.[133X
  
  [1X1.8-5 SpaceGroupOnRightBBNWZ[101X
  
  [33X[1;0Y[29X[2XSpaceGroupOnRightBBNWZ[102X( [3Xdim[103X, [3Xsystem[103X, [3Xq-class[103X, [3Xz-class[103X, [3Xsg-type[103X ) [32X function[133X
  [33X[1;0Y[29X[2XSpaceGroupOnRightBBNWZ[102X( [3Xdim[103X, [3XIT-number[103X ) [32X function[133X
  [33X[1;0Y[29X[2XSpaceGroupOnRightBBNWZ[102X( [3XHermann-Mauguin-symbol[103X ) [32X function[133X
  [33X[1;0Y[29X[2XSpaceGroupOnRightBBNWZ[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Yreturns  a  representative,  [3XT[103X,  of  the  space  group type specified by the
  arguments.  [3XT[103X  is  returned in the form of an [10XAffineCrystGroupOnRight[110X, which
  acts  from  the right on row vectors. The generators of [3XT[103X are the transposed
  generators  (in  the same order) of the corresponding [10XSpaceGroupOnLeftBBNWZ[110X,
  [3XS[103X,  specified  by  the same arguments. The space group [3XS[103X is also accepted as
  argument.  The package [5XCryst[105X provides methods for the computation with space
  groups.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XT := SpaceGroupOnRightBBNWZ( S );[127X[104X
    [4X[28XSpaceGroupOnRightBBNWZ( 3, 6, 1, 1, 4 )[128X[104X
    [4X[25Xgap>[125X [27Xfor m in GeneratorsOfGroup( T ) do[127X[104X
    [4X[25X>[125X [27X Print( "\n" ); PrintArray( m ); od; Print( "\n" );[127X[104X
    [4X[28X[128X[104X
    [4X[28X[ [   -1,    0,    0,    0 ],[128X[104X
    [4X[28X  [    0,   -1,    0,    0 ],[128X[104X
    [4X[28X  [    0,    0,    1,    0 ],[128X[104X
    [4X[28X  [    0,    0,  1/2,    1 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28X[ [    0,    1,    0,    0 ],[128X[104X
    [4X[28X  [   -1,   -1,    0,    0 ],[128X[104X
    [4X[28X  [    0,    0,    1,    0 ],[128X[104X
    [4X[28X  [    0,    0,  1/3,    1 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28X[ [  1,  0,  0,  0 ],[128X[104X
    [4X[28X  [  0,  1,  0,  0 ],[128X[104X
    [4X[28X  [  0,  0,  1,  0 ],[128X[104X
    [4X[28X  [  1,  0,  0,  1 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28X[ [  1,  0,  0,  0 ],[128X[104X
    [4X[28X  [  0,  1,  0,  0 ],[128X[104X
    [4X[28X  [  0,  0,  1,  0 ],[128X[104X
    [4X[28X  [  0,  1,  0,  1 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28X[ [  1,  0,  0,  0 ],[128X[104X
    [4X[28X  [  0,  1,  0,  0 ],[128X[104X
    [4X[28X  [  0,  0,  1,  0 ],[128X[104X
    [4X[28X  [  0,  0,  1,  1 ] ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X1.8-6 SpaceGroupBBNWZ[101X
  
  [33X[1;0Y[29X[2XSpaceGroupBBNWZ[102X( [3Xdim[103X, [3Xsystem[103X, [3Xq-class[103X, [3Xz-class[103X, [3Xsg-type[103X ) [32X function[133X
  [33X[1;0Y[29X[2XSpaceGroupBBNWZ[102X( [3Xdim[103X, [3XIT-number[103X ) [32X function[133X
  [33X[1;0Y[29X[2XSpaceGroupBBNWZ[102X( [3XHermann-Mauguin-symbol[103X ) [32X function[133X
  
  [33X[0;0Ycalls  either  [10XSpaceGroupOnLeftBBNWZ[110X or [10XSpaceGroupOnRightBBNWZ[110X with the same
  arguments, depending on the value of the variable [10XCrystGroupDefaultAction[110X.[133X
  
  [1X1.8-7 FpGroupSpaceGroupBBNWZ[101X
  
  [33X[1;0Y[29X[2XFpGroupSpaceGroupBBNWZ[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Yreturns a finitely presented group [3XG[103X, say, which is isomorphic to [3XS[103X, where [3XS[103X
  is expected to be a space group from the BBNWZ catalog (acting from the left
  or from the right). It is chosen such that there is an isomorphism from [3XG[103X to
  [3XS[103X which maps each generator of [3XG[103X onto the corresponding generator of [3XS[103X. This
  means,  in  particular, that the matrix generators of [3XS[103X satisfy the relators
  of  [3XG[103X.  If  the  factor  group  of  [3XS[103X  by its translation normal subgroup is
  solvable,  then  the  presentation returned is a polycyclic power commutator
  presentation.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := FpGroupSpaceGroupBBNWZ( S );    [127X[104X
    [4X[28XFpGroupSpaceGroupOnLeftBBNWZ( 3, 6, 1, 1, 4 )[128X[104X
    [4X[25Xgap>[125X [27Xfor rel in RelatorsOfFpGroup( G ) do Print( rel, "\n" ); od;[127X[104X
    [4X[28Xg1^2*g5^-1[128X[104X
    [4X[28Xg2^3*g5^-1[128X[104X
    [4X[28Xg2^-1*g1^-1*g2*g1[128X[104X
    [4X[28Xg3^-1*g1^-1*g3*g1*g3^2[128X[104X
    [4X[28Xg3^-1*g2^-1*g3*g2*g4*g3^2[128X[104X
    [4X[28Xg4^-1*g1^-1*g4*g1*g4^2[128X[104X
    [4X[28Xg4^-1*g2^-1*g4*g2*g4*g3^-1[128X[104X
    [4X[28Xg4^-1*g3^-1*g4*g3[128X[104X
    [4X[28Xg5^-1*g1^-1*g5*g1[128X[104X
    [4X[28Xg5^-1*g2^-1*g5*g2[128X[104X
    [4X[28Xg5^-1*g3^-1*g5*g3[128X[104X
    [4X[28Xg5^-1*g4^-1*g5*g4[128X[104X
    [4X[25Xgap>[125X [27X# Verify that the matrix generators of S satisfy the relators of G.[127X[104X
    [4X[25Xgap>[125X [27XForAll( RelatorsOfFpGroup( G ), rel -> One(S) =[127X[104X
    [4X[25X>[125X [27X MappedWord( rel, FreeGeneratorsOfFpGroup(G), GeneratorsOfGroup(S) ) );[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [33X[0;0Y [133X
  
