53.14 Storing Subgroup Information

Many computations for a group character chi of a group G, such as that of kernel or centre of chi, involve computations in (normal) subgroups or factor groups of G.

There are two aspects that make it reasonable to store relevant information used in these computations.

First it is possible to use the character table of a group for computations with the group. For example, suppose we know for every normal subgroup N the list of positions of conjugacy classes that form N. Then we can compute the intersection of normal subgroups efficiently by intersecting the corresponding lists.

Second one should try to reuse (expensive) information one has computed. Suppose you need the character table of a certain subgroup U that was constructed for example as inertia subgroup of a character. Then it may be probable that this group has been constructed already. So one should look whether U occurs in a list of interesting subgroups for that the tables are already known.

This section lists several data structures that support storing and using information about subgroups.

Storing Normal Subgroup Information

In some cases a question about a normal subgroup N can be answered efficiently if one knows the character table of G and the G-conjugacy classes that form N, e.g., the question whether a character of G restricts irreducibly to N. But other questions require the computation of the group N or even more information, e.g., if we want to know whether a character restricts homogeneously to N this will in general require the computation of the character table of N.

In order to do such computations only once, we introduce three components in the group record of G to store normal subgroups, the corresponding lists of conjugacy classes, and (if known) the factor groups, namely

nsg:

a list of (not necessarily all) normal subgroups of G,

nsgclasses:

at position i the list of positions of conjugacy classes forming the i-th entry of the nsg component,

nsgfactors:

at position i (if bound) the factor group modulo the i-th entry of the nsg component.

The functions

NormalSubgroupClasses,
FactorGroupNormalSubgroupClasses,
ClassesNormalSubgroup

initialize these components and update them. They are the only functions that do this.

So if you need information about a normal subgroup of G for that you know the G-conjugacy classes, you should get it using NormalSubgroupClasses. If the normal subgroup was already stored it is just returned, with all the knowledge it contains. Otherwise the normal subgroup is computed and added to the lists, and will be available for the next call.

Storing information for computing conjugate class functions

The computation of conjugate class functions requires the computation of permutatins of the list of conjugacy classes. In order to minimize the number of membership tests in conjugacy classes it is useful to store a partition of classes that is respected by every admissible permutation. This is stored in the component globalPartitionClasses.

If the normalizer N of H in its parent is stored in H, or if H is normal in its parent then the component permClassesHomomorphism is used. It holds the group homomorphism mapping every element of N to the induced permutation of classes.

Both components are generated automatically when they are needed.

Storing inertia subgroup information

Let N be the normalizer of H in its parent, and chi a character of H. The inertia subgroup I_N(chi) is the stabilizer in N of chi under conjugation of class functions. Characters with same value distribution, like Galois conjugate characters, have the same inertia subgroup. It seems to be useful to store this information. For that, the inertiaInfo component of H is initialized when needed, a record with components partitions and stabilizers, both lists. The stabilizers component contains the stabilizer in N of the corresponding partition.

Previous Up Top Next
Index

GAP 3.4.4
April 1997