  
  [1X15. FpG-modules[0X
  
      | [10X DirectSumOfFpGModules(M,N) [0X [10X DirectSumOfFpGModules([ M[1], M[2], ..., M[k] ])) [0X Inputs two FpG-modules M and N with common group and characteristic. It returns the direct sum of M and N as an FpG-Module. Alternatively, the function can input a list of FpG-modules with common group G. It returns the direct sum of the list.                                                                                                                                                                                                             | 
      | [10X FpGModule(A,P) [0X [10X FpGModule(A,G,p) [0X Inputs a p-group P and a matrix A whose rows have length a multiple of the order of G. It returns the "canonical" FpG-module generated by the rows of A. A small non-prime-power group G can also be input, provided the characteristic p is entered as a third input variable.                                                                                                                                                                                                                              | 
      | [10X FpGModuleDualBasis(M) [0X Inputs an FpG-module M. It returns a record R with two components: -- R.freeModule is the free module FG of rank one. -- R.basis is a list representing an F-basis for the module Hom_FG(M,FG). Each term in the list is a matrix A whose rows are vectors in FG such that M!.generators[i] --> A[i] extends to a module homomorphism M --> FG.                                                                                                                                                                          | 
      | [10X FpGModuleHomomorphism(M,N,A) [0X [10X FpGModuleHomomorphismNC(M,N,A) [0X Inputs FpG-modules M and N over a common p-group G. Also inputs a list A of vectors in the vector space spanned by N!.matrix. It tests that the function M!.generators[i] --> A[i] extends to a homomorphism of FpG-modules and, if the test is passed, returns the corresponding FpG-module homomorphism. If the test is failed it returns fail. The "NC" version of the function assumes that the input defines a homomorphism and simply returns the FpG-module homomorphism. | 
      | [10X DesuspensionFpGModule(M,n)[0X [10X DesuspensionFpGModule(R,n) [0X Inputs a positive integer n and and FpG-module M. It returns an FpG-module D^nM which is mathematically related to M via an exact sequence 0 --> D^nM --> R_n --> ... --> R_0 --> M --> 0 where R_* is a free resolution. (If G=Group(M) is of prime-power order then the resolution is minimal.) Alternatively, the function can input a positive integer n and at least n terms of a free resolution R of M.                                                                          | 
      | [10X RadicalOfFpGModule(M) [0X Inputs an FpG-module M with G a p-group, and returns the Radical of M as an FpG-module. (Ig G is not a p-group then a submodule of the radical is returned.                                                                                                                                                                                                                                                                                                                                                              | 
      | [10X GeneratorsOfFpGModule(M) [0X Inputs an FpG-module M and returns a matrix whose rows correspond to a minimal generating set for M.                                                                                                                                                                                                                                                                                                                                                                                                                  | 
      | [10X ImageOfFpGModuleHomomorphism(f) [0X Inputs an FpG-module homomorphism f:M --> N and returns its image f(M) as an FpG-module.                                                                                                                                                                                                                                                                                                                                                                                                                       | 
      | [10X IntersectionOfFpGModules(M,N) [0X Inputs two FpG-modules M, N arising as submodules in a common free module (FG)^n where G is a finite group and F the field of p-elements. It returns the FpG-module arising as the intersection of M and N.                                                                                                                                                                                                                                                                                                      | 
      | [10X IsFpGModuleHomomorphismData(M,N,A) [0X Inputs FpG-modules M and N over a common p-group G. Also inputs a list A of vectors in the vector space spanned by N!.matrix. It returns true if the function M!.generators[i] --> A[i] extends to a homomorphism of FpG-modules. Otherwise it returns false.                                                                                                                                                                                                                                               | 
      | [10X MultipleOfFpGModule(w,M) [0X Inputs an FpG-module M and a list w:=[g_1 , ..., g_t] of elements in the group G=M!.group. The list w can be thought of as representing the element w=g_1 + ... + g_t in the group algebra FG, and the function returns a semi-echelon matrix B which is a basis for the vector subspace wM .                                                                                                                                                                                                                         | 
      | [10X ProjectedFpGModule(M,k) [0X Inputs an FpG-module M of ambient dimension n|G|, and an integer k between 1 and n. The module M is a submodule of the free module (FG)^n . Let M_k denote the intersection of M with the k-th summand of (FG)^n . The function returns M_k as an FpG-module with ambient dimension n|G|.                                                                                                                                                                                                                              | 
      | [10X RandomHomomorphismOfFpGModules(M,N) [0X Inputs two FpG-modules M and N over a common group G. It returns a random matrix A whose rows are vectors in N such that the function M!.generators[i] --> A[i] extends to a homomorphism M --> N of FpG-modules. (There is a problem with this function at present.)                                                                                                                                                                                                                                      | 
      | [10X Rank(f) [0X Inputs an FpG-module homomorphism f:M --> N and returns the dimension of the image of f as a vector space over the field F of p elements.                                                                                                                                                                                                                                                                                                                                                                                              | 
      | [10X SumOfFpGModules(M,N) [0X Inputs two FpG-modules M, N arising as submodules in a common free module (FG)^n where G is a finite group and F the field of p-elements. It returns the FpG-Module arising as the sum of M and N.                                                                                                                                                                                                                                                                                                                        | 
      | [10X SumOp(f,g) [0X Inputs two FpG-module homomorphisms f,g:M --> N with common sorce and common target. It returns the sum f+g:M --> N . (This operation is also available using "+".                                                                                                                                                                                                                                                                                                                                                                  | 
      | [10X VectorsToFpGModuleWords(M,L) [0X Inputs an FpG-module M and a list L=[v_1,... ,v_k] of vectors in M. It returns a list L'= [x_1,...,x_k] . Each x_j=[[W_1,G_1],...,[W_t,G_t]] is a list of integer pairs corresponding to an expression of v_j as a word v_j = g_1*w_1 + g_2*w_1 + ... + g_t*w_t where g_i=Elements(M!.group)[G_i] w_i=GeneratorsOfFpGModule(M)[W_i] .                                                                                                                                                                             | 
  
