Given one or more existing modules, standard constructions are available to construct new modules.
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.
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.
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.
Given A-modules M and N, construct their tensor product, M tensor N.
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.
Given an A-module M and an integer n ≥1, construct the n-th tensor power of M.
Given an A--module M, construct the A-submodule of M tensor A M consisting of the skew tensors.
Given an A-module M, construct the A-submodule of M tensor A M consisting of the symmetric tensors.
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)).
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).
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.
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.
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.
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.
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.
> 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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
> 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 4So 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 FieldNote 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 KWe 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/2So 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