Representation Theory

A set of functions are provided for computing with the characters of a group. Full details of these functions may be found in Chapter CHARACTERS OF FINITE GROUPS. For convenience we include here two of the more useful character functions.

Also, functions are provided for computing with the modular representations of a group. Full details of these functions may be found in Chapter MODULES OVER AN ALGEBRA AND GROUP REPRESENTATIONS. For the reader's convenience we include here the functions which may be used to define a K[G]-module for a matrix group.

The functions described in this section apply only to finite groups for which a base and strong generating set may be constructed.

LinearCharacters(G) : GrpMat -> [ Chtr ]
A sequence containing the linear characters for the group G.
CharacterTable(G: parameters) : GrpMat -> TabChtr
Construct the table of ordinary irreducible characters for the group G.
     Al: MonStgElt                       Default: em "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 induction/reduction algorithm [Ung06a]. The "Default" algorithm is to use Dixon-Schneider for groups of order ≤5000 and Unger's algorithm for larger groups. This may change in future.
     DSSizeLimit: RngIntElt              Default: 0
When the default algorithm is selected, a positive value n for DSSizeLimit means that before using Unger's algorithm, the full character space is split by some passes of Dixon-Schneider, restricted to using class matrices corresponding to conjugacy classes with size at most n.
PermutationCharacter(G, H) : GrpMat, GrpMat -> AlgChtrElt
Given a group G and a subgroup H of G, construct the ordinary character afforded by the representation of G given by its action on the coset space of the subgroup H.
GModule(G) : GrpMat -> ModGrp
The natural R[G]-module for the matrix group G.
GModule(G, A) : GrpMat, AlgMat -> ModGrp
Let A be a matrix ring defined over the ring R and let G be a finite group defined on m generators. Let M denote the underlying module of A. Suppose there is a one-to-one correspondence between the generators of G and the generators [ A1, ..., Am ] of A. The function GModule creates the R[G]-module corresponding to an action of G on M defined by A, where the action of the i-th generator of G on M is given by Ai.
GModule(G, Q) : GrpMat, [ AlgMatElt ] -> ModGrp
Let A be a matrix ring defined over the ring R and let G be a finite group defined on m generators. Let M denote the underlying module of A. Given a sequence Q of m elements of A, the function GModule creates the R[G]-module corresponding to an action of G on M defined by Q, where the action of the i-th generator of G on M is given by Q[i].
GModule(G, A, B) : GrpMat, GrpMat, GrpMat -> ModGrp, Map
Let A and B be normal subgroups of G such that B is contained in A. Further, assume that A/B is elementary abelian of order pn, p a prime. Let K denote the field of p elements. This function constructs a K[G]-module corresponding to the action of the group G on the elementary abelian section A/B of G. The map from A to the K[G]-module's underlying vector space is also returned.
PermutationModule(G, H, R) : GrpMat, GrpMat, Rng -> ModGrp
The permutation module for the matrix group G over the ring R defined by its action on the cosets of the subgroup H.
ChangeOfBasisMatrix(G, S) : GrpMat, ModGrp -> AlgMatElt
Given a matrix group G and a submodule S of its natural module, return an invertible matrix with topmost rows a basis for S. Conjugating by the inverse of this matrix puts the generators of G into a block form that exhibits their action on S and the quotient module.

Example GrpMatGen_GModule (H65E35)

We use the module machinery to refine an elementary abelian normal subgroup by finding a normal subgroup contained in it.
> G := MatrixGroup<4, IntegerRing(4) |
>  [ 3, 3, 1, 3, 0, 2, 2, 3, 3, 0, 1, 3, 3, 2, 2, 1 ],
>  [ 2, 2, 3, 3, 0, 3, 1, 1, 3, 0, 1, 1, 2, 0, 1, 2 ] >;
> #G;
660602880
> H := pCore(G, 2);
> FactoredOrder(H);
[ <2, 15> ]
> IsElementaryAbelian(H);
true
> M, f := GModule(G, H, sub<H|>);
> SM := Submodules(M);
> #SM;
3
One of these submodules is 0, one is all M, we are interested in the one in the middle. Note that the result returned by Submodules is sorted by dimension.
> N := SM[2] @@ f;
> N;
MatrixGroup(4, IntegerRing(4))
Generators:
  [3 0 0 0]
  [0 3 0 0]
  [0 0 3 0]
  [0 0 0 3]
We have found N, a normal subgroup of G, contained in the 2-core, with order 2.
V2.28, 13 July 2023