New Modules from Old

Given one or more existing modules, standard constructions are available to construct new modules.

Direct Sums and Tensor Products

These direct sums and tensor products for K[G]-modules should work for any field K with the exception of the GTensorProduct intrinsics which require K to be a finite field.

DirectSum(M, N) : ModRng, ModRng -> ModRng, Map, Map, Map, Map
Given A-modules M and N, construct the direct sum D of M and N as an A-module. The embedding maps from M into D and from N into D respectively and the projection maps from D onto M and from D onto N respectively, are also returned.
DirectSum(Q) : [ ModRng ] -> ModRng, [ Map ], [ Map ]
Given a sequence Q of A-modules, construct the direct sum D of these modules. The embedding maps from each of the elements of Q into D and the projection maps from D onto each of the elements of Q are also returned.
TensorProduct(M, N) : ModMat, ModMat -> ModMat
Given A-modules M and N, construct their tensor product, M tensor N.
TensorProduct(M, N) : ModGrp, ModGrp -> ModGrp
Let M and N be two K[G]-modules, where K is a field. This function constructs the tensor product, M tensor K N, with action of G defined by (m tensor n) * g := (m * g) tensor (n * g) for m, n ∈M and g ∈G.
TensorPower(M, n) : ModMat, RngIntElt -> ModMat
Given an A-module M and an integer n ≥1, construct the n-th tensor power of M.
ExteriorSquare(M) : ModMat -> ModMat
Given an A--module M, construct the A-submodule of M tensor A M consisting of the skew tensors.
SymmetricSquare(M) : ModMat -> ModMat
Given an A-module M, construct the A-submodule of M tensor A M consisting of the symmetric tensors.
GTensorProduct(M, N) : ModGrp, ModGrp -> ModGrp, Map
Let M and N be two K[G] modules where K is a finite field. This function constructs the tensor product, M tensor KG N. It is equal to FixDual(TensorProduct(M,N)).
GTensorProduct(M, N, H) : ModGrp, ModGrp, Grp -> ModGrp, Map
Let M and N be two K[G] modules where K is a finite field and let H be a subgroup of G. This function constructs the tensor product, M tensor KH N as a NG(H)-module. It is equal to FixDualMod(TensorProduct(M,N), H).

Induction, Restriction and Inflation for K[G]-Modules

Dual(M) : ModGrp -> ModGrp
Given a K[G]-module M, where K is a field, construct the K[G]-module which is the K-dual, HomK(M, K), of M.

Induction(M, G) : ModGrp, Grp -> ModGrp
Given a K[H]-module M, where K is a field, and a supergroup G of H, construct the K[G]-module obtained by inducing M up to G.
Induction(R, G) : Map, Grp -> Map
Given a representation R of a subgroup of G, where R is defined over a field K, construct the representation of G obtained by inducing R up to G.

Restriction(M, H) : ModGrp, Grp -> ModGrp
Given a K[G]-module M, where K is a field, and a subgroup H of G, form the K[H]-module corresponding to the restriction of M to the subgroup H.
Inflation(M, h) : ModGrp, Map -> ModGrp
Given a K[H]-module M, where K is a field, and a group homomorphism h:G to H, return M as a K[G]-module by inflation using h.

Example ModAlg_GModules1 (H99E9)

Starting with the permutation module M over GF(2) for the Mathieu group M22, we apply the induction and restriction functions to find new irreducible modules for M22.

> SetSeed(1);
> G := PermutationGroup< 22 |
>         (1,2,4,8,16,9,18,13,3,6,12)(5,10,20,17,11,22,21,19,15,7,14),
>         (1,18,4,2,6)(5,21,20,10,7)(8,16,13,9,12)(11,19,22,14,17),
>         (1,18,2,4)(3,15)(5,9)(7,16,21,8)(10,12,20,13)(11,17,22,14) >;
> M := PermutationModule(G, GaloisField(2));
> M;
GModule M of dimension 22 with base ring GF(2)
> CM := Constituents(M);
> CM;
[
    GModule of dimension 1 over GF(2),
    GModule of dimension 10 over GF(2),
    GModule of dimension 10 over GF(2)
]

We compute the restriction N of the module M to the stabilizer L34 of a point in M22 and then induce two constituents of N back up to G.

> L34 := Stabilizer(G, 1);
> N := Restriction(M, L34);
> N;
GModule N of dimension 22 with base ring GF(2)
> CN := Constituents(N);
> CN;
[
    GModule of dimension 1 over GF(2),
    GModule of dimension 9 over GF(2),
    GModule of dimension 9 over GF(2)
]
> Ind1 := Induction(CN[1], G);
> Ind1;
GModule Ind1 of dimension 22 over GF(2)
> Constituents(Ind1);
[
    GModule of dimension 1 over GF(2),
    GModule of dimension 10 over GF(2),
    GModule of dimension 10 over GF(2)
]
> Ind2 := Induction(CN[2], G);
> Ind2;
GModule Ind2 of dimension 198 over GF(2)
> Constituents(Ind2);         
[
    GModule of dimension 1 over GF(2),
    GModule of dimension 10 over GF(2),
    GModule of dimension 10 over GF(2),
    GModule of dimension 34 over GF(2),
    GModule of dimension 98 over GF(2)
]

Thus, inducing up the 1-dimensional constituent of N gives us irreducible modules for G having the same dimensions as those appearing as constituents of M. However, inducing up a 9-dimensional module gives us irreducible modules of new dimensions: 34 and 98. Hence starting out with only the permutation module for M22 over GF(2), we have found 5 irreducible modules for the group.


The Fixed-point Spaces for a K[G]-Module

Fix(M): Mod -> Mod
Given a K[G]-module M, K a field, construct the largest submodule of M on which G acts trivially, i.e. the fixed-point space of M. This is equal to the cohomology group H0(G, M).
FixMod(M, H): ModGrp, Grp -> Mod
Given a K[G]-module M, K a field, and a subgroup H of G, return Fix(MH) as a NG(H)-module, where MH is the restriction of M to H.
FixDual(M): ModGrp -> Modgrp, Map
Given a K[G]-module M, K a field, construct the largest quotient module of M on which G acts trivially, i.e. M/N with N := < m * g - m |m ∈M, g ∈G >. This is equal to the homology group H0(G, M). The natural map from M to M/N is also returned.
FixDualMod(M,H): ModGrp, Grp -> Mod
Given a K[G]-module M, K a field, and a subgroup H of G, return FixDual(MH) as a NG(H)-module, where MH is the restriction of M to H. The natural map from M to M/N is also returned.

Change Ring and Base Change

ChangeRing(M, S) : ModRng, Rng -> ModRng, Map
Given an A-module M with base ring R, together with a ring S, such that there is a natural homomorphism from R to S, construct the module N with base ring S where N is obtained from M by coercing the components of the vectors of M into N. The corresponding homomorphism from M to N is returned as a second value.
ChangeRing(M, S, f) : ModRng, Rng, Map -> ModRng, Map
Given an A-module M with base ring R, together with a ring S, and a homomorphism f: R -> S, construct the module N with base ring S, where N is obtained from M by applying f to the components of the vectors of M. The corresponding homomorphism from M to N is returned as a second value.
M ^ T : ModGrp, AlgMatElt -> ModGrp
Given a K[G]-module M of dimension n, where K is a field, and a nonsingular n x n matrix T over K, construct the K[G]-module N which corresponds to taking the rows of T as a basis for M.

Writing a K[G]-Module over a Smaller Field

Rewriting Over a Smaller Degree Finite Field
IsRealisableOverSmallerField(M) : ModGrp -> BoolElt, ModGrp
Given a K[G]-module M, where K is a finite field, return true if M can be realised over a proper subfield F of K. The equivalent F[G]-module is also returned. The Glasby-Howlett algorithm is used to determine the smallest field over which M can be realised.
IsRealisableOverSubfield(M, F) : ModGrp, FldFin -> BoolElt, ModGrp
Let M be a K[G]-module, where K is a finite field of characteristic p, and let F be a finite field also of characteristic p. If it is possible to realise M over the subfield F of K, return true and the equivalent F[G]-module.
WriteOverSmallerField(M, F) : ModGrp, FldFin -> ModGrp, Map
Given a module M of dimension d over a finite field E having degree e and a subfield F of E having degree f, write the action of M as d * e/f by d * e/f matrices over F and return the module and the isomorphism.
AbsoluteModuleOverMinimalField(M, F) : ModGrp, FldFin -> ModGrp
Let M be a K[G]-module, where K is a finite field of characteristic p, and let F be a finite field also of characteristic p. This function returns the module obtained by writing M over the smallest possible field containing F subject to the condition that the dimension of M does not increase. The Glasby-Howlett algorithm is used to determine the smallest field over which M can be realised.
AbsoluteModuleOverMinimalField(M) : ModGrp -> ModGrp
    SetVerbose("Reduce", n):            Maximum: 2
    SetVerbose("Cohomology", n):        Maximum: 2
    SetVerbose("GrunwaldWang", n):      Maximum: 2
Let M be a K[G]-module, where K is a finite field of characteristic p. This function returns the module obtained by writing M over a field of smallest possible degree subject to the condition that the dimension of M does not increase. For modules over finite fields, a field of smallest degree is always a subfield of K, in this case, the Glasby-Howlet algorithm is used.
AbsoluteModulesOverMinimalField(Q, F) : [ ModGrp ], FldFin -> [ ModGrp ]
Let Q be a sequence of K[G]-modules, where K is a finite field of characteristic p, and let F be a finite field also of characteristic p. This function returns the sequence of modules obtained by writing each module M of Q over the smallest possible field containing F subject to the condition that the dimension of M does not increase. Thus, the effect of the function is to apply the function AbsoluteModuleOverMinimalField to each module of Q. The Glasby-Howlett algorithm is used to determine the smallest field over which the modules M of Q can be realised.
ModuleOverSmallerField(M, F) : ModGrp, FldFin -> ModGrp
Let M be a K[G]-module of dimension d, where K is a finite field of characteristic p, and let F be a subfield of K of index n. This function returns the F[G]-module N obtained by writing the action of M as dn x dn matrices over F.
ModulesOverSmallerField(Q, F) : SeqEnum, FldFin -> ModGrp
Let Q be a sequence of K[G]-modules, where K is a finite field of characteristic p, and let F be a subfield of K of index n. This function returns the sequence R of F[G]-modules obtained by applying the function ModuleOverSmallerField to each term of Q. That is, each term N of R is formed by writing the action of the corresponding term of Q as dn x dn matrices over F.
ModulesOverCommonField(M, N) : ModGrp, ModGrp -> ModGrp, ModGrp
Given K[G]-modules M and N defined over finite fields of characteristic p, change their base fields to L, where L is the smallest field containing the base fields of M and N.
Rewriting Over a Smaller Degree Number Field
AbsoluteModuleOverMinimalField(M) : ModGrp -> ModGrp
    SetVerbose("Reduce", n):            Maximum: 2
    SetVerbose("Cohomology", n):        Maximum: 2
    SetVerbose("GrunwaldWang", n):      Maximum: 2
Let M be a K[G]-module, where K is a a number field. This function returns the module obtained by writing M over a field F of smallest possible degree subject to the condition that the dimension of M does not increase. The field F is found using a combination of a method due to W. Plesken and a constructive version of the Grunwald-Wang theorem.
Minimize(M) : ModGrp -> ModGrp
Minimize(R) : Map -> Map
    All: BoolElt                        Default: false
    Char: AlgChtrElt                    Default: false
    FindSmallest: BoolElt               Default: false
    SetVerbose("Reduce", n):            Maximum: 2
    SetVerbose("Cohomology", n):        Maximum: 2
    SetVerbose("GrunwaldWang", n):      Maximum: 2
Given an absolutely irreducible KG-module M or an absolutely irreducible representation R : G -> GL(n, K), where K is a number field, this function tries to find minimal subfields k of K that afford M (R), i.e. it tries to write the module (representation) over a smaller field. In general however, there might be a number field k not contained in K of smaller degree that affords M (R).

If All is set to true, then instead of returning a single module (representation) over a minimal degree subfield of K, a list of modules (representations) over all minimal subfields of K is returned instead.

If Char is given, it should be set to the character of the module (representation).

If FindSmallest is given, the field K will be extended by some auxiliary field A such that KA will contain a minimal degree field affording R. This involves a constructive version of the Grunwald-Wang theorem and can be computationally expensive if the degree of KA is too large.

WriteGModuleOver(M, K) : ModGrp, FldAlg -> ModGrp
WriteRepresentationOver(R, K) : Map, FldAlg -> Map
    Char: AlgChtrElt                    Default: false
    Subfield: BoolElt                   Default: false
    SetVerbose("Reduce", n):            Maximum: 2
    SetVerbose("Cohomology", n):        Maximum: 2
    SetVerbose("GrunwaldWang", n):      Maximum: 2
Given an absolutely irreducible L[G]-module M or an absolutely irreducible representation R : G -> GL(n, L), where L is a number field, and a number field K that is a normal extension, try to write M (R) over K.

If Char is specified, it should be set to the character of this module (representation).

If Subfield is set to true, the module (representation) will be rewritten over a minimal degree subfield of K.


Example ModAlg_minimal-field (H99E10)

We will work with the G-module and character of the unique 2-dimensional character of Q8. It is well known that, while the character is defined over Q, the corresponding representation can only be defined over fields where -1 is the sum of 2 squares.

> G := TransitiveGroup(8, 5);
> TransitiveGroupDescription(G);
Q_8(8);
> R := AbsolutelyIrreducibleModules(G, Rationals());
> R;
[
    GModule of dimension 1 over Rational Field,
    GModule of dimension 1 over Rational Field,
    GModule of dimension 1 over Rational Field,
    GModule of dimension 1 over Rational Field,
    GModule of dimension 2 over Cyclotomic Field
    of order 4 and degree 2
]
> R := R[5];
> WriteGModuleOver(R, CyclotomicField(5));
GModule of dimension 2 over Cyclotomic Field 
of order 5 and degree 4
So Q(ζ5) is an example of a field affording the module but having no minimal degree subfield (of degree 2 here) affording R!.

> AbsoluteModuleOverMinimalField($1);
GModule of dimension 2 over Number Field with
defining polynomial Qx.1^2 - Qx.1 + 1 over the
Rational Field
Note that the base field returned here is Q(ζ3) which is of degree 2 but different from Q(ζ4) that was found initially. In general there are infinetely many minimal degree splitting fields.

If we try to realize R over a field where -1 cannot be written as a sums of two squares we get an error:

> WriteGModuleOver(R, QuadraticField(3));

>> WriteGModuleOver(R, QuadraticField(3));
                   ^
Runtime error in 'WriteGModuleOver': The G-module 
cannot be realised over K
We can try to find a minimal field containing Q(√3) by computing the local Schur-indices and then obtain a splitting field:

> k := QuadraticField(3);
> SchurIndices(Character(R), k);
[ <1st place at infinity, 2>, <2nd place at infinity, 2> ]
> A := SplittingField($1);
> A;
FldAb, defined by (<3>, [1      2]) of structure: Z/2
So the splitting field is returned as an abelian extension. We can see that A is of degree 2 over k and will be ramified at most at 3 and both infinite places. In order to use it to rewrite the module, we need to convert to a number field over Q first:

> A := NumberField(A);
> A;
Number Field with defining polynomial $.1^2 + 1 over k
> A := AbsoluteField(A);
> A;
Number Field with defining polynomial 
    Qx.1^4 - 4*Qx.1^2 + 16 over the Rational Field

> WriteGModuleOver(R, A);
GModule of dimension 2 over A
> WriteGModuleOver(R, A : Subfield);
GModule of dimension 2 over Number Field with
defining polynomial Qx.1^2 - Qx.1 + 1 over the
Rational Field

[Next][Prev] [Right] [Left] [Up] [Index] [Root]


Version: V2.29 of Fri Nov 28 15:14:01 AEDT 2025