This chapter describes GAP functions that are provided by the CTblLib package but that might be of general interest.
For the moment, there are just two features to describe, the generation of Atlas irrationalities from cyclotomic integers (see Section 7.1), and the generation of information about the group structure from identifiers of character tables (see Section 7.2).
‣ CTblLib.StringOfAtlasIrrationality ( cyc ) | ( function ) |
Returns: a string that describes the cyclotomic integer cyc.
This function is intended for expressing the cyclotomic integer cyc as a linear combination of so-called "atomic Atlas irrationalities" (see [CCN+85, p. xxvii]), with integer coefficients.
Often there is no "optimal" expression of that kind for cyc, and this function uses certain heuristics for finding a not too bad expression. Concerning the character tables in the Atlas of Finite Groups [CCN+85], an explicit mapping between the values which are computed by this function and the descriptions that are shown in the book is available, see CTblLib.IrrationalityMapping
. Such a mapping is not yet available for the character tables from the Atlas of Brauer Characters [JLPW95], this function is only experimental for these tables, it is likely to be changed in the future.
CTblLib.StringOfAtlasIrrationality
is used by BrowseAtlasTable
(3.5-9).
gap> values:= List( [ "e31", "y'24+3", "r2+i", "r2+i2" ], > AtlasIrrationality );; gap> List( values, CTblLib.StringOfAtlasIrrationality ); [ "e31", "y'24+3", "z8-&3+i", "2z8" ]
The implementation uses the following heuristics for computing a description of the cyclotomic integer cyc with conductor \(N\), say.
If \(N\) is not squarefree the let \(N_0\) be the squarefree part of \(N\), split cyc into the sum of its odd squarefree part and its non-squarefree part, and consider the two values separately; note that the odd squarefree part is well-defined by the fact that the basis of the \(N\)-th cyclotomic field given by ZumbroichBase
(Reference: ZumbroichBase) contains all primitive \(N_0\)-th roots of unity. Also note that except for quadratic irrationalities (where \(N\) is squarefree), all roots of unity that are involved in the representation of atomic irrationalities w. r. t. this basis have the same multiplicative order.
If cyc is a multiple of a root of unity then write it as such, i. e., as a string involving \(z_N\).
Otherwise, if cyc lies in a quadratic number field then write it as a linear combination of an integer. Usually the string involves \(r_N\), \(i_N\), or \(b_N\), but also multiples of \(b_M\) may occur, where \(M\) is a –not squarefree– multiple of \(N\).
Otherwise, find a large cyclic subgroup of the stabilizer of cyc inside the Galois group over the Rationals –this subgroup defines an atomic irrationality– and express cyc as a linear combination of the orbit sums. In the worst case, there is no nontrivial stabilizer, and we find only a description as a sum of roots of unity.
There is of course a lot of space for improvements. For example, one could use the Bosma basis representation (see BosmaBase
(6.5-1)) of cyc for splitting the value into a sum of values from strictly smaller cyclotomic fields, which would be useful at least if their conductors are coprime. Note that the Bosma basis of the \(N\)-th cyclotomic field has the property that it is a union of bases for the cyclotomic fields with conductor dividing \(N\). Thus one can easily find out that \(\sqrt{{5}} + \sqrt{{7}}\) can be written as a sum of two values in terms of \(5\)-th and \(7\)-th roots of unity. In non-coprime situations, this argument fails. For example, one can still detect that \(\sqrt{{15}} + \sqrt{{21}}\) involves only \(15\)-th and \(21\)-th roots of unity, but it is not obvious how to split the value into the two parts.
‣ StructureDescriptionCharacterTableName ( name ) | ( function ) |
For a string name that is an admissible name of a character table, StructureDescriptionCharacterTableName
returns a string that is intended as a description of the structure of the underlying group.
Note that many identifiers of character tables (see Identifier
(Reference: Identifier for character tables)) do not describe the group structure in an appropriate way. One reason for choosing such identifiers on purpose is that several character tables for isomorphic groups can be contained in the library, because the groups have different class fusions into another group. For example, the Mathieu group \(M_{12}\) contains two classes of subgroups isomorphic with \(M_{11}\), and the identifiers of the character tables corresponding to these subgroups are "M11"
and "M12M2"
, respectively.
gap> StructureDescriptionCharacterTableName( "M12M2" ); "M11"
generated by GAPDoc2HTML