7 Utility Functions Provided by the **CTblLib**
Package

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