  
  [1X17 [33X[0;0Y[22XFpG[122X[101X[1X-modules[133X[101X
  
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XCompositionSeriesOfFpGModules(M) [110X[133X
  
  [33X[0;0YInputs  an  [22XFpG[122X-module [22XM[122X and returns a list of [22XFpG[122X-modules that constitute a
  composition series for [22XM[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XDirectSumOfFpGModules(M,N) [110X[133X
  [33X[0;0Y[10XDirectSumOfFpGModules([ M[1], M[2], ..., M[k] ])) [110X[133X
  
  [33X[0;0YInputs  two  [22XFpG[122X-modules  [22XM[122X  and  [22XN[122X with common group and characteristic. It
  returns the direct sum of [22XM[122X and [22XN[122X as an [22XFpG[122X-Module.[133X
  
  [33X[0;0YAlternatively,  the  function  can  input  a list of [22XFpG[122X-modules with common
  group [22XG[122X. It returns the direct sum of the list.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XFpGModule(A,P) [110X[133X
  [33X[0;0Y[10XFpGModule(A,G,p) [110X[133X
  
  [33X[0;0YInputs  a  [22Xp[122X-group [22XP[122X and a matrix [22XA[122X whose rows have length a multiple of the
  order of [22XG[122X. It returns the [21Xcanonical[121X [22XFpG[122X-module generated by the rows of [22XA[122X.[133X
  
  [33X[0;0YA   small   non-prime-power   group  [22XG[122X  can  also  be  input,  provided  the
  characteristic [22Xp[122X is entered as a third input variable.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XFpGModuleDualBasis(M) [110X[133X
  
  [33X[0;0YInputs an [22XFpG[122X-module [22XM[122X. It returns a record [22XR[122X with two components:[133X
  [33X[0;0Y[22XR.freeModule[122X is the free module [22XFG[122X of rank one.[133X
  [33X[0;0Y[22XR.basis[122X  is a list representing an [22XF[122X-basis for the module [22XHom_FG(M,FG)[122X. Each
  term  in  the  list  is  a  matrix  [22XA[122X whose rows are vectors in [22XFG[122X such that
  [22XM!.generators[i] ⟶ A[i][122X extends to a module homomorphism [22XM ⟶ FG[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XFpGModuleHomomorphism(M,N,A) [110X[133X
  [33X[0;0Y[10XFpGModuleHomomorphismNC(M,N,A) [110X[133X
  
  [33X[0;0YInputs  [22XFpG[122X-modules [22XM[122X and [22XN[122X over a common [22Xp[122X-group [22XG[122X. Also inputs a list [22XA[122X of
  vectors in the vector space spanned by [22XN!.matrix[122X. It tests that the function[133X
  
  [33X[0;0Y[22XM!.generators[i] ⟶ A[i][122X[133X
  
  [33X[0;0Yextends to a homomorphism of [22XFpG[122X-modules and, if the test is passed, returns
  the  corresponding [22XFpG[122X-module homomorphism. If the test is failed it returns
  fail.[133X
  
  [33X[0;0YThe  "NC"  version  of  the  function  assumes  that  the  input  defines  a
  homomorphism and simply returns the [22XFpG[122X-module homomorphism.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10X DesuspensionFpGModule(M,n)[110X[133X
  [33X[0;0Y[10XDesuspensionFpGModule(R,n) [110X[133X
  
  [33X[0;0YInputs  a  positive integer [22Xn[122X and and FpG-module [22XM[122X. It returns an FpG-module
  [22XD^nM[122X  which  is mathematically related to [22XM[122X via an exact sequence [22X0 ⟶ D^nM ⟶
  R_n ⟶ ... ⟶ R_0 ⟶ M ⟶ 0[122X where [22XR_∗[122X is a free resolution. (If [22XG=Group(M)[122X is of
  prime-power order then the resolution is minimal.)[133X
  
  [33X[0;0YAlternatively,  the  function  can input a positive integer [22Xn[122X and at least [22Xn[122X
  terms of a free resolution [22XR[122X of [22XM[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XRadicalOfFpGModule(M) [110X[133X
  
  [33X[0;0YInputs  an [22XFpG[122X-module [22XM[122X with [22XG[122X a [22Xp[122X-group, and returns the Radical of [22XM[122X as an
  [22XFpG[122X-module.  (Ig  [22XG[122X  is  not  a  [22Xp[122X-group  then a submodule of the radical is
  returned.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XRadicalSeriesOfFpGModule(M) [110X[133X
  
  [33X[0;0YInputs an [22XFpG[122X-module [22XM[122X and returns a list of [22XFpG[122X-modules that constitute the
  radical series for [22XM[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XGeneratorsOfFpGModule(M) [110X[133X
  
  [33X[0;0YInputs  an  [22XFpG[122X-module  [22XM[122X  and  returns  a matrix whose rows correspond to a
  minimal generating set for [22XM[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XImageOfFpGModuleHomomorphism(f) [110X[133X
  
  [33X[0;0YInputs  an  [22XFpG[122X-module homomorphism [22Xf:M ⟶ N[122X and returns its image [22Xf(M)[122X as an
  [22XFpG[122X-module.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XGroupAlgebraAsFpGModule(G) [110X[133X
  
  [33X[0;0YInputs a [22Xp[122X-group [22XG[122X and returns its mod [22Xp[122X group algebra as an [22XFpG[122X-module.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XIntersectionOfFpGModules(M,N) [110X[133X
  
  [33X[0;0YInputs  two  [22XFpG[122X-modules  [22XM, N[122X arising as submodules in a common free module
  [22X(FG)^n[122X  where  [22XG[122X is a finite group and [22XF[122X the field of [22Xp[122X-elements. It returns
  the [22XFpG[122X-module arising as the intersection of [22XM[122X and [22XN[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XIsFpGModuleHomomorphismData(M,N,A) [110X[133X
  
  [33X[0;0YInputs  [22XFpG[122X-modules [22XM[122X and [22XN[122X over a common [22Xp[122X-group [22XG[122X. Also inputs a list [22XA[122X of
  vectors  in  the  vector  space spanned by [22XN!.matrix[122X. It returns true if the
  function[133X
  
  [33X[0;0Y[22XM!.generators[i] ⟶ A[i][122X[133X
  
  [33X[0;0Yextends to a homomorphism of [22XFpG[122X-modules. Otherwise it returns false.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XMaximalSubmoduleOfFpGModule(M) [110X[133X
  
  [33X[0;0YInputs an [22XFpG[122X-module [22XM[122X and returns one maximal [22XFpG[122X-submodule of [22XM[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XMaximalSubmodulesOfFpGModule(M) [110X[133X
  
  [33X[0;0YInputs an [22XFpG[122X-module [22XM[122X and returns the list of maximal [22XFpG[122X-submodules of [22XM[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XMultipleOfFpGModule(w,M) [110X[133X
  
  [33X[0;0YInputs  an  [22XFpG[122X-module  [22XM[122X  and a list [22Xw:=[g_1 , ..., g_t][122X of elements in the
  group  [22XG=M!.group[122X.  The list [22Xw[122X can be thought of as representing the element
  [22Xw=g_1  +  ...  +  g_t[122X  in  the  group algebra [22XFG[122X, and the function returns a
  semi-echelon matrix [22XB[122X which is a basis for the vector subspace [22XwM[122X .[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XProjectedFpGModule(M,k) [110X[133X
  
  [33X[0;0YInputs an [22XFpG[122X-module [22XM[122X of ambient dimension [22Xn|G|[122X, and an integer [22Xk[122X between [22X1[122X
  and  [22Xn[122X.  The  module  [22XM[122X  is  a submodule of the free module [22X(FG)^n[122X . Let [22XM_k[122X
  denote  the  intersection  of  [22XM[122X  with  the  last [22Xk[122X summands of [22X(FG)^n[122X . The
  function returns the image of the projection of [22XM_k[122X onto the [22Xk[122X-th summand of
  [22X(FG)^n[122X . This image is returned an [22XFpG[122X-module with ambient dimension [22X|G|[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XRandomHomomorphismOfFpGModules(M,N) [110X[133X
  
  [33X[0;0YInputs  two  [22XFpG[122X-modules  [22XM[122X and [22XN[122X over a common group [22XG[122X. It returns a random
  matrix [22XA[122X whose rows are vectors in [22XN[122X such that the function[133X
  
  [33X[0;0Y[22XM!.generators[i] ⟶ A[i][122X[133X
  
  [33X[0;0Yextends  to  a  homomorphism  [22XM ⟶ N[122X of [22XFpG[122X-modules. (There is a problem with
  this function at present.)[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XRank(f) [110X[133X
  
  [33X[0;0YInputs  an  [22XFpG[122X-module homomorphism [22Xf:M ⟶ N[122X and returns the dimension of the
  image of [22Xf[122X as a vector space over the field [22XF[122X of [22Xp[122X elements.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XSumOfFpGModules(M,N) [110X[133X
  
  [33X[0;0YInputs  two  [22XFpG[122X-modules  [22XM, N[122X arising as submodules in a common free module
  [22X(FG)^n[122X  where  [22XG[122X is a finite group and [22XF[122X the field of [22Xp[122X-elements. It returns
  the [22XFpG[122X-Module arising as the sum of [22XM[122X and [22XN[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XSumOp(f,g) [110X[133X
  
  [33X[0;0YInputs  two  [22XFpG[122X-module homomorphisms [22Xf,g:M ⟶ N[122X with common sorce and common
  target.  It  returns  the  sum [22Xf+g:M ⟶ N[122X . (This operation is also available
  using "+".[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XVectorsToFpGModuleWords(M,L) [110X[133X
  
  [33X[0;0YInputs  an  [22XFpG[122X-module  [22XM[122X  and  a  list [22XL=[v_1,... ,v_k][122X of vectors in [22XM[122X. It
  returns  a  list [22XL'= [x_1,...,x_k][122X . Each [22Xx_j=[[W_1,G_1],...,[W_t,G_t]][122X is a
  list of integer pairs corresponding to an expression of [22Xv_j[122X as a word[133X
  
  [33X[0;0Y[22Xv_j = g_1*w_1 + g_2*w_1 + ... + g_t*w_t[122X[133X
  
  [33X[0;0Ywhere[133X
  
  [33X[0;0Y[22Xg_i=Elements(M!.group)[G_i][122X[133X
  
  [33X[0;0Y[22Xw_i=GeneratorsOfFpGModule(M)[W_i][122X .[133X
  
