Structure of a Module
Some of the functions described in this section assume that the base ring is a finite field.
Splitting a Module
It is frequently desirable to determine whether an \(A\)-module \(M\) is irreducible and if not to return a proper submodule \(N\) of \(M\) together with the quotient module \(Q = M/N\). This is achieved using the Meataxe algorithm. By repeated applications of the Meataxe, all of the irreducible constituents of \(M\) can be found.
- Meataxe(M): ModRng -> ModRng, ModRng, AlgMatElt
Given an \(A\)-module \(M\) whose base ring either a finite field or number field, find a proper submodule \(N\) of \(M\) or else prove that \(M\) is irreducible. If a splitting of \(M\) is found, three values are returned:
- (a)
An \(A\)-module \(N\) corresponding to the induced action of \(A\) on \(S\);
- (b)
An \(A\)-module \(P\) corresponding to the induced action of \(A\) on the quotient space \(M/N\);
- (c)
Let \(\phi\), \(\nu\), and \(\pi\) denote the representations of \(A\) afforded by modules \(M\), \(N\), and \(P\), respectively. The third value returned is an invertible matrix \(T\) which conjugates the matrices of \(\phi(A)\) into reduced form. Specifically, if \(a \in A\), then
\[\begin{split}T*\phi(a)*T^{-1}=\left(\begin{matrix}\nu(a)&0\\ *&\pi(a)\end{matrix}\right)\end{split}\]If \(M\) is proved to be irreducible, the function simply returns \(M\). The fact that \(M\) is irreducible is recorded as part of the data structure for \(M\).
- IsIrreducible(M): ModRng -> BoolElt, ModRng, ModRng
Given an \(A\)-module \(M\) defined over a finite field or number field, this intrinsic returns
trueif and only if the \(A\)-module \(M\) is irreducible. If \(M\) is reducible, a proper submodule \(S\) of \(M\) together with the corresponding quotient module \(Q = M/S\), are also returned.
- IsAbsolutelyIrreducible(M): ModRng -> BoolElt, AlgMatElt, RngIntElt
Given an \(A\)-module \(M\) defined over a finite field, this intrinsic returns
trueif and only if the \(A\)-module \(M\) is absolutely irreducible. Also returned are a matrix algebra generator for the endomorphism algebra \(E\) of \(M\) (a field), as well as the dimension of \(E\).
- AbsolutelyIrreducibleModule(M): ModRng -> ModRng
Given an \(A\)-module \(M\) defined over a finite field \(K\) that is irreducible but not absolutely irreducible over \(K\), this intrinsic returns an irreducible module \(N\) that is a constituent of the module \(M\) considered as a module over the splitting field for \(M\). Note that the module \(N\), while not unique, is absolutely irreducible.
- MinimalField(M): ModRng -> FldFin
Let \(A\) be a matrix algebra over a finite field \(K\). Given an \(A\)-module \(M\) over \(K\), return the smallest subfield of \(K\), over which \(M\) can be realised.
- Example: Applying the Meataxe to O5(3) (ex-0a0c7d)
Run in calculator (opens in a new tab)
Consider the group \(O_5(3)\) given as a permutation group of degree \(45\). We construct the permutation module, and we apply the Meataxe manually to find an irreducible constituent. (The splitting obtained by each application of the meataxe is random, and running this input repeatedly will produce different results.)
> SetSeed(1); > O53 := PermutationGroup<45 | > (2,3)(4,6)(7,9)(8,11)(12,16)(13,14)(15,19)(18,22)(20,25)(21,26)(27,33) > (28,35) (29,34)(31,38)(36,43)(39,41), > (1,2,4,7,10,14,16,3,5)(6,8,12,17,21,27,34,41,44)(9,13,18,23,29,37,33,40,43) > (11,15,20)(19,24,30,25,31,22,28,36,38)(26,32,39)(35,42,45)>; > > P := PermutationModule(O53, GF(2)); > A := P; > while not IsIrreducible(A) do > A, B := Meataxe(P); A; B; > end while; GModule A of dimension 14 over GF(2) GModule B of dimension 31 over GF(2) > A; GModule A of dimension 14 over GF(2) > G := MatrixGroup(A); // Get matrix group from representation > G: Minimal; MatrixGroup(14, GF(2)) > time #G; 25920 > assert #G eq #O53 or Dimension(A) eq 1 and #G eq 1; // Group is simple
Composition Series
- CompositionSeries(M): ModRng -> [ ModRng ], [ ModRng ], AlgMatElt
Given an \(A\)-module \(M\) defined over a finite field or number field, construct a composition series by repeatedly applying the Meataxe. The function returns three values:
- (a)
The composition series as a sequence of \(A\)-modules;
- (b)
The composition factors as a sequence of \(A\)-modules in the order determined by the composition series (a);
- (c)
A transformation matrix \(t\) such that for each \(a \in A\), \(t*a*t^{-1}\) is in reduced form.
- CompositionFactors(M): ModRng -> [ ModRng ]
Given a matrix algebra \(A\) defined over a finite field or number field and an \(A\)-module \(M\), construct the composition factors by repeatedly applying the Meataxe. The composition factors are returned in the form of a sequence of modules in the order determined by a composition series for \(M\). If \(M\) is irreducible, the function returns a sequence containing \(M\) alone.
- Constituents(M): ModRng -> [ ModRng ], [ RngIntElt ]
Given a matrix algebra \(A\) defined over a finite field or number field and an \(A\)-module \(M\), construct the constituents of \(M\), i.e., a sequence \(C\) of representatives for the isomorphism classes of composition factors of \(M\). A sequence \(I\) of indices is also returned, so that \(i\)-th element of \(C\) is the \(I[i]\)-th composition factor of \(M\).
- ConstituentsWithMultiplicities(M): ModRng -> [ <ModRng, RngIntElt> ], [ RngIntElt ]
Given a matrix algebra \(A\) defined over a finite field or number field and an \(A\)-module \(M\), return the constituents of \(M\) as a sequence \(C\) containing each constituent together with its multiplicity. A sequence \(I\) of indices is also returned, so that \(i\)-th term of \(C\) is the \(I[i]\)-th composition factor of \(M\).
- Example: Composition Series for O5(3) (ex-90fff5)
Run in calculator (opens in a new tab)
We continue with the \(O_5(3)\) example from the previous section. We notice that the constituent of dimension of 8 is not absolutely irreducible, so we lift it to over an extension field.
> O53 := PermutationGroup<45 | > (2,3)(4,6)(7,9)(8,11)(12,16)(13,14)(15,19)(18,22)(20,25)(21,26)(27,33) > (28,35) (29,34)(31,38)(36,43)(39,41), > (1,2,4,7,10,14,16,3,5)(6,8,12,17,21,27,34,41,44)(9,13,18,23,29,37,33,40,43) > (11,15,20)(19,24,30,25,31,22,28,36,38)(26,32,39)(35,42,45)>; > > P := PermutationModule(O53, GaloisField(2)); > Constituents(P); [ GModule of dimension 1 over GF(2), GModule of dimension 6 over GF(2), GModule of dimension 8 over GF(2), GModule of dimension 14 over GF(2) ] > ConstituentsWithMultiplicities(P); [ <GModule of dimension 1 over GF(2), 3>, <GModule of dimension 6 over GF(2), 1>, <GModule of dimension 8 over GF(2), 1>, <GModule of dimension 14 over GF(2), 2> ] > S, F := CompositionSeries(P); > S, F; [ GModule of dimension 14 over GF(2), GModule of dimension 20 over GF(2), GModule of dimension 21 over GF(2), GModule of dimension 29 over GF(2), GModule of dimension 30 over GF(2), GModule of dimension 31 over GF(2), GModule P of dimension 45 over GF(2) ] [ GModule of dimension 14 over GF(2), GModule of dimension 6 over GF(2), GModule of dimension 1 over GF(2), GModule of dimension 8 over GF(2), GModule of dimension 1 over GF(2), GModule of dimension 1 over GF(2), GModule of dimension 14 over GF(2) ] > IndecomposableSummands(P); [ GModule of dimension 1 over GF(2), GModule of dimension 44 over GF(2) ] > C := Constituents(P); > C; [ GModule of dimension 1 over GF(2), GModule of dimension 6 over GF(2), GModule of dimension 8 over GF(2), GModule of dimension 14 over GF(2) ] > [IsAbsolutelyIrreducible(M): M in C]; [ true, true, false, true ] > DimensionOfEndomorphismRing(C[3]); 2 > L := GF(2^2); > E := ChangeRing(C[3], L); > E; GModule E of dimension 8 over GF(2^2) > CE := CompositionFactors(E); > CE; [ GModule of dimension 4 over GF(2^2), GModule of dimension 4 over GF(2^2) ] > IsAbsolutelyIrreducible(CE[1]); true > IsIsomorphic(CE[1], CE[2]); false
Minimal and Maximal Submodules
Note that intrinsics MinimalSubmodules and MinimalSubmodules apply only in the case of finite fields as there are an infinite number of such submodules over fields of characteristic zero.
- JacobsonRadical(M): ModRng -> ModRng, Map
Given a \(K[G]\)-module \(M\) defined over a finite field or a number field \(K\), the Jacobson radical of \(M\) is returned.
- MinimalSubmodule(M): ModRng -> ModRng
Given a \(K[G]\)-module \(M\) defined over a finite field or number field \(K\), return a single minimal (or irreducible) submodule of \(M\); if \(M\) is itself irreducible, \(M\) is returned.
- MinimalSubmodules(M): ModRng -> [ ModRng ], BoolElt
Limit: RngIntElt Default: 0
Given a \(K[G]\)-module \(M\) defined over a finite field, return a sequence containing the minimal submodules of \(M\). If the parameter
Limitis given a positive integer value \(L\), at most \(L\) submodules are calculated, and the second return value indicates whether all of the submodules are returned.
- MinimalSubmodules(M, F): ModRng, ModRng -> [ ModRng ], BoolElt
Limit: RngIntElt Default: 0
Given a \(K[G]\)-module \(M\) defined over a finite field and an irreducible \(K[G]\)-module \(N\), return a sequence containing those minimal submodules of \(M\), each of which is isomorphic to \(N\). If the parameter
Limitis given a positive integer value \(L\), at most \(L\) submodules are calculated, and the second return value indicates whether all of the submodules are returned.
- MaximalSubmodules(M): ModRng -> [ ModRng ], BoolElt
Limit: RngIntElt Default: 0
Given a \(K[G]\)-module \(M\) defined over a finite field, return a sequence containing the maximal submodules of \(M\). If a limit \(L\) is provided, only up \(L\) submodules are calculated, and the second return value indicates whether all of the submodules are returned.
Socle Series
- Socle(M): ModRng -> ModRng, Map
Given a \(K[G]\)-module \(M\) defined over a finite field or number field \(K\), return its socle, i.e. the direct sum of the minimal submodules of \(M\).
- SocleRecursive(M): ModRng -> ModRng
Given a \(K[G]\)-module \(M\) defined over a finite field or number field \(K\), return its socle. This uses an algorithm due to Brooksbank and Luks.
- SocleSeries(M): ModRng -> [ ModRng ], [ ModRng ], AlgMatElt
Given a \(K[G]\)-module \(M\) defined over a finite field or number field \(K\), return a socle series \(S\) \(M\), together with the socle factors corresponding to the terms of \(S\) and a matrix \(T\) giving the transformation of \(M\) into (semi-simple) reduced form. The socle series, as returned, does not include the trivial module but does include \(M\).
- SocleFactors(M): ModRng -> [ ModRng ]
Given a \(K[G]\)-module \(M\) defined over a finite field or number field \(K\), return the factors corresponding to the terms of a socle series for \(M\). The factors are returned in the form of a sequence of \(A\)-modules in the order determined by a socle series for \(M\). If \(M\) is irreducible, the function returns a sequence containing \(M\) alone.
- SocleLayerFactors(M): ModGrp -> SeqEnum
Given a \(KG\)-module \(M\) (usually a projective indecomposable module) defined over a finite field, this intrinsic determines the composition factors of the socle layers of \(M\). Here a layer is the quotient of two adjacent terms of the socle series of \(M\). At present computation of the socle series employs a naive algorithm but this will be replaced by one that employs condensation.
- DisplaySocleStructure(SL): SeqEnum
The intrinsic,
DisplaySocleStructure, takes the output ofSocleLayerFactorsand displays it in “Christmas tree” style.
- Example: Minimal Submodules for O5(3) (ex-eb70be)
Run in calculator (opens in a new tab)
We continue with the \(O_5(3)\) example from the previous section.
> O53 := PermutationGroup<45 | > (2,3)(4,6)(7,9)(8,11)(12,16)(13,14)(15,19)(18,22)(20,25)(21,26)(27,33) > (28,35) (29,34)(31,38)(36,43)(39,41), > (1,2,4,7,10,14,16,3,5)(6,8,12,17,21,27,34,41,44)(9,13,18,23,29,37,33,40,43) > (11,15,20)(19,24,30,25,31,22,28,36,38)(26,32,39)(35,42,45)>; > > P := PermutationModule(O53, FiniteField(2)); > MaximalSubmodules(P); [ GModule of dimension 31 over GF(2), GModule of dimension 44 over GF(2) ] > JacobsonRadical(P); GModule of dimension 30 over GF(2) > MinimalSubmodules(P); [ GModule of dimension 1 over GF(2), GModule of dimension 14 over GF(2) ] > Soc := Socle(P); > Soc; GModule Soc of dimension 15 over GF(2) > SocleSeries(P); [ GModule of dimension 15 over GF(2), GModule of dimension 22 over GF(2), GModule of dimension 30 over GF(2), GModule of dimension 31 over GF(2), GModule P of dimension 45 over GF(2) ] > SocleFactors(P); [ GModule of dimension 15 over GF(2), GModule of dimension 7 over GF(2), GModule of dimension 8 over GF(2), GModule of dimension 1 over GF(2), GModule of dimension 14 over GF(2) ]
Decomposition and Complements
The functions in this section currently apply only in the case in which \(A\) is an algebra over a finite field.
- IsDecomposable(M): ModRng -> BoolElt, ModRng, ModRng
Given a \(K[G]\)-module \(M\) defined over a finite field or number field \(K\), return
trueif \(M\) is decomposable andfalseotherwise. If \(M\) is decomposable, the function also returns proper submodules \(S\) and \(T\) of \(M\) such that \(M = S\oplus T\).
- IsSemisimple(M): ModGrp -> BoolElt
Given a \(K[G]\)-module \(M\) defined over a finite field or number field \(K\), return
trueif \(M\) is semisimple andfalseotherwise. The function returns a second value listing the ranks of the primitive idempotents of the algebra. This is also a list of the multiplicities of composition factors in a composition series for \(M\).
- DirectSumDecomposition(M): ModRng -> [ ModRng ]
- IndecomposableSummands(M): ModRng -> [ ModRng ]
- Decomposition(M): ModRng -> [ ModRng ]
Given a \(K[G]\)-module \(M\) defined over a finite field or number field \(K\), return a sequence \(Q\) of indecomposable summands of \(M\). Each element of \(Q\) is an indecomposable submodule of \(M\) and \(M\) is equal to the (direct) sum of the terms of \(Q\). If \(M\) is indecomposable, the sequence \(Q\) consists of \(M\) alone.
- RelativeDecomposition(M, T): ModRng, ModRng -> ModRng, ModRng
Given an \(A\)-module \(M\) defined over a finite field, return the direct sum decomposition of \(M\) into \(A\)-modules \(N\) and \(K\) where \(M\) = \(N\) + \(K\), and \(K\) is minimal with respect to containing the \(A\)-module \(T\). This uses an algorithm due to Brooksbank and Luks.
- HasComplement(M, S): ModGrp, ModGrp -> BoolElt, ModGrp
- HasComplement(M, S): ModRng, ModRng -> BoolElt, ModRng
- IsDirectSummand(M, S): ModGrp, ModGrp -> BoolElt, ModGrp
- IsDirectSummand(M, S): ModRng, ModRng -> BoolElt, ModRng
Given a \(K[G]\)-module \(M\) defined over a finite field or number field \(K\), and a submodule \(S\) of \(M\), determine whether \(S\) has a \(K[G]\)-invariant complement in \(M\). If this is the case, the value
trueis returned together with a submodule \(T\) of \(M\) such that \(M = S\oplus T\); otherwise the valuefalseis returned.
- Complements(M, S): ModGrp, ModGrp -> [ ModGrp ]
- Complements(M, S): ModRng, ModRng -> [ ModRng ]
Given a \(K[G]\)-module \(M\) defined over a finite field or number field \(K\), and a submodule \(S\), return all \(K[G]\)-invariant complements of \(S\) in \(M\).
- Example: Decomposition of a Matrix Algebra Module (ex-6acaf1)
Run in calculator (opens in a new tab)
> A := MatrixAlgebra<GF(2), 6 | > [ 1,0,0,1,0,1, > 0,1,0,0,1,1, > 0,1,1,1,1,0, > 0,0,0,1,1,0, > 0,0,0,1,0,1, > 0,1,0,1,0,0 ], > [ 0,1,1,0,1,0, > 0,0,1,1,1,1, > 1,0,0,1,0,1, > 0,0,0,1,0,0, > 0,0,0,0,1,0, > 0,0,0,0,0,1 ] >; > M := RModule(RSpace(GF(2), 6), A); > M; RModule M of dimension 6 over GF(2) > IsDecomposable(M); false > MM := DirectSum(M, M); > MM; RModule MM of dimension 12 over GF(2) > l, S, T := IsDecomposable(MM); > l; true; > S; RModule S of dimension 6 over GF(2) > HasComplement(MM, S); true > Complements(MM, S); [ RModule of dimension 6 over GF(2), RModule of dimension 6 over GF(2) ] > IndecomposableSummands(MM); [ RModule of dimension 6 over GF(2), RModule of dimension 6 over GF(2) ] > Q := IndecomposableSummands(MM); > Q; [ RModule of dimension 6 over GF(2), RModule of dimension 6 over GF(2) ] > Q[1] meet Q[2]; RModule of dimension 0 over GF(2) > Q[1] + Q[2]; RModule MM of dimension 12 over GF(2)