1\def\x{\times} 2\hyphenation{Cryst-Cat-Record} 3 4%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 5\Chapter{The Crystallographic Groups Catalog} 6 7\index{crystallographic groups} 8\index{crystcat} 9 10The package {\CrystCat} provides a catalog of crystallographic groups 11of dimensions 2, 3, and 4 which covers most of the data contained 12in the book ``Crystallographic groups of four-dimensional space'' 13\cite{BBNWZ78}. It has been brought into {\GAP} format by Volkmar 14Felsch. 15 16The {\GAP} 4 version of the catalog requires the package {\Cryst}, 17which is loaded automatically. The benefit of this is that space groups 18extracted from the catalog now have the rich set of methods provided 19by {\Cryst} at their disposal, and are no longer dumb lists of generators. 20Moreover, space groups are now fully supported in both the representation 21acting from the left and the representation acting from the right. 22 23In 2001, Bernd Souvignier has discovered an error in the above mentioned 24book: On page 118, in the tabulation of enantiomorphic space-group types, 25it is wrongly claimed that the (affine) four-dimensional space-group 26type 08/01/01/002 splits into an enantiomorphic pair of (proper) 27space-group types. This is indicated by an asterisk preceding the 28space-group number. This asterisk has to be removed. As a 29consequence, the number of four-dimensional space-group types 30splitting into enantiomorphic pairs (given on page 11 and page 52 31of the book) reduces from 112 to 111. An erratum has been submitted 32to {\it Acta Cryst.}. 33 34The only implication of this correction for the package {\CrystCat} 35is that the output of the function 36\begintt 37DisplaySpaceGroupType( 4, 8, 1, 1, 2 ); 38\endtt 39had to be changed from 40\begintt 41#I *Space-group type (4,8,1,1,2); orbit size 2; fp-free 42\endtt 43to 44\begintt 45#I Space-group type (4,8,1,1,2); orbit size 2; fp-free 46\endtt 47This has been done in the release {\GAP} 4.3. 48 49%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 50\Section{How to access the data of the book} 51 52Among others, the catalog offers functions which provide access to the 53data listed in the Tables 1, 5, and 6 of \cite{BBNWZ78}: 54 55\beginlist%unordered 56\item{$\bullet$} 57 The information on the crystal families listed in Table 1 can 58 be reproduced using the `DisplayCrystalFamily' function. 59\item{$\bullet$} 60 Similarly, the `DisplayCrystalSystem' function can be 61 used to reproduce the information on the crystal systems 62 provided in Table 1. 63\item{$\bullet$} 64 The information given in the $\Q$-class headlines of 65 Table 1 can be displayed by the `DisplayQClass' function, 66 whereas the `FpGroupQClass' function can be used to reproduce 67 the presentations that are listed in Table 1 for the $\Q$-class 68 representatives. 69\item{$\bullet$} 70 The information given in the $\Z$-class headlines of Table 1 71 will be covered by the results of the `DisplayZClass' function, 72 and the matrix generators of the $\Z$-class representatives can 73 be constructed by calling the `MatGroupZClass' function. 74\item{$\bullet$} 75 The `DisplaySpaceGroupType' and the 76 `DisplaySpaceGroupGenerators' functions can be used to 77 reproduce all of the information on the space-group types that 78 is provided in Table 1. 79\item{$\bullet$} 80 The normalizers listed in Table 5 can be reproduced by 81 calling the `NormalizerZClass' function. 82\item{$\bullet$} 83 Finally, the `CharTableQClass' function will compute the 84 character tables listed in Table 6, whereas the isomorphism 85 types given in Table 6 may be obtained by calling the 86 `DisplayQClass' function. 87\endlist 88 89The display functions mentioned in the above list print their output 90with different indentation. So, calling them in a suitably nested 91loop, you may produce a listing in which the information about the 92objects of different type will be properly indented as has been done 93in Table 1 of \cite{BBNWZ78}. 94 95%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 96\Section{Representation of space groups} 97 98Probably the most important function in the catalog is the 99`SpaceGroupBBNWZ' function which provides representatives of the 100affine classes of space groups. A space group of dimension $n$ is 101represented by an $(n+1)$-dimensional rational matrix group as 102follows. 103 104If $S$ is an $n$-dimensional space group, then each element $s$ 105in $S$ is an affine mapping $s: V \to V$ of an $n$-dimensional 106$\R$-vector space $V$ onto itself. Hence $s$ can be written as 107the product of an appropriate invertible linear mapping 108$g: V \to V$ and a translation by some translation 109vector $t \in V$ such that, if we write mappings from the left, 110we have $s(v) = g(v) + t$ for all $v \in V$. 111 112If we fix a basis of $V$ and then replace each $v \in V$ by the column 113vector of its coefficients with respect to that basis (and hence $V$ 114by the isomorphic column vector space $\R^{n \x 1}$), we can describe 115the linear mapping $g$ involved in $s$ by an $n \x n$ matrix 116$M_g \in GL_n(\R)$ which acts by multiplication from the left on 117the column vectors in $\R^{n \x 1}$. Hence, if we identify $V$ with 118$\R^{n \x 1}$, we have $s(v) = M_g v + t$ for all 119$v \in \R^{n \x 1}$. 120 121Moreover, if we extend each column vector $v \in \R^{n \x 1}$ to a 122column $[ [ v ], [ 1 ] ]$ of length $n+1$ by adding an entry 1 123in the last position and if we define an $(n+1) \x (n+1)$ matrix 124$M_s = [ [ M_g, t ], [ 0, 1 ] ]$, we have $[ [ s(v) ], [ 1 ] ] = 125M_s [ [ v ], [ 1 ] ]$ for all $v \in \R^{n \x 1}$. This means that 126we can represent the space group $S$ by the isomorphic group 127$M(S) = \{ M_s | s \in S \}$. The submatrices $M_g$ occurring in 128the elements of $M(S)$ form an $n \x n$ matrix group $P(S)$, the 129``point group'' of $M(S)$. In fact, we can choose the basis of 130$\R^{n \x 1}$ such that $M_g \in GL_n(\Z)$ and $t \in \Q^{n \x 1}$ 131for all $M_s \in M(S)$. In particular, the space group 132representatives that are normally used by the crystallographers 133are of this form, and the book \cite{BBNWZ78} uses the same convention. 134 135The representation described above is the one usually used by 136crystallographers. There is, however, an alternative to the 137representation of the space group elements by matrices of the form 138$[ [ M_g, t ], [ 0, 1 ] ]$ as described above. Instead of 139considering the coefficient vectors as columns we may consider 140them as rows. Then we can associate to each affine mapping 141$s \in S$ an $(n+1) \x (n+1)$ matrix $M\pif_s = 142[ [ M\pif_{g\pif}, 0 ], [ t\pif, 1 ] ]$ with 143$M\pif_{g\pif} \in GL_n(\R)$ and $t\pif \in \R^{1 \x n}$ such 144that $[s(v\pif),1] = [v\pif,1] M\pif_s$ for all 145$v\pif \in \R^{1 \x n}$, and we may represent $S$ by the matrix 146group $M\pif(S) = \{ M\pif_s | s \in S \}$. Again, we can choose 147the basis of $\R^{1 \x n}$ such that $M\pif_{g\pif} \in GL_n(\Z)$ 148and $t\pif \in \Q^{1 \x n}$ for all $M\pif_s \in M\pif(S)$. 149 150From the mathematical point of view, both approaches are equivalent. 151In particular, $M(S)$ and $M\pif(S)$ are isomorphic, for instance 152via the isomorphism $\tau$ mapping $M_s \in M(S)$ to 153$(M_s^{tr})^{-1}$. Unfortunately, however, neither of the two 154is a good choice for our {\GAP} catalog. 155 156The first convention, using matrices which act on column vectors from 157the left, is not consistent with the fact that actions in {\GAP} are 158usually from the right. 159 160On the other hand, if we choose the second convention, we run into a 161problem with the names of the space groups as introduced in 162\cite{BBNWZ78}. Any such name does not just describe the abstract 163isomorphism type of the respective space group $S$, but reflects 164properties of the matrix group $M(S)$. In particular, it contains as 165a leading part the name of the $\Z$-class of the associated point 166group $P(S)$. Since the classification of space groups by affine 167equivalence is tantamount to their classification by abstract 168isomorphism, $M\pif(S)$ lies in the same affine class as $M(S)$ and 169hence should get the same name as $M(S)$. But the point group $P(S)$ 170that occurs in that name is not always $\Z$-equivalent to the point 171group $P\pif(S)$ of $M\pif(S)$. For example, the isomorphism $\tau: 172M(S) \to M\pif(S)$ defined above maps the $\Z$-class representative 173with the parameters $[3,7,3,2]$ (in the notation described below) to 174the $\Z$-class representative with the parameters $[3,7,3,3]$. In 175other words:\ The space group names introduced for the groups $M(S)$ 176in \cite{BBNWZ78} lead to confusing inconsistencies if assigned to the 177groups $M\pif(S)$. 178 179In order to avoid this confusion we decided that the first convention 180is the lesser evil, and so the {\GAP} catalog follows the book. In 181particular, all functions listed in section "How to access the data 182of the book" use the convention of the book. The space groups, however, 183can be constructed in both representations, so that the user can choose 184the one that seems more appropriate in the particular situation. 185The function `SpaceGroupOnLeftBBNWZ' constructs a space group in 186the ``crystallographic'' representation acting on the left, 187whereas `SpaceGroupOnRightBBNWZ' constructs a space group in the 188representation acting on the right, as preferred by GAP. In order to 189avoid long function names (and in order to avoid mixing groups in 190different representations), one can set one{\pif}s own default 191with the function `SetCrystGroupDefaultAction' 192(see "ref:SetCrystGroupDefaultAction"), 193which takes as argument either `LeftAction' of `RightAction'. 194`SpaceGroupBBNWZ' then constructs a space group in this default 195representation. Initially, the default is `RightAction'. 196 197The space groups constructed from the catalog are matrix groups, which 198in addition have the property `IsAffineCrystGroupOnLeft' (or 199`IsAffineCrystGroupOnRight', respectively). The package {\Cryst} 200provides methods to compute with such groups. {\Cryst} is necessary 201for any serious computation with space groups, because the support of 202plain {\GAP} for infinite matrix groups (such as space groups) is very 203limited. 204 205Before we describe all available catalog functions in detail, we have 206to add two remarks. 207 208*Remark 1:* 209The concepts used in this section are defined in chapter 1 (Basic 210definitions) of \cite{BBNWZ78}. However, note that the definition of the 211concept of a crystal system given on page 16 of that book relies on the 212following statement about $\Q$-classes: 213 214\beginitems 215& For a $\Q$-class <C> there is a unique holohedry <H> such that 216 each f.u. group in <C> is a subgroup of some f.u. group in 217 <H>, but is not a subgroup of any f.u. group belonging to a 218 holohedry of smaller order. 219\enditems 220 221This statement is correct for dimensions 1, 2, 3, and 4, and hence the 222definition of ``crystal system'' given on page 16 of \cite{BBNWZ78} is 223known to be unambiguous for these dimensions. However, there is a 224counterexample to this statement in seven-dimensional space so that the 225definition breaks down for some higher dimensions. 226 227Therefore, the authors of the book have since proposed to replace this 228definition of ``crystal system'' by the following much simpler one, 229which has been discussed in more detail in \cite{NPW81}. To formulate it, 230we use the intersections of $\Q$-classes and Bravais flocks as 231introduced on page 17 of \cite{BBNWZ78}, and we define the classification 232of the set of all $\Z$-classes into crystal systems as follows: 233 234\beginitems 235& *Definition*:\ A crystal system (introduced as an equivalence 236 class of $\Z$-classes) consists of full geometric crystal 237 classes. The $\Z$-classes of two (geometric) crystal classes 238 belong to the same crystal system if and only if these geometric 239 crystal classes intersect the same set of Bravais flocks of 240 $\Z$-classes. 241\enditems 242 243From this definition of a crystal system of $\Z$-classes one then 244obtains crystal systems of f.u. groups, of space-group types, and of 245space groups in the same manner as with the preceding definitions in the 246book. 247 248The new definition is unambiguous for all dimensions. Moreover, it can be 249checked from the tables in the book that it defines the same 250classification as the old one for dimensions 1, 2, 3, and 4. 251 252It should be noted that the concept of crystal family is well-defined 253independently of the dimension if one uses the ``more natural'' second 254definition of it at the end of page 17. Moreover, the first definition of 255crystal family on page 17 defines the same concept as the second one if 256the now proposed definition of crystal system is used. 257 258 259*Remark 2:* 260The second remark just concerns a different terminology in the tables of 261\cite{BBNWZ78} and in the current catalog. In group theory, the number of 262elements of a finite group usually is called the ``order'' of the 263group. This notation has been used throughout in the book. Here, 264however, we will follow the {\GAP} conventions and use the term 265``size'' instead. 266 267 268%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 269\Section{Crystal Families} 270 271\>NrCrystalFamilies( <dim> ) 272 273returns the number of crystal families in case of dimension <dim>. It 274can be used to formulate loops over the crystal families. 275 276There are 4, 6, and 23 crystal families of dimension 2, 3, and 4, 277respectively. 278 279\beginexample 280gap> n := NrCrystalFamilies( 4 ); 28123 282\endexample 283 284\>DisplayCrystalFamily( <dim>, <family> ) 285 286displays for the specified crystal family essentially the same 287information as is provided for that family in Table 1 of 288\cite{BBNWZ78}, namely 289 290\beginlist%unordered 291\item{$\bullet$} the family name, 292 293\item{$\bullet$} the number of parameters, 294 295\item{$\bullet$} the common rational decomposition pattern, 296 297\item{$\bullet$} the common real decomposition pattern, 298 299\item{$\bullet$} the number of crystal systems in the family, and 300 301\item{$\bullet$} the number of Bravais flocks in the family. 302\endlist 303 304For details see \cite{BBNWZ78}. 305 306\beginexample 307gap> DisplayCrystalFamily( 4, 17 ); 308#I Family XVII: cubic orthogonal; 2 free parameters; 309#I Q-decomposition pattern 1+3; R-decomposition pattern 1+3; 310#I 2 crystal systems; 6 Bravais flocks 311gap> DisplayCrystalFamily( 4, 18 ); 312#I Family XVIII: octagonal; 2 free parameters; 313#I Q-irreducible; R-decomposition pattern 2+2; 314#I 1 crystal system; 1 Bravais flock 315gap> DisplayCrystalFamily( 4, 21 ); 316#I Family XXI: di-isohexagonal orthogonal; 1 free parameter; 317#I R-irreducible; 2 crystal systems; 2 Bravais flocks 318\endexample 319 320%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 321\Section{Crystal Systems} 322 323\>NrCrystalSystems( <dim> ) 324 325returns the number of crystal systems in case of dimension <dim>. It 326can be used to formulate loops over the crystal systems. 327 328There are 4, 7, and 33 crystal systems of dimension 2, 3, and 4, 329respectively. 330 331\beginexample 332gap> n := NrCrystalSystems( 2 ); 3334 334\endexample 335 336The following two functions are functions of crystal systems. 337 338Each crystal system is characterized by a pair (<dim>, <system>) where 339<dim> is the associated dimension, and <system> is the number of the 340crystal system. 341 342\>DisplayCrystalSystem( <dim>, <system> ) 343 344displays for the specified crystal system essentially the same 345information as is provided for that system in Table 1 of 346\cite{BBNWZ78}, namely 347 348\beginlist%unordered 349\item{$\bullet$} 350 the number of $\Q$-classes in the crystal system and 351\item{$\bullet$} 352 the identification number, i.~e., the triple (<dim>, <system>, 353 <q-class>) described below, of the $\Q$-class that is the 354 holohedry of the crystal system. 355\endlist 356 357For details see \cite{BBNWZ78}. 358 359\beginexample 360gap> for sys in [ 1 .. 4 ] do DisplayCrystalSystem( 2, sys ); od; 361#I Crystal system 1: 2 Q-classes; holohedry (2,1,2) 362#I Crystal system 2: 2 Q-classes; holohedry (2,2,2) 363#I Crystal system 3: 2 Q-classes; holohedry (2,3,2) 364#I Crystal system 4: 4 Q-classes; holohedry (2,4,4) 365\endexample 366 367%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 368\Section{Q-Classes} 369 370\>NrQClassesCrystalSystem( <dim>, <system> ) 371 372returns the number of $\Q$-classes within the given crystal system. 373It can be used to formulate loops over the $\Q$-classes. 374 375The following five functions are functions of $\Q$-classes. 376 377In general, the parameters characterizing a $\Q$-class will form a 378triple (<dim>, <system>, <q-class>) where <dim> is the associated 379dimension, <system> is the number of the associated crystal system, 380and <q-class> is the number of the $\Q$-class within the crystal 381system. However, in case of dimensions 2 or 3, a $\Q$-class may also 382be characterized by a pair (<dim>, <IT-number>) where <IT-number> is 383the number in the International Tables for Crystallography 384\cite{Hah95} of any space-group type lying in (a $\Z$-class of) that 385$\Q$-class, or just by the Hermann-Mauguin symbol of any space-group 386type lying in (a $\Z$-class of) that $\Q$-class. 387 388The Hermann-Mauguin symbols \index{Hermann-Mauguin symbol} which we 389use in {\GAP} are the short Hermann-Mauguin symbols defined in the 3901983 edition of the International Tables \cite{Hah95}, but any 391occurring indices are expressed by ordinary integers, and bars are 392replaced by minus signs. For example, the Hermann-Mauguin symbol 393<P>$\overline{4}2_1m$ will be represented by the string `\"P-421m\"'. 394 395\>DisplayQClass( <dim>, <system>, <q-class> ) 396\>DisplayQClass( <dim>, <IT-number> ) 397\>DisplayQClass( <Hermann-Mauguin-symbol> ) 398 399displays for the specified $\Q$-class essentially the same information 400as is provided for that $\Q$-class in Table 1 of \cite{BBNWZ78} 401(except for the defining relations given there), namely 402\beginlist%unordered 403\item{$\bullet$} the size of the groups in the $\Q$-class, 404\item{$\bullet$} the isomorphism type of the groups in the $\Q$-class, 405\item{$\bullet$} the Hurley pattern, 406\item{$\bullet$} the rational constituents, 407\item{$\bullet$} the number of $\Z$-classes in the $\Q$-class, and 408\item{$\bullet$} the number of space-group types in the $\Q$-class. 409\endlist 410For details see \cite{BBNWZ78}. 411 412\beginexample 413gap> DisplayQClass( "p2" ); 414#I Q-class H (2,1,2): size 2; isomorphism type 2.1 = C2; 415#I Q-constituents 2*(2,1,2); cc; 1 Z-class; 1 space group 416gap> DisplayQClass( "R-3" ); 417#I Q-class (3,5,2): size 6; isomorphism type 6.1 = C6; 418#I Q-constituents (3,1,2)+(3,4,3); ncc; 2 Z-classes; 2 space grps 419gap> DisplayQClass( 3, 195 ); 420#I Q-class (3,7,1): size 12; isomorphism type 12.5 = A4; 421#I C-irreducible; 3 Z-classes; 5 space grps 422gap> DisplayQClass( 4, 27, 4 ); 423#I Q-class H (4,27,4): size 20; isomorphism type 20.3 = D10xC2; 424#I Q-irreducible; 1 Z-class; 1 space group 425gap> DisplayQClass( 4, 29, 1 ); 426#I *Q-class (4,29,1): size 18; isomorphism type 18.3 = D6xC3; 427#I R-irreducible; 3 Z-classes; 5 space grps 428\endexample 429 430Note in the preceding examples that, as pointed out above, the term 431``size'' denotes the order of a representative group of the specified 432$\Q$-class and, of course, not the (infinite) class length. 433 434\>FpGroupQClass( <dim>, <system>, <q-class> ) 435\>FpGroupQClass( <dim>, <IT-number> ) 436\>FpGroupQClass( <Hermann-Mauguin-symbol> ) 437 438returns a finitely presented group <F>, say, which is isomorphic to 439the groups in the specified $\Q$-class. 440 441The presentation of that group is the same as the corresponding 442presentation given in Table 1 of \cite{BBNWZ78} except for the fact 443that its generators are listed in reverse order. The reason for this 444change is that, whenever the group in question is solvable, the 445resulting generators form a pcgs (as defined in section "ref:Polycyclic 446Groups" in the reference manual of {\GAP}) if they are numbered 447``from the top to the bottom'', and the presentation is a 448power-commutator presentation. The `PcGroupQClass' function described 449next will make use of this fact in order to construct a pc group 450isomorphic to <F>. 451 452Note that, for any $\Z$-class in the specified $\Q$-class, the matrix 453group returned by the `MatGroupZClass' function (see below) not only is 454isomorphic to <F>, but also its generators satisfy the defining relators 455of <F>. 456 457Besides of the usual components, <F> will have an attribute 458`CrystCatRecord', which is a record with component 459`parameters', which keeps a list of the parameters 460that specify the given $\Q$-class. 461 462\beginexample 463gap> F := FpGroupQClass( 4, 20, 3 ); 464FpGroupQClass( 4, 20, 3 ) 465gap> GeneratorsOfGroup( F ); 466[ f1, f2 ] 467gap> RelatorsOfFpGroup( F ); 468[ f1^2*f2^-3, f2^6, f2^-1*f1^-1*f2*f1*f2^-4 ] 469gap> Size( F ); 47012 471gap> CrystCatRecord( F ).parameters; 472[ 4, 20, 3 ] 473\endexample 474 475\>PcGroupQClass( <dim>, <system>, <q-class> ) 476\>PcGroupQClass( <dim>, <IT-number> ) 477\>PcGroupQClass( <Hermann-Mauguin-symbol> ) 478 479returns a pc group $P$, say, isomorphic to the groups in the 480specified $\Q$-class, if these groups are solvable, or the value 481`fail' (together with an appropriate warning), otherwise. 482 483$P$ is constructed by first establishing a finitely presented group 484(as it would be returned by the `FpGroupQClass' function described 485above) and then constructing from it an isomorphic pc group. If the 486underlying pcgs is not a prime orders pcgs (see section "ref:Polycyclic 487Groups"), then it will be refined appropriately (and a warning will 488be displayed). 489 490Besides of the usual components, <P> will have an attribute 491`CrystCatRecord', which is a record with component 492`parameters', which saves a list of the parameters that specify 493the given $\Q$-class. 494 495\beginexample 496gap> P := PcGroupQClass( 4, 31, 3 ); 497#I Warning: a non-solvable group can't be represented as a pc group 498fail 499gap> P := PcGroupQClass( 4, 20, 3 ); 500#I Warning: the presentation has been extended to get a prime order pcgs 501PcGroupQClass( 4, 20, 3 ) 502gap> GeneratorsOfGroup( P ); 503[ f1, f2, f3 ] 504gap> Size( P ); 50512 506gap> CrystCatRecord( P ).parameters; 507[ 4, 20, 3 ] 508\endexample 509 510\>CharTableQClass( <dim>, <system>, <q-class> ) 511\>CharTableQClass( <dim>, <IT-number> ) 512\>CharTableQClass( <Hermann-Mauguin-symbol> ) 513 514returns the character table $T$, say, of a representative group of (a 515$\Z$-class of) the specified $\Q$-class. 516 517Although the set of characters can be considered as an invariant of the 518specified $\Q$-class, the resulting table will depend on the order in 519which {\GAP} sorts the conjugacy classes of elements and the irreducible 520characters and hence, in general, will not coincide with the 521corresponding table presented in \cite{BBNWZ78}. 522 523`CharTableQClass' proceeds as follows. If the groups in the given 524$\Q$-class are solvable, then it first calls the `PcGroupQClass' and 525`RefinedPcGroup' functions to get a suitable isomorphic pc group, and 526then it calls the `CharacterTable' function to compute the 527character table of that pc group. In the case of the five 528$\Q$-classes of dimension 4 whose groups are not solvable, it first 529calls the `FpGroupQClass' function to get an isomorphic finitely 530presented group, then it constructs a specially chosen faithful 531permutation representation of low degree for that group, and finally 532it determines the character table of the resulting permutation group 533again by calling the `CharacterTable' function. 534 535In general, the above strategy will be much more efficient than the 536alternative possibilities of calling the `CharacterTable' function for a 537finitely presented group provided by the `FpGroupQClass' function or 538for a matrix group provided by the `MatGroupZClass' function. 539 540\beginexample 541gap> T := CharTableQClass( 4, 20, 3 );; 542gap> Display( T ); 543CharTableQClass( 4, 20, 3 ) 544 545 2 2 2 1 1 2 2 546 3 1 . 1 1 . 1 547 548 1a 4a 6a 3a 4b 2a 549 2P 1a 2a 3a 3a 2a 1a 550 3P 1a 4b 2a 1a 4a 2a 551 5P 1a 4a 6a 3a 4b 2a 552 553X.1 1 1 1 1 1 1 554X.2 1 -1 1 1 -1 1 555X.3 1 A -1 1 -A -1 556X.4 1 -A -1 1 A -1 557X.5 2 . 1 -1 . -2 558X.6 2 . -1 -1 . 2 559 560A = -E(4) 561 = -Sqrt(-1) = -i 562\endexample 563 564%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 565\Section{Z-Classes} 566 567\>NrZClassesQClass( <dim>, <system>, <q-class> ) 568\>NrZClassesQClass( <dim>, <IT-number> ) 569\>NrZClassesQClass( <Hermann-Mauguin-symbol> ) 570 571returns the number of $\Z$-classes within the given $\Q$-class. It can 572be used to formulate loops over the $\Z$-classes. 573 574The following functions are functions of $\Z$-classes. 575 576In general, the parameters characterizing a $\Z$-class will form a 577quadruple (<dim>, <system>, <q-class>, <z-class>) where <dim> is the 578associated dimension, <system> is the number of the associated crystal 579system, <q-class> is the number of the associated $\Q$-class within 580the crystal system, and <z-class> is the number of the $\Z$-class 581within the $\Q$-class. However, in case of dimensions 2 or 3, a 582$\Z$-class may also be characterized by a pair (<dim>, <IT-number>) 583where <IT-number> is the number in the International Tables 584\cite{Hah95} of any space-group type lying in that $\Z$-class, or just 585by the Hermann-Mauguin symbol of any space-group type lying in that 586$\Z$-class. 587 588\>DisplayZClass( <dim>, <system>, <q-class>, <z-class> ) 589\>DisplayZClass( <dim>, <IT-number> ) 590\>DisplayZClass( <Hermann-Mauguin-symbol> ) 591 592displays for the specified $\Z$-class essentially the same information 593as is provided for that $\Z$-class in Table 1 of \cite{BBNWZ78} 594(except for the generating matrices of a class representative group 595given there), namely 596\beginlist%unordered 597\item{$\bullet$} for dimensions 2 and 3, the Hermann-Mauguin symbol of a 598 representative space-group type which belongs to that $\Z$-class, 599\item{$\bullet$} the Bravais type, 600\item{$\bullet$} some decomposability information, 601\item{$\bullet$} the number of space-group types belonging to the $\Z$-class, 602\item{$\bullet$} the size of the associated cohomology group. 603\endlist 604For details see \cite{BBNWZ78}. 605 606\beginexample 607gap> DisplayZClass( 2, 3 ); 608#I Z-class (2,2,1,1) = Z(pm): Bravais type II/I; fully Z-reducible; 609#I 2 space groups; cohomology group size 2 610gap> DisplayZClass( "F-43m" ); 611#I Z-class (3,7,4,2) = Z(F-43m): Bravais type VI/II; Z-irreducible; 612#I 2 space groups; cohomology group size 2 613gap> DisplayZClass( 4, 2, 3, 2 ); 614#I Z-class B (4,2,3,2): Bravais type II/II; Z-decomposable; 615#I 2 space groups; cohomology group size 4 616gap> DisplayZClass( 4, 21, 3, 1 ); 617#I *Z-class (4,21,3,1): Bravais type XVI/I; Z-reducible; 618#I 1 space group; cohomology group size 1 619\endexample 620 621\>MatGroupZClass( <dim>, <system>, <q-class>, <z-class> ) 622\>MatGroupZClass( <dim>, <IT-number> ) 623\>MatGroupZClass( <Hermann-Mauguin-symbol> ) 624 625returns a $dim \x dim$ matrix group <M>, say, which is a 626representative of the specified $\Z$-class. Its generators satisfy 627the defining relators of the finitely presented group which may be 628computed by calling the `FpGroupQClass' function (see above) for the 629$\Q$-class which contains the given $\Z$-class. 630 631The generators of <M> are the same matrices as those given in Table 1 of 632\cite{BBNWZ78}. Note, however, that they will be listed in reverse order 633to keep them in parallel to the abstract generators provided by the 634`FpGroupQClass' function (see above). 635 636Besides of the usual components, <M> will have an attribute 637`CrystCatRecord', which is a record with two components. The 638first component is `parameters', which saves a list of the parameters 639that specify the given $\Z$-class. The second component is 640`conjugator', whose value is the identity element of <M>. Its purpose 641is to make the resulting record consistent with those returned by 642the `NormalizerZClass' or `ZClassRepsDadeGroup' functions described 643below. 644 645\beginexample 646gap> M := MatGroupZClass( 4, 20, 3, 1 ); 647MatGroupZClass( 4, 20, 3, 1 ) 648gap> for g in GeneratorsOfGroup( M ) do 649> Print( "\n" ); PrintArray( g ); od; Print( "\n" ); 650 651[ [ 0, 1, 0, 0 ], 652 [ -1, 0, 0, 0 ], 653 [ 0, 0, -1, -1 ], 654 [ 0, 0, 0, 1 ] ] 655 656[ [ -1, 0, 0, 0 ], 657 [ 0, -1, 0, 0 ], 658 [ 0, 0, -1, -1 ], 659 [ 0, 0, 1, 0 ] ] 660 661gap> Size( M ); 66212 663gap> CrystCatRecord( M ).parameters; 664[ 4, 20, 3, 1 ] 665\endexample 666 667\>NormalizerZClass( <dim>, <system>, <q-class>, <z-class> ) 668\>NormalizerZClass( <dim>, <IT-number> ) 669\>NormalizerZClass( <Hermann-Mauguin-symbol> ) 670 671returns the normalizer <N>, say, in $GL(dim,\Z)$ of the representative 672$dim \x dim$ matrix group which is constructed by the 673`MatGroupZClass' function (see above). 674 675If the size of <N> is finite, then <N> again lies in some $\Z$-class. 676In this case, <N> will have an attribute `CrystCatRecord', 677which is a record with two components, `parameters' and `conjugator'. 678These contain, respectively, the list of parameters of that 679$\Z$-class, and a matrix $g \in GL(dim,\Z)$, such that $N = g^{-1} R g$, 680where $R$ is the representative group of that $\Z$-class. 681 682\beginexample 683gap> N := NormalizerZClass( 4, 20, 3, 1 ); 684NormalizerZClass( 4, 20, 3, 1 ) 685gap> for g in GeneratorsOfGroup( N ) do 686> Print( "\n" ); PrintArray( g ); od; Print( "\n" ); 687 688[ [ 1, 0, 0, 0 ], 689 [ 0, 1, 0, 0 ], 690 [ 0, 0, 1, 0 ], 691 [ 0, 0, -1, -1 ] ] 692 693[ [ 1, 0, 0, 0 ], 694 [ 0, -1, 0, 0 ], 695 [ 0, 0, -1, -1 ], 696 [ 0, 0, 1, 0 ] ] 697 698[ [ 0, 1, 0, 0 ], 699 [ -1, 0, 0, 0 ], 700 [ 0, 0, 1, 0 ], 701 [ 0, 0, 0, 1 ] ] 702 703[ [ -1, 0, 0, 0 ], 704 [ 0, -1, 0, 0 ], 705 [ 0, 0, -1, 0 ], 706 [ 0, 0, 0, -1 ] ] 707 708gap> Size( N ); 70996 710gap> CrystCatRecord( N ).parameters; 711[ 4, 20, 22, 1 ] 712gap> CrystCatRecord( N ).conjugator = One( N ); 713true 714gap> L := NormalizerZClass( 3, 42 ); 715NormalizerZClass( 3, 3, 2, 4 ) 716gap> Size( L ); 71716 718gap> CrystCatRecord( L ).parameters; 719[ 3, 4, 7, 2 ] 720gap> CrystCatRecord( L ).conjugator; 721[ [ 0, 0, -1 ], [ 1, 0, 0 ], [ 0, -1, -1 ] ] 722gap> M := NormalizerZClass( "C2/m" ); 723<matrix group of size infinity with 5 generators> 724gap> Size( M ); 725infinity 726gap> HasCrystCatRecord( M ); 727false 728\endexample 729 730%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 731\Section{Dade groups} 732 733Some of the $\Z$-classes of dimension <d>, say, are ``maximal'' in 734the sense that the groups in these classes are maximal finite subgroups 735of $GL(d,\Z)$. Generalizing a term which is being used for dimension 4, 736we call the representatives of these maximal $\Z$-classes the *Dade 737groups* of dimension $d$. 738 739\>NrDadeGroups( <dim> ) 740 741returns the number of Dade groups of dimension <dim>. It can be used 742to formulate loops over the Dade groups. 743 744There are 2, 4, and 9 Dade groups of dimension 2, 3, and 4, respectively. 745 746\beginexample 747gap> NrDadeGroups( 4 ); 7489 749\endexample 750 751\>DadeGroup( <dim>, <n> ) 752 753returns the <n>th Dade group of dimension <dim>. 754 755\beginexample 756gap> D := DadeGroup( 4, 7 ); 757MatGroupZClass( 4, 31, 7, 2 ) 758\endexample 759 760\>DadeGroupNumbersZClass( <dim>, <system>, <q-class>, <z-class> ) 761\>DadeGroupNumbersZClass( <dim>, <IT-number> ) 762\>DadeGroupNumbersZClass( <Hermann-Mauguin-symbol> ) 763 764returns the set of all those integers $n_i$ for which the $n_i$th Dade 765group of dimension <dim> contains a subgroup which, in $GL(dim,\Z)$, 766is conjugate to the representative group of the given $\Z$-class. 767 768\beginexample 769gap> dadeNums := DadeGroupNumbersZClass( 4, 4, 1, 2 ); 770[ 1, 5, 8 ] 771gap> for d in dadeNums do 772> D := DadeGroup( 4, d ); 773> Print( D, " of size ", Size( D ), "\n" ); 774> od; 775MatGroupZClass( 4, 20, 22, 1 ) of size 96 776MatGroupZClass( 4, 30, 13, 1 ) of size 288 777MatGroupZClass( 4, 32, 21, 1 ) of size 384 778\endexample 779 780\>ZClassRepsDadeGroup( <dim>, <system>, <q-class>, <z-class>, <n> ) 781\>ZClassRepsDadeGroup( <dim>, <IT-number>, <n> ) 782\>ZClassRepsDadeGroup( <Hermann-Mauguin-symbol>, <n> ) 783 784determines in the <n>th Dade group of dimension <dim> all those 785conjugacy classes whose groups are, in $GL(dim,\Z)$, conjugate to the 786$\Z$-class representative group <R>, say, of the given $\Z$-class. It 787returns a list of representative groups of these conjugacy classes. 788 789Let <M> be any group in the resulting list. <M> then has an attribute 790`CrystCatRecord', which is a record with two components. The 791component `parameters' is the list of parameters of the $\Z$-class of 792<R>, and `conjugator' is a suitable matrix <g> from $GL(dim,\Z)$, 793respectively, such that <M> equals $g^{-1} R g$. 794 795\beginexample 796gap> DadeGroupNumbersZClass( 2, 2, 1, 2 ); 797[ 1, 2 ] 798gap> ZClassRepsDadeGroup( 2, 2, 1, 2, 1 ); 799[ MatGroupZClass( 2, 2, 1, 2 )^[ [ 0, 1 ], [ -1, 0 ] ] ] 800gap> ZClassRepsDadeGroup( 2, 2, 1, 2, 2 ); 801[ MatGroupZClass( 2, 2, 1, 2 )^[ [ 1, -1 ], [ 0, -1 ] ], 802 MatGroupZClass( 2, 2, 1, 2 )^[ [ 1, 0 ], [ -1, 1 ] ] ] 803gap> R := last[2];; 804gap> CrystCatRecord( R ).parameters; 805[ 2, 2, 1, 2 ] 806gap> CrystCatRecord( R ).conjugator; 807[ [ 1, 0 ], [ -1, 1 ] ] 808\endexample 809 810%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 811\Section{Space groups and space group types} 812 813\>NrSpaceGroupTypesZClass( <dim>, <system>, <q-class>, <z-class> ) 814\>NrSpaceGroupTypesZClass( <dim>, <IT-number> ) 815\>NrSpaceGroupTypesZClass( <Hermann-Mauguin-symbol> ) 816 817returns the number of space-group types within the given $\Z$-class. 818It can be used to formulate loops over the space-group types. 819 820\beginexample 821gap> N := NrSpaceGroupTypesZClass( 4, 4, 1, 1 ); 82213 823\endexample 824 825The following functions are functions of space-group types. 826 827In general, the parameters characterizing a space-group type will form 828a quintuple (<dim>, <system>, <q-class>, <z-class>, <sg-type>) where 829<dim> is the associated dimension, <system> is the number of the 830associated crystal system, <q-class> is the number of the associated 831$\Q$-class within the crystal system, <z-class> is the number of the 832$\Z$-class within the $\Q$-class, and <sg-type> is the space-group 833type within the $\Z$-class. However, in case of dimensions 2 or 3, 834you may instead specify a $\Z$-class by a pair (<dim>, <IT-number>) 835or by its Hermann-Mauguin symbol (as described above). Then the 836function will handle the first space-group type within that 837$\Z$-class, i.e., <sg-type> = 1, that is, the corresponding 838symmorphic space group (split extension). 839 840\>DisplaySpaceGroupType( <dim>, <system>, <q-class>, <z-class>, <sg-type> ) 841\>DisplaySpaceGroupType( <dim>, <IT-number> ) 842\>DisplaySpaceGroupType( <Hermann-Mauguin-symbol> ) 843 844displays for the specified space-group type some of the information 845which is provided for that space-group type in Table 1 of 846\cite{BBNWZ78}, namely 847\beginlist%unordered 848\item{$\bullet$} the orbit size associated with that space-group type and, 849\item{$\bullet$} for dimensions 2 and 3, the <IT-number> and the 850 Hermann-Mauguin symbol. 851\endlist 852For details see \cite{BBNWZ78}. 853 854\beginexample 855gap> DisplaySpaceGroupType( 2, 17 ); 856#I Space-group type (2,4,4,1,1); IT(17) = p6mm; orbit size 1 857gap> DisplaySpaceGroupType( "Pm-3" ); 858#I Space-group type (3,7,2,1,1); IT(200) = Pm-3; orbit size 1 859gap> DisplaySpaceGroupType( 4, 32, 10, 2, 4 ); 860#I *Space-group type (4,32,10,2,4); orbit size 18 861gap> DisplaySpaceGroupType( 3, 6, 1, 1, 4 ); 862#I *Space-group type (3,6,1,1,4); IT(169) = P61, IT(170) = P65; 863#I orbit size 2; fp-free 864\endexample 865 866\>DisplaySpaceGroupGenerators( <dim>, <system>, <q-class>, <z-class>, <sg-type>) 867\>DisplaySpaceGroupGenerators( <dim>, <IT-number> ) 868\>DisplaySpaceGroupGenerators( <Hermann-Mauguin-symbol> ) 869 870displays the non-translation generators of a representative space 871group of the specified space-group type without actually constructing 872that matrix group. The generators are given in the representation 873acting from the left on column vectors. 874 875In more details: Let <n> = <dim> be the given dimension, and let $M_1, 876\ldots, M_r$ be the generators of the representative $n \x n$ 877matrix group of the given $\Z$-class (this is the group which you will 878get if you call the `MatGroupZClass' function (see above) for that 879$\Z$-class). Then, for the given space-group type, the 880`SpaceGroupOnLeftBBNWZ' function described below will construct as 881representative of that space-group type an $(n+1) \x (n+1)$ matrix 882group which is generated by the <n> translations which are induced 883by the (standard) basis vectors of the <n>-dimensional Euclidian space, 884and <r> additional matrices $S_1, \ldots, S_r$ of the form $S_i = 885\left[\matrix{ M_i & t_i \cr 0 & 1 } \right]$, where the $n \x n$ 886submatrices $M_i$ are as defined above, and the $t_i$ are <n>-columns 887with rational entries. The `DisplaySpaceGroupGenerators' function 888saves time by not constructing the group, but just displaying the $r$ 889matrices $S_1,\ldots, S_r$. 890 891\beginexample 892gap> DisplaySpaceGroupGenerators( "P61" ); 893#I Non-translation generators of SpaceGroupOnLeftBBNWZ( 3, 6, 1, 1, 4 ) 894 895[ [ -1, 0, 0, 0 ], 896 [ 0, -1, 0, 0 ], 897 [ 0, 0, 1, 1/2 ], 898 [ 0, 0, 0, 1 ] ] 899 900[ [ 0, -1, 0, 0 ], 901 [ 1, -1, 0, 0 ], 902 [ 0, 0, 1, 1/3 ], 903 [ 0, 0, 0, 1 ] ] 904 905\endexample 906 907\>SpaceGroupOnLeftBBNWZ( <dim>, <system>, <q-class>, <z-class>, <sg-type> ) 908\>SpaceGroupOnLeftBBNWZ( <dim>, <IT-number> ) 909\>SpaceGroupOnLeftBBNWZ( <Hermann-Mauguin-symbol> ) 910 911returns a representative, <S>, of the space group type specified by 912the arguments. <S> is returned in the form of an `AffineCrystGroupOnLeft', 913which acts from the left on column vectors (see also the description 914of the `DisplaySpaceGroupGenerators' function above). The package 915{\Cryst} provides methods for the computation with space groups. 916 917\beginexample 918gap> S := SpaceGroupOnLeftBBNWZ( "P61" ); 919SpaceGroupOnLeftBBNWZ( 3, 6, 1, 1, 4 ) 920gap> for s in GeneratorsOfGroup( S ) do 921> Print( "\n" ); PrintArray( s ); od; Print( "\n" ); 922 923[ [ -1, 0, 0, 0 ], 924 [ 0, -1, 0, 0 ], 925 [ 0, 0, 1, 1/2 ], 926 [ 0, 0, 0, 1 ] ] 927 928[ [ 0, -1, 0, 0 ], 929 [ 1, -1, 0, 0 ], 930 [ 0, 0, 1, 1/3 ], 931 [ 0, 0, 0, 1 ] ] 932 933[ [ 1, 0, 0, 1 ], 934 [ 0, 1, 0, 0 ], 935 [ 0, 0, 1, 0 ], 936 [ 0, 0, 0, 1 ] ] 937 938[ [ 1, 0, 0, 0 ], 939 [ 0, 1, 0, 1 ], 940 [ 0, 0, 1, 0 ], 941 [ 0, 0, 0, 1 ] ] 942 943[ [ 1, 0, 0, 0 ], 944 [ 0, 1, 0, 0 ], 945 [ 0, 0, 1, 1 ], 946 [ 0, 0, 0, 1 ] ] 947 948gap> CrystCatRecord( S ).parameters; 949[ 3, 6, 1, 1, 4 ] 950\endexample 951 952The resulting group has an attribute `CrystCatRecord', whose component 953`parameters' specifies the given space-group type. 954 955\>SpaceGroupOnRightBBNWZ( <dim>, <system>, <q-class>, <z-class>, <sg-type> ) 956\>SpaceGroupOnRightBBNWZ( <dim>, <IT-number> ) 957\>SpaceGroupOnRightBBNWZ( <Hermann-Mauguin-symbol> ) 958\>SpaceGroupOnRightBBNWZ( <S> ) 959 960returns a representative, <T>, of the space group type specified by 961the arguments. <T> is returned in the form of an `AffineCrystGroupOnRight', 962which acts from the right on row vectors. The generators of <T> are the 963transposed generators (in the same order) of the corresponding 964`SpaceGroupOnLeftBBNWZ', <S>, specified by the same arguments. 965The space group <S> is also accepted as argument. The package 966{\Cryst} provides methods for the computation with space groups. 967 968\beginexample 969gap> T := SpaceGroupOnRightBBNWZ( S ); 970SpaceGroupOnRightBBNWZ( 3, 6, 1, 1, 4 ) 971gap> for m in GeneratorsOfGroup( T ) do 972> Print( "\n" ); PrintArray( m ); od; Print( "\n" ); 973 974[ [ -1, 0, 0, 0 ], 975 [ 0, -1, 0, 0 ], 976 [ 0, 0, 1, 0 ], 977 [ 0, 0, 1/2, 1 ] ] 978 979[ [ 0, 1, 0, 0 ], 980 [ -1, -1, 0, 0 ], 981 [ 0, 0, 1, 0 ], 982 [ 0, 0, 1/3, 1 ] ] 983 984[ [ 1, 0, 0, 0 ], 985 [ 0, 1, 0, 0 ], 986 [ 0, 0, 1, 0 ], 987 [ 1, 0, 0, 1 ] ] 988 989[ [ 1, 0, 0, 0 ], 990 [ 0, 1, 0, 0 ], 991 [ 0, 0, 1, 0 ], 992 [ 0, 1, 0, 1 ] ] 993 994[ [ 1, 0, 0, 0 ], 995 [ 0, 1, 0, 0 ], 996 [ 0, 0, 1, 0 ], 997 [ 0, 0, 1, 1 ] ] 998 999\endexample 1000 1001\>SpaceGroupBBNWZ( <dim>, <system>, <q-class>, <z-class>, <sg-type> ) 1002\>SpaceGroupBBNWZ( <dim>, <IT-number> ) 1003\>SpaceGroupBBNWZ( <Hermann-Mauguin-symbol> ) 1004 1005calls either `SpaceGroupOnLeftBBNWZ' or `SpaceGroupOnRightBBNWZ' 1006with the same arguments, depending on the value of the variable 1007`CrystGroupDefaultAction'. 1008 1009\>FpGroupSpaceGroupBBNWZ( <S> ) 1010 1011returns a finitely presented group <G>, say, which is isomorphic to 1012<S>, where <S> is expected to be a space group from the BBNWZ 1013catalog (acting from the left or from the right). It is chosen such 1014that there is an isomorphism from <G> to <S> which maps each generator 1015of <G> onto the corresponding generator of <S>. This means, in 1016particular, that the matrix generators of <S> satisfy the relators of 1017<G>. If the factor group of <S> by its translation normal subgroup is 1018solvable, then the presentation returned is a polycyclic power 1019commutator presentation. 1020 1021\beginexample 1022gap> G := FpGroupSpaceGroupBBNWZ( S ); 1023FpGroupSpaceGroupOnLeftBBNWZ( 3, 6, 1, 1, 4 ) 1024gap> for rel in RelatorsOfFpGroup( G ) do Print( rel, "\n" ); od; 1025g1^2*g5^-1 1026g2^3*g5^-1 1027g2^-1*g1^-1*g2*g1 1028g3^-1*g1^-1*g3*g1*g3^2 1029g3^-1*g2^-1*g3*g2*g4*g3^2 1030g4^-1*g1^-1*g4*g1*g4^2 1031g4^-1*g2^-1*g4*g2*g4*g3^-1 1032g4^-1*g3^-1*g4*g3 1033g5^-1*g1^-1*g5*g1 1034g5^-1*g2^-1*g5*g2 1035g5^-1*g3^-1*g5*g3 1036g5^-1*g4^-1*g5*g4 1037gap> # Verify that the matrix generators of S satisfy the relators of G. 1038gap> ForAll( RelatorsOfFpGroup( G ), rel -> One(S) = 1039> MappedWord( rel, FreeGeneratorsOfFpGroup(G), GeneratorsOfGroup(S) ) ); 1040true 1041\endexample 1042 1043 1044 1045 1046 1047