In this section we describe how a CrystGroup G is represented
internally. The casual user can skip this section in a first reading.
Although the generators of a CrystGroup can be specified with respect to
any basis, most computations are done internally in a special, standard
basis, which is stored in G.internalBasis
. The results are translated
into the user-specified basis only afterwards. G.internalBasis
consists
of a (standard) basis of the translation lattice of G, complemented, if
necessary, with suitable standard basis vectors. The standard basis of
the translation lattice is stored in G.translations
.
As soon as G.internalBasis
has been determined, both the CrystGroup G
and its point group P obtain a component internalGenerators
. For the
point group P, the component P.internalGenerators
contains a set of
generators of P, expressed with respect to the internalBasis
of G,
whereas for the CrystGroup G the component G.internalGenerators
contains a set of homomorphic preimages of P.internalGenerators
in G,
also expressed in the internalBasis
of G. Thus G.internalGenerators
does not contain any translation generators. These are easy to add,
however: With respect to the internal basis, the translations are
generated by the first k standard basis vectors, where k is the rank
of the translation lattice.
Note that the internalGenerators
of both a point group P and a
CrystGroup G may be changed by some functions, notably by FpGroup
.
Thus they need not have any obvious connection to P.generators
and
G.generators
, respectively. Internal record entries of a CrystGroup
should never be changed by the user.
GAP 3.4.4