The Table of Irreducible Characters

The function CharacterTable can be invoked to determine the complete or a partial table of irreducible characters on a finite group G. If necessary, an existing character table can be supplemented by another call to the function. The known irreducible characters are stored in the character ring of G.

The default algorithm for character tables is Unger's Induce/Reduce algorithm, described in detail in [Ung06]. Computing character tables assumes that the classes of the group can be computed and stored, along with a class representative for each class, as well as the power map of the group. Unger's algorithm constructs elementary subgroups of the group (where elementary means direct product of cyclic group with p-group), and constructs characters of these subgroups (using Conlon's algorithm for the character table of the p-part of the group). Following Brauer's theorem on induced characters, these characters are induced to the full group and all irreducible characters of the full group are found in the integral span of the induced characters (using LLL reduction to maintain a manageable basis of the character space found). The two potentially most time-consuming parts of the algorithm are the computation of fusion in the elementary subgroups, which is necessary for induction, and repeated use of LLL to maintain a basis of the space of generalised characters found to date. Arithmetic with generalised characters is done quickly by using a finite field representation of these characters, as in Dixon's work [Dix67], but here the prime used may be twice the length of Dixon's.

The Dixon-Schneider algorithm for computing character tables [Dix67], [Sch90] is also available. See below for details on how to access it. This was the previous default algorithm for character tables. As indicated above, Conlon's algorithm for the character table of a p-group [Con90] is also implemented, and may be accessed directly as indicated below.

The functions in this section return character tables, which are enumerated sequences of characters that are flagged to allow printing in a special format.

KnownIrreducibles(R) : AlgChtr -> SeqEnum
KnownIrreducibles(G) : Grp -> SeqEnum
Given a finite group G, or a class function space R of G, return the table of irreducible characters currently stored. Such a table is a sequence of characters with specially formatted printing.

It should be noted that characters are stored with some information about whether they are characters, generalized characters or class functions. From this information, it is often possible to deduce with little effort that a character is, in fact, irreducible. When a new irreducible is found this way, it is immediately inserted into the table of irreducible characters.

CharacterTable(G :parameters) : Grp -> SeqEnum
Construct the table of ordinary irreducible characters for the group G.
     Al: MonStgElt                       Default: "Default"
This parameter controls the algorithm used. The string "DS" forces use of the Dixon-Schneider algorithm. The string "IR" forces the use of Unger's Induce/Reduce algorithm [Ung06]. The string "Conlon" forces the use of Conlon's algorithm. This last is valid only when the group is a p-group. The "Default" algorithm is to use Dixon-Schneider for groups of order ≤5000, Conlon's algorithm for larger p-groups and Unger's algorithm for other groups. This may change in future.
     DSSizeLimit: RngIntElt              Default: 0
When the algorithm selected is either "Default" or "IR", a positive value n for DSSizeLimit means that before using ithe Induce/Reduce algorithm, the full possible character space is split by some passes of the Dixon-Schneider algorithm, restricted to using class matrices corresponding to conjugacy classes with size at most n.
CharacterTableDS(G :parameters) : Grp -> SeqEnum, SeqEnum
    ClassMatrices: SeqEnum              Default: []
    ClassMatrixLimit: RngIntElt         Default: ∞
    ClassSizeLimit: RngIntElt           Default: ∞
    MinChars: RngIntElt                 Default: ∞
    Modulus: RngIntElt                  Default: 0
Given a finite group G, construct the table of irreducible characters of G using the Dixon-Schneider algorithm [Dix67], [Sch90]. The conjugacy classes of G will be computed if necessary; if the user wishes to exert control over the computation of the classes, the function Classes can be invoked on G before calling CharacterTableDS.

There are several optional parameters for CharacterTableDS. Assigning a non-negative integer value m to MinChars, indicates that the computation is to be terminated as soon as m or more additional characters have been found. By setting ClassMatrixLimit to a positive integer n, the user can limit the number of class matrices used. If the calculation of all irreducible characters (or at least m of them if MinChars has been set) cannot be completed by using k class matrices, an incomplete character table is returned. Setting ClassSizeLimit to an integer n restricts the algorithm to computing class matrices corresponding to classes of size at most n. Again, if the calculation of all irreducible characters cannot be completed using class matrices from these small classes, an incomplete character table is returned. The optional argument ClassMatrices (a sequence of integers in the range 1 ... k, where k is the number of conjugacy classes of G) can be used to specify a preference for the order in which class matrices should be used. Finally the Modulus argument can be used to set which prime field is used for the internal computations of the Dixon-Schneider algorithm. The value used must be a prime equivalent to 1 modulo the group exponent and greater than twice the square root of the group order.

The second return argument is the sequence of unsplit character spaces remaining at the point the algorithm terminated. This is empty when the algorithm returns a complete character table, but may be useful when an incomplete character table is returned.

Basis(R) : AlgChtr -> SeqEnum
The function Basis takes the character ring R of G as input and performs the same computation to find the basis for R consisting of the irreducible characters.

Both CharacterTable and Basis return a character table, which is an enumerated sequence of elements of the character ring over G (if necessary, the ring is created) that only differs from arbitrary sequences of class functions with respect to printing.

CharacterTableConlon(G) : Grp -> SeqEnum
Compute the character table of group G using Conlon's algorithm for p-groups. The group G must thus be a p-group for some prime p.
LinearCharacters(G): Grp -> SeqEnum
Given a finite group G, determine the (partial) character table containing only the linear characters.
CharacterDegrees(G): GrpPerm -> SeqEnum
CharacterDegrees(G): GrpPC -> SeqEnum
CharacterDegrees(G): GrpMat -> SeqEnum
CharacterDegrees(G): GrpAb -> SeqEnum
Returns the degrees of the ordinary irreducible characters of the finite group G. The sequence returned has form [<d1, c1>, <d2, c2>, ... ] where ci is the number of characters of degree di. For p-groups Slattery's algorithm is used, for other soluble groups Conlon's counting algorithm is used, and for insoluble groups the character table of G is computed.
CharacterDegrees(G, z, p): GrpPC, GrpPCElt, RngIntElt -> SeqEnum
Returns the degrees of the absolutely irreducible characters of G lying over a faithful linear character of < z >, where z is a central element of G and p is zero or a prime.
CharacterDegreesPGroup(G): GrpPC -> SeqEnum
Returns the degrees of the ordinary irreducible characters of the finite p-group G. The sequence returned has form [c0, c1, c2 ... ], where ci is the number of characters of degree pi. Slattery's counting algorithm is used.
RationalCharacterTable(G): GrpFin -> SeqEnum
Returns a sequence of minimal rational characters of G. These are the sums of the Galois orbits on the character table of G.
SaveCharacterTable(T, F): SeqEnum[AlgChtrElt], MonStgElt ->
Write the character table T to the file named by the string F. The command texttt{> T := eval Read(F);} will read T in, as a character table without group attached.

Example Chtr_CharacterTable (H98E1)

We use the texttt{CharacterTable} function and print the resulting table. Character tables have a special print format.
> G := Alt(5);
> CT := CharacterTable(G);
> CT;
Character Table of Group G
--------------------------
---------------------------
Class |   1  2  3    4    5
Size  |   1 15 20   12   12
Order |   1  2  3    5    5
---------------------------
p  =  2   1  1  3    5    4
p  =  3   1  2  1    5    4
p  =  5   1  2  3    1    1
---------------------------
X.1   +   1  1  1    1    1
X.2   +   3 -1  0   Z1 Z1#2
X.3   +   3 -1  0 Z1#2   Z1
X.4   +   4  0  1   -1   -1
X.5   +   5  1 -1    0    0
Explanation of Character Value Symbols
--------------------------------------
# denotes algebraic conjugation
#k indicates replacing the root of unity w by w^k
Z1     = (CyclotomicField(5: Sparse := true)) ! [
RationalField() | 1, 0, 1, 1 ]
> CT[2];
( 3, -1, 0, zeta(5)_5^3 + zeta(5)_5^2 + 1, -zeta(5)_5^3 -
  zeta(5)_5^2 )
> CT[2]:Minimal;
( 3, -1, 0, Z1, Z1#2 )
The character table is represented as a sequence of characters. Non-rational values in a character table are printed symbolically. This same printing can be forced on an individual character by using texttt{Minimal} printing.

Example Chtr_CharacterTable2 (H98E2)

The texttt{CharacterTable} algorithm can handle quite large groups. We illustrate this by computing the character table of the almost simple group PΓ U5(4).
> G := PGammaU(5,4);
> G;
Permutation group G acting on a set of cardinality 17425
Order = 2^22 * 3^2 * 5^5 * 13 * 17 * 41
> time CT := CharacterTable(G);
Time: 22.220
> #CT;
160
> Degree(CT[160]);
5227500
V2.28, 13 July 2023