Home
        HAPprime
         Contents
1.                                   Returns  Vector  or list of vectors   For a single vector v  this function returns a vector x giving the G coefficients from gens needed  to generate v  i e  the solution to the equation x A   v  where A is the expansion of gens  If there is  no solution  fail is returned  If a list of vectors  col 1  then a vector is returned that lists the solution  for each vector  any of which may be   ai1   The standard forms of this function use standard linear  algebra to solve for the coefficients  The Destructive version will corrupt both gens and v  The  GF versions use the block structure of the generating rows to expand only the blocks that are needed  to find the solution before using linear algebra  If the generators are in echelon form  this can save  memory  but is slower    The GFDestructive2 functions also assume an echelon form for the generators  but use back   substitution to find a set of coefficients  This can save a lot of memory but is again slower     HAPprime 51    6 1 14 HAPPRIME GenerateFromGeneratingRowsCoefficientsXX                      HAPPRIME GenerateFromGeneratingRowsCoefficients gens  GA  c   operation      HAPPRIME GenerateFromGeneratingRowsCoefficients gens  GA  coll   operation      HAPPRIME_GenerateFromGeneratingRowsCoefficientsGF  gens  GA  c   operation      HAPPRIME_GenerateFromGeneratingRowsCoefficientsGF  gens  GA  coll   operation     Returns  Vector  or list of vectors   For a vector c  returns  as a vector   th
2.      3 7 3 IntersectionModules       IntersectionModules M  N   operation      IntersectionModulesGF M  N   operation      IntersectionModulesGFDestructive M  N   operation      IntersectionModulesGF2 M  N   operation     Returns  FpGModuleGF   Returns the FpGModuleGF module that is the intersection of the modules M and N  This func   tion calculates the intersection using vector space methods  i e  SumIntersectionMatDestructive   HAPprime Datatypes  SumIntersectionMatDestructive    The standard version works on the  complete vector space bases of the input modules  The GF version considers the block structure of  the generators of M and N and only expands the necessary rows and blocks  This can lead to a large  saving and memory if M and N are in echelon form and have a small intersection  See Section 3 2 4  for details  See Section 3 7 5 below for an example of usage  The GF2 version computes the inter   section by a G version of the standard vector space algorithm  using EchelonModuleGenerators   3 6 1  to perform echelon reduction on an augmented set of generators  This is much slower than the  GF version  but may use less memory    The vector spaces in FpGModuleGF s are assumed to all be with respect to the same canonical  basis  so it is assumed that modules are compatible if they have the same group and the same ambient  dimension    The Destructive version of the GF function corrupts or permutes the generating vectors of M  and N  leaving it invalid  the non destructi
3.     gt  M    gt Mo  gt  M    Where each M  is a free FG module and the image of d   1   Mn 1     M  equals the kernel of d     M   gt  M _ for all n  gt  0     2 1 The HAPResolution datatype in HAPprime    Both HAP and HAPprime use the HAPResolution datatype to store resolutions  and you should refer  to the HAP documentation for full details of this datatype  With resolutions computed by HAP  the  boundary maps which define the module homomorphisms are stored as lists of ZG module words   each of which is an integer pair  i  g   By contrast  when HAPprime computes resolutions it stores the  boundary maps as lists of G generating vectors  as used in FpGModuleHomomorphismGF  see Chapter  4   Over small finite fields  and in particular in GF 2    these compressed vectors take far less memory   saving at least a factor of two for long resolutions  The different data storage method is entirely an  internal change   as far as the used is concerned  both versions behave exactly the same     2 2 Implementation  Constructing resolutions    Given the definition of a free FG resolution given above  a resolution of a module M can be calculated  by construction  If there are k generators for M  we can set Mo equal to the free FG module  FG     and the module homomorphism do   Mo     M to be the one that sends the ith standard generator of   FG   to the ith element of M  We can now recursively construct the other modules and module  homomorphisms in a similar manner  Given a boundary homo
4.    e 2    doing column reduction if necessary to get the zero block at the top right  The matrices B  gt  and C  are small enough to be expanded  while the kernel of D is calculated by recursion  The argument  rowlengths lists the number of non zero blocks in each row  the rest of each row is taken to be  zero  This allows the partitioning to be more efficiently performed  i e  column reduction is not always  required     The GAP options stack  Reference  Options Stack  variable MaxFGExpansionSize can be used  to specify the maximum allowable expanded matrix size  This governs the size of the B and C matri     ces  and thus the number of recursions before the kernel of D is also computed by recursion  A high  value for will allow larger expansions and so faster computation at the cost of more memory  The       46    HAPprime 47       MaxFGExpansionMemoryLimit option can also be used  which sets the maximum amount of mem   ory that GAP is allowed to use  as a string containing an integer with the suffix k  M or G to indicate  kilobyes  megabytes or gigabytes respectively   In this case  the function looks at the free memory  available to GAP and computes an appropriate value for MaxFGExpansionSize        6 1 3 HAPPRIME_GActMatrixColumns    O HAPPRIME_GActMatrixColumns g  Vt  GA   operation      HAPPRIME GActMatrixColumnsOnRight g  Vt  GA   operation    Returns  Matrix   Returns the matrix that results from the applying the group action u   gv  or u   vg in the case of  the OnR
5.   Chapter 4  a free linear homomorphism between two FG modules  each represented as a  FpGModuleGF  this also uses the compact generator form to save memory in its operations     In addition  Chapter 5 provides documentation for some general functions defined in HAPprime which  extend some of the basic GAP functionality in areas such as matrices and polynomials    Each chapter of this reference manual begins with an overview of the datatype  and then imple   mentation details of any interesting functions  The function reference of related functions then fol   lows  subdivided into sections of related functions  Examples demonstrating the use of each function  are given at the end of each section    Earlier versions of this datatypes reference manual also documented the datatypes  GradedAlgebraPresentation  HAPRingHomomorphism and HAPDerivation  The definitions of  these datatypes and their related functions are now part of HAP and will be documented as part of  that package        HAPprime 8    1 1 Internal function reference    This version of the datatypes reference manual has been specially built to also provide documentation  for all of the internal functions of HAPprime   This can be done using the optional argument to  MakeHAPprimeDoc  HAPprime  MakeHAPprimeDoc    The documentation for these functions is  found in Chapter 6     Chapter 2    Resolutions    A free FG resolution of an FG module M is a sequence of module homomorphisms        gt  Mn 1  gt  Mn  gt  Mn 1  gt  
6.   HAPPRIME GActMatrixColumns  47  APPRIME GActMatrixColumnsOnRight  47  APPRIME GenerateFromGeneratingRows   Coefficients  for collection of vectors  51  for vector  51  HAPPRIME GenerateFromGeneratingRows   CoefficientsGF  for collection of vectors  51  for vector  51  HAPPRIME GeneratingRowsBlockStructure   49  APPRIME_IndependentGeneratingRows  49  APPRIME IsGroupAndAction  53  APPRIME KernelOfGeneratingRows   Destructive  46  HAPPRIME MinimalGeneratorsVectorSpace   GeneratingRowsDestructive  52  APPRIME MinimalGeneratorsVector   SpaceGeneratingRowsOnRight   Destructive  53  HAPPRIME ModuleElementFromGenerator   Coefficients  for collection of elements  52  for element  52  HAPPRIME ModuleGeneratorCoefficients  for collection of elements  52  for element  52  HAPPRIME ModuleGeneratorCoefficients   Destructive  for collection of elements  52  for element  52                                        PPRIME  PPRIME  PPRIME  PPRIME     PrintModuleDescription  52  Random2Group  54  Random2GroupAndAction  54   ReduceGeneratorsOfModuleBy   LeavingOneOut  48  HAPPRIME ReduceGeneratorsOfModuleBy   SemiEchelon  48  HAPPRIME ReduceGeneratorsOfModuleBy   SemiEchelonDestructive  48  HAPPRIME ReduceGeneratorsOnRightBy   LeavingOneOut  48   PPRIME ReduceVectorDestructive  48  PPRIME RemoveZeroBlocks  51     gt  gt  m 5                   PPRIME SingularIsAvailable  54   PPRIME TestResolutionPrimePowerGroup   25   HAPPRIME_ValueOpt ionMaxFGExpansionSize   46   HAPPRIME VectorToWord  53   HAP
7.   Returns a HAP FpGModule that represents the same module as the FpGModuleGF M  This uses  ModuleVectorSpaceBasis  3 5 7  to find the vector space basis for M and constructs a FpGModule  with this vector space and the same group and action as M See Section 3 3 5 below for an example of  usage    TODO  This currently constructs an FpGModule object explicitly  It should use a constructor  once one is provided    3 3 3 MutableCopyModule       MutableCopyModule  M   operation   Returns  FpGModuleGF  Returns a copy of the module M where the generating vectors are fully mutable  The group and  action in the new module is identical to that in M   only the list of generators is copied and made  mutable   The assumption is that this function used in situations where you just want a new generating  set      3 3 4 CanonicalAction       CanonicalAction G   attribute      CanonicalActionOnRight  G   attribute      CanonicalGroupAndAction  G   attribute    Returns  Function action g v  or a record with elements  group  action     actionOnRight  actionBlockSize    Returns a function of the form action  g  v  that performs the canonical group action of an ele   ment g of the group G on a vector v  acting on the left by default  or on the right with the OnRight  version   The GroupAndAction version of this function returns the actions in a record together with  the group and the action block size  Under the canonical action  a free module FG is represented as a  vector of length  G  over the 
8.   gap   ModuleGroupOrder  M    8  gap   ModuleAction  M    function  g  v       end  gap   ModuleActionBlockSize  M    8  gap   ModuleGroupAndAction  M    rec  group      pc group of size 8 with 3 generators      action    function  g  v       end    actionOnRight    function  g  v       end  actionBlockSize    8    gap   ModuleCharacteristic  M    2  gap   ModuleField  M    GF  2   gap   ModuleAmbientDimension  M    24  gap   AmbientModuleDimension  M    3                      HAPprime 24    3 5 Generator and vector space functions    3 5 1 ModuleGenerators       ModuleGenerators  M   operation   Returns  List of vectors  Returns  as the rows of a matrix  a list of the set of currently stored generating vectors for  the vector space of the module M  Note that this set is not necessarily minimal  The function  ModuleGeneratorsAreMinimal  3 5 2  will return t rue if the set is known to be minimal  and the  MinimalGeneratorsModule functions  3 5 9  can be used to ensure a minimal set  if necessary  See  Section 3 5 11 below for an example of usage     3 5 2 ModuleGeneratorsAreMinimal       ModuleGeneratorsAreMinimal  M   operation   Returns  Boolean  Returns t rue if the module generators are known to be minimal  or   alse otherwise  Generators  are known to be minimal if the one of the MinimalGeneratorsModule functions  3 5 9  have been  previously used on this module  or if the module was created from a HAP FpGModule  See Section  3 5 11 below for an example of usage     3 5 
9.   greater number of zero blocks after the first non zero block in the generator  The MinMem operations  are currently only implemented for GF 2  modules  See Section 3 6 3 below for an example of usage           3 6 2 ReverseEchelonModuleGenerators       ReverseEchelonModuleGenerators  M   operation      ReverseEchelonModuleGeneratorsDestructive  M   operation    Returns  FpGModuleGF   Returns an FpGModuleGF module whose vector space spans the same space as the input module  M  but whose generating vectors are modified to try to get as many zero blocks as possible at the end  of each vector  This function performs echelon reduction of generating rows in a manner similar to  EchelonModuleGenerators  3 6 1   but working from the bottom upwards  It is guaranteed that this  function will not change the head block  the location of the first non zero block  in each generating  row  and hence if the generators are already in an upper triangular form  e g  following a call to  EchelonModuleGenerators  3 6 1   then it will not disturb that form and the resulting generators  will be closer to a diagonal form    The Destructive version of this function modifies the input module   s generators in place and  then returns that module  the non Dest ructive version works on a copy of the input module and so  will not modify the original module    This operation is currently only implemented for GF 2  modules  See Section 3 5 11 below for an  example of usage              HAPprime 29    3 6 3
10.   groupAndAction  18  construction of full canonical module  18  construction of full canonical module from  groupAndAction  18  FpGModuleGFNC  construction for empty module with group  and action  18  construction from generators and groupAn   dAction  18  construction from generators  group and ac   tion  18  FpGModuleHomomorphismGF  37  FpGModuleHomomorphismGFNC  37    from    HallSeniorNumber  for group  45  for SmallGroup library ref  45  PRIME  AddGeneratingRowToSemiEchelon   BasisDestructive  47  E AddNextResolutionBoundaryMap   atNC  54  E AddZeroBlocks  51  E BoundaryMatrices  54  PRIME CoefficientsOfGeneratingRows  for collection of vectors  50  for vector  50  HAPPRIME_CoefficientsOfGenerat ingRows   Destructive  for collection of vectors  50  for vector  50  HAPPRIME_CoefficientsOfGenerat ingRowsGF  for collection of vectors  50  for vector  50  HAPPRIME CoefficientsOfGeneratingRowsG   FDestructive  for collection of vectors  50    RIM  PRIM    D    PRIM                                     HAPprime 57    for vector  50  HAPPRIME CoefficientsOfGeneratingRowsG   FDestructive2  for collection of vectors  50  for vector  50  APPRIME CreateResolutionWithBoundary   MapMatsNC  54          HAPPRIME DirectSumForm  52   HAPPRIME DisplayGeneratingRows  48  HAPPRIME DisplayGeneratingRowsBlocks  49  HAPPRIME_ExpandGenerat ingRow  47  HAPPRIME ExpandGeneratingRowOnRight  47  HAPPRIME ExpandGeneratingRows  47  HAPPRIME ExpandGeneratingRowsOnRight  47    HAPPRIME GactFGvector  50
11.  D before augmentation  thus adding a smaller set of generators and  restricting the explosion in size  If D were already in echelon form  this would also be time efficient     4 4 Construction functions    4 4 4 FpGModuleHomomorphismGF construction functions       FpGModuleHomomorphismGF  S  T  gens   operation      FpGModuleHomomorphismGFNC S  T  gens   operation    Returns  FpGModuleHomomorphismGF   Creates and returns an FpGModuleHomomorphismGF module homomorphism object  This repre   sents the homomorphism from the module S to the module T with a list of vectors gens whose rows  are the images in T of the generators of S  The modules must  currently  be over the same group    The standard constructor checks that the homomorphism is compatible with the modules  i e  that  the vectors in gens have the correct dimension and that they lie within the target module T  It also  checks whether the generators of S are minimal  If they are not  then the homomorphism is created  with a copy of 5 that has minimal generators  using MinimalGeneratorsModuleRadical  3 5 9     and gens is also copied and converted to agree with the new form of S  If you wish to skip these  checks then use the NC version of this function    IMPORTANT  The generators of the module S and the generator matrix gens must be remain  consistent for the lifetime of this homomorphism  If the homomorphism is constructed with a mutable  source module or generator matrix  then you must be careful not to modify them w
12.  Example  Converting a FpGModuleGF to block echelon form    We can construct a larger module than in the earlier examples  Sections 3 4 11 and 3 5 11  by taking  the kernel of the third boundary homomorphism of a minimal resolution of a group of order 32  which  as returned by the function KernelOfModuleHomomorphism  4 6 3  has a generating set with many  redundant generators  We display the block structure of the generators of this module after applying  various block echelon reduction functions           Example  gap   R    ResolutionPrimePowerGroupRadical  SmallGroup  32  10   3     gap   phi    BoundaryFpGModuleHomomorphismGF  R  3      gap       gap   M    KernelOfModuleHomomorphism  phi     Module over the group ring of   pc group of size 32 with   5 generators   in characteristic 2 with 65 generators in FG 4     gap      gap   N    SemiEchelonModuleGenerators  M    rec  module    Module over the group ring of   pc group of size 32 with    5 generators   in characteristic 2 with 5 generators in FG   4  Generators are in minimal semi echelon form     headblocks      2  3  1  1  3      gap   DisplayBlocks  N module    Module over the group ring of Group    fl  f2    3  f4  f5      in characteristic 2 with 5 generators in FG 4   SEE                 XA                               Generators are in minimal semi echelon form     gap gt  N2    SemiEchelonModuleGeneratorsMinMen  M     rec  module    Module over the group ring of  lt pc group of size 32 with  5 generators   in
13.  GF2 vector of length 24 gt      a GF2 vector of length 24 gt     a GF2 vector of length 24 gt     lt a GF2 vector of length 24 gt     a GF2 vector of length 24 gt     lt a GF2 vector of length 24 gt     a GF2 vector of length 24 gt     lt a GF2 vector of length 24 gt     a GF2 vector of length 24 gt      a GF2 vector of length 24              gap   ModuleGeneratorsAreMinimal  M    false  gap   ModuleGeneratorsForm M            15       gap gt   true  gap gt   true  gap gt   false  gap gt   true  gap gt      lt a   lt a   lt a   lt a   lt a   lt a   lt a   lt a    gap gt           I    Tj    E  E    D    xj    F    0022200       I    gap      gap   N2  Module over the group ring of   pc group of size 8 with   3 generators   in characteristic 2 with 4 generators in FG   3  Generators are minimal     gap      gap  R  Module over the group ring of   pc group of size 8 with   3 generators   in characteristic 2 with 120 generators in FG 3     gap   N2  true     unknown   gap      gap   N    HAPprime       MinimalGeneratorsModuleGF  M      Module over the group ring of   pc group of size 8 with  3 generators   in characteristic 2 with 4 generators in FG   3  Generators are in minimal echelon form      N    Check that the new module spans the same space      N        oduleGeneratorsAreEchelonForm N      oduleIsFullCanonical N      oduleVectorSpaceBasis  N     2 vector of length 24 gt    lt a  2 vector of length 24 gt    lt a  2 vector of length 24 gt    lt a  2 vector of length 24 g
14.  HAPPRIME BoundaryMatrices          leen  6 3 4 HAPPRIME AddNextResolutionBoundaryMapMatNC               6 3 5 HAPPRIME CreateResolutionWithBoundaryMapMatsNC               Test functions    64 1 HAPPRIME SingularlsAvailable                 len  642 HAPPRIME Random2Group              2  llle  6 43 HAPPRIME TestResolutionPrimePowerGroup                        Chapter 1    Introduction    The HAPprime package is a GAP package which supplements the HAP package   http   hamilton nuigalway ie Hap www    providing new and improved functions for  doing homological algebra over small prime power groups  A detailed overview of the HAP   prime package  with examples and documentation of the high level functions  is provided in the  accompanying HAPprime user guide    This document  the datatypes reference manual  supplements the HAPprime user guide  It de   scribes the new GAP datatypes defined by the HAPprime package  and all of the associated functions  for working with each of these datatypes  The datatypes are    HAPResolution   Chapter 2  this datatype  defined in the HAP package  represents a free FG resolution of a  FG module  HAPprime extends the definition of this datatype to save memory  and provides  additional functions to operate on resolutions     FpGModuleGF   Chapter 3  a free FG module compactly represented in terms of generating elements  with  operations that do as much manipulation as possible within this form  thus minimizing memory  use     FpGModuleHomomorphismGF 
15.  Returns  FpGModuleGF  vector or list of vectors depending on argument   For a module homomorphism phi  the one argument function returns the module that is the  image of the homomorphism  while the two argument versions return the result of mapping of an  FpGModuleGF M  a module element e 1m  given as a vector   or a collection of module elements co11  through the homomorphism  This uses standard linear algebra to find the image of elements from the  source module    The Destructive versions of the function will corrupt the second parameter  which must be  mutable as a result  The version of this operation that returns a module does not guarantee that the  module will be in minimal form  and one of the MinimalGeneratorsModule functions  3 5 9  should  be used on the result if a minimal set of generators is needed     4 6 2 PrelmageRepresentativeOfModuleHomomorphism    O PreImageRepresentativeOfModuleHomomorphism phi  elm   operation   O PreImageRepresentativeOfModuleHomomorphism phi  coll   operation      PreImageRepresentativeOfModuleHomomorphism phi  M   operation   O PreImageRepresentativeOfModuleHomomorphismGF  phi  elm   operation      PreImageRepresentativeOfModuleHomomorphismGF  phi  coll   operation     For an element e Im in the image of phi  this returns a representative of the set of preimages of  elm under phi  otherwise it returns fail  If a list of vectors coll is provided then the function  returns a list of preimage representatives  one for each element in th
16.  characteristic 2 with 9 generators in FG 4     headblocks      2  1  3  1  1  4  1  3  4       gap gt  DisplayBlocks  N2 module     Module over the group ring of Group    fl  f2  f3  f4  f5      in characteristic 2 with 9 generators in FG   4      xe         KKKK                             gap   gap   EchelonModuleGeneratorsDestructive  M      gap   DisplayBlocks  M     Module over the group ring of Group    fl    2    3  f4  f5        in characteristic 2 with 5 generators in FG 4    AAA           HAPprime 30       X                       Lis  EE    Generators are in minimal echelon form    gap gt  ReverseEchelonModuleGeneratorsDestructive  M      Module over the group ring of  lt pc group of size 32 with   5 generators gt  in characteristic 2 with 5 generators in FG     4  Generators are in minimal echelon form     gap   DisplayBlocks  M    Module over the group ring of Group    fl  f2    3  f4  f5        in characteristic 2 with 5 generators in FG 4    AH    eee    3 8    5    ee  G    enerators are in minimal echelon form              3 7 Sum and intersection functions    3 7 1 DirectSumOfModules       DirectSumOfModules  M  N   operation      Direct SumOfModules  coll   operation      DirectSumOfModules M  n   operation     Returns  FpGModule   Returns the FpGModuleGF module that is the direct sum of the specified modules  which must  have a common group and action   The input can be either two modules M and N  a list of modules  coll  or one module M and an exponent n 
17.  field F of the FG module M  See Section 3 4 11 below for an  example of usage     3 4 7 ModuleField       ModuleField  M   operation   Returns  Field  Returns the field F of the FG module M  See Section 3 4 11 below for an example of usage     3 4 8 ModuleAmbientDimension       ModuleAmbientDimension  M   operation   Returns  Integer  Returns the ambient dimension of the module M  The module M is represented as a submodule of  FG    using generating vectors for a vector space  This function returns the dimension of this underlying  vector space  This is equal to the length of each generating vector  and also nxactionBlockSize   See Section 3 4 11 below for an example of usage     3 4 9 AmbientModuleDimension       AmbientModuleDimension  M   operation   Returns  Integer  The module M is represented a submodule embedded within the free module FG     This function  returns n  the dimension of the ambient module  This is the same as the number of blocks  See Section  3 4 11 below for an example of usage     3 4 10 DisplayBlocks  for FpGModuleGF     O DisplayBlocks  M   operation    Returns  nothing   Displays the structure of the module generators gens in a compact human readable form  Since  the group action permutes generating vectors in blocks of length actionBlockSize  any block that  contains non zero elements will still contain non zero elements after the group action  but a block that  is all zero will remain all zero  This operation displays the module generators in a p
18.  form  each generator is row reduced using Gg multiples of the other other generators  to produce a new  equivalent generating set where the first non zero block in each generator is as far  to the right as possible  The resulting form  with many zero blocks  can allow more memory efficient  operations on the module  See Section 3 2 for details  In addition  the standard  non MinMem  form  guarantees that the set of generators are minimal in the sense that no generator can be removed from  the set while leaving the spanned vector space the same  In the GF 2  case  this is the global minimum   Several versions of this algorithm are provided  The SemiEchelon versions of these functions  do not guarantee a particular generator ordering  while the Echelon versions sort the generators into  order of increasing initial zero blocks  The non Destructive versions of this function return a new  module and do not modify the input module  the Destructive versions change the generators of the  input module in place  and return this module  All versions are memory efficient  and do not need  a full vector space basis  The MinMem versions are guaranteed to expand at most two generators at  any one time  while the standard version may  in the  unlikely  worst case  need to expand half of the  generating set  As a result of this difference in the algorithm  the MinMem version is likely to return  a greater number of generators  which will not be minimal   but those generators typically have a
19.  guarantee to return a minimal set of generators  and one  of the MinimalGeneratorsModule functions  3 5 9  should be used on the result if a minimal set of  generators is needed  All of the functions leave the input homomorphism phi unchanged     4 6 4 Example  Kernel and Image of a FpGModuleHomomorphismGF    A free FG resolution of a module is an exact sequence of module homomorphisms  In this example we  use the functions ImageOfModuleHomomorphism  4 6 1  and KernelOfModuleHomomorphism  4 6 3   to check that one of the sequences in a resolution is exact  i e  that in the sequence    Ma     M5    Mi    the image of the first homomorphism d3   M3     M3 is the kernel of the second homomorphism d      M    gt  M     We also demonstrate that we can find the image and preimage of module elements under our  module homomorphisms  We take an element e of M    in this case by taking the first generating  element of the kernel of d    and map it up to M3 and back    Finally  we compute the kernel using the other available methods  and check that the results are  the same     HAPprime          42       Example  gap gt  R    ResolutionPrimePowerGroupRadical  SmallGroup 8  3   3     gap gt  d2    BoundaryFpGModuleHomomorphismGF  R  2      gap   d3    BoundaryFpGModuleHomomorphismGF  R  3      gap       gap gt  I    ImageOfModuleHomomorphism d3     Module over the group ring of   pc group of size 8 with   3 generators   in characteristic 2 with 4 generators in FG 3        gap   K    Ker
20.  is  returned  one for each element in the collection  See Section 3 3 5 above for an example of usage        3 8 3 IsSubModule       IsSubModule M  N   operation   Returns  Boolean  Returns true if the module N is a submodule of M  This checks that the modules have the same  group and action  and that the generators for module N are elements of the module M   All vector  spaces in FpGModuleGFs of the same ambient dimension are assumed to be embedded in the same  canonical basis   See Section 3 3 5 above for an example of usage     3 8 4 RandomElement       RandomElement  M   n    operation   Returns  Vector  Returns a vector which is a random element from the module M  If a second argument  n is give   then a list of n random elements is returned  See Section 3 3 5 above for an example of usage     HAPprime 34    3 8 5 Random Submodule       RandomSubmodule  M  ngens   operation   Returns  FpGModuleGF  Returns a FpGModuleGF module that is a submodule of M  with ngens generators selected at  random from elements of M  These generators are not guaranteed to be minimal  so the rank of the  submodule will not necessarily be equal to ngens  If a module with minimal generators is required   the MinimalGeneratorsModule functions  3 5 9  can be used to convert the module to a minimal  form See Section 3 3 5 above for an example of usage     Chapter 4    I G module homomorphisms    4 1 The FpGModuleHomomorphismGF datatype    Linear homomorphisms between free FG modules  as FpGModuleG
21.  of rows and n the number of columns  If the matrix is empty  the returned string is  empty      5 1 5 Example  matrices and vector spaces    GAP uses rows of a matrix to represent basis vectors for a vector space  In this example we have two  matrics U and V that we suspect represent the same subspace  Using SolutionMat  5 1 2  we can see  that V lies in U  but IsSameSubspace  5 1 3  shows that they are the same subspace  as is confirmed  by having identical sums and intersections    Example          gap   U      1 2 3   4 5 6      gap gt  V      3 3 3    5 7 9      gap   SolutionMat U  V     L   1  1    1 1      gap   IsSameSubspace U  V    true  gap   SumIntersectionMatDestructive U  V       Lt11 2  3    0  1  21 1  LL0  1  2     1  0  111   gap   IsSameSubspace last 1   last 2      true  gap   PrintDimensionsMat  V     2x3                 HAPprime 45    5 2 Groups    Small groups in GAP can be indexed by their small groups library number  Reference  Small  Groups   An alternative indexing scheme  the Hall Senior number  is used by Jon Carlson to publish  his cohomology ring calculations at http    www math uga edu  lvalero cohointro html  To  allow comparison with these results  we provide a function that converts from the GAP small groups  library numbers to Hall Senior number for the groups of order 8  16  32 and 64     5 2 1 HallSeniorNumber       HallSeniorNumber order  i   attribute      HallSeniorNumber  G   attribute   Returns  Integer  Returns the Hall Senior numb
22.  the resolution R     2 4 6 BoundaryFpGModuleHomomorphismGF       BoundaryFpGModuleHomomorphismGF  R  k   method   Returns  FpGModuleHomomorphismGF  Returns the kth boundary map in the resolution R  as a FpGModuleHomomorphismGF  This repre   sents the linear homomorphism dj    My     My  1     2 4  ResolutionsAreEqual       ResolutionsAreEqual R  S   operation   Returns  Boolean  Returns true if the resolutions appear to be equal  false otherwise  This compares the torsion  coefficients of the homology from the two resolutions     HAPprime 12    2 5 Example  Computing and working with resolutions    In this example we construct a minimal free FG resolution of length four for the group G   Dg x Qs  of order 64  which will be the sequence        FG    gt   FG    gt   FG    gt   FG   gt  F    We first build each stage explicitly  starting with LengthOneResolutionPrimePowerGroup   2 3 1  followed by repeated applications of ExtendResolutionPrimePowerGroupRadical   HAPprime      ExtendResolutionPrimePowerGroupRadical   We extract various prop   erties of this resolution  Finally  we construct equivalent resolutions for G using  ResolutionPrimePowerGroupGF  HAPprime  ResolutionPrimePowerGroupGF  for group    and ResolutionPrimePowerGroupGF2  HAPprime   ResolutionPrimePowerGroupGF2  for  group   and check that the three are equivalent   Example  gap   G    DirectProduct  DihedralGroup  8   SmallGroup 8  4       lt pc group of size 64 with 6 generators     gap   R    LengthOneResolut
23.  this generating set and  row reduce this to find the size of the basis  See Section 3 5 11 below for an example of usage   TODO  A GF version of this function    3 5 9 MinimalGeneratorsModule    O MinimalGeneratorsModuleGF  M   operation      MinimalGeneratorsModuleGFDestructive  M   operation      MinimalGeneratorsModuleRadical  M   operation     Returns  FpGModuleGF  Returns a module equal to the FpGModuleGF M  but which has a minimal set of generators  Two  algorithms are provided     HAPprime 26       e The two GF versions use EchelonModuleGenerators  3 6 1  and  EchelonModuleGeneratorsDestructive  3 6 1  respectively  In characteristic two  these re   turn a set of minimal generators  and use less memory than the Radical version  but take longer   If the characteristic is not two  these functions revert to MinimalGeneratorsModuleRadical     e The Radical version uses the radical of the module in a manner similar to the function HAP   GeneratorsOfFpGModule  This is much faster  but requires a considerable amount of tempo   rary storage space     See Section 3 5 11 below for an example of usage     3 5 10 RadicalOfModule       RadicalOfModule  M   operation    Returns  FpGModuleGF   Returns radical of the FpGModuleGF module M as another FpGModuleGF  The radical is the module  generated by the vectors v     gv for all v in the set of generating vectors for M and all g in a set of  generators for the module   s group    The generators for the returned module will not be in 
24.  uses the block structure of module generating vectors  see Section 3 2 1  and calculates ker   nels of the boundary homomorphisms using KernelOfModuleHomomorphismSplit  4 6 3   and finds a minimal set of generators for this kernel using MinimalGeneratorsModuleGF   3 5 9   The much faster but memory hungry ExtendResolutionPrimePowerGroupRadical   HAPprime  ExtendResolutionPrimePowerGroupRadical  uses Kernel0fModuleHomomorphism   4 6 3  and MinimalGeneratorsModuleRadical  3 5 9  respectively   ExtendResolutionPrimePowerGroupGF2  HAPprime  ExtendResolutionPrimePower   GroupGF2  uses KernelOfModuleHomomorphismGF  4 6 3  whic partitions the boundary ho   momorphism matrix using FG reduction  This gives a small memory saving over the Radical  method  but can take as long as the GF scheme    The construction of resolutions of length n is wrapped up in the func   tions ResolutionPrimePowerGroupGF  ResolutionPrimePowerGroupRadical and  ResolutionPrimePowerGroupAutoMem  which  as well as the extension functions  are fully  documented in Section  HAPprime  ResolutionPrimePowerGroup  of the HAPprime user manual           2 3 Resolution construction functions    2 3 1 LengthOneResolutionPrimePowerGroup    O LengthOneResolutionPrimePowerGroup  G   function   Returns  HAPResolution  Returns a free FG resolution of length 1 for group G  which must be of a prime power   i e  the  resolution  FG      FG  gt  F    This function requires very little calculation  the first stage of the resolutio
25.  with the support of  the HPC GAP grant at the School of Computer Science  University of St Andrews     Contents    1 Introduction    The HAPResolution datatype in HAPprime            o    o             Implementation  Constructing resolutions         o    o    e             Resolution construction functions           eA  2 3 1  LengthOneResolutionPrimePowerGroup                       2 3 2  LengthZeroResolutionPrimePowerGroup            llle  Resolution data access functions     2    2    o    e  e       243  Resolu  onPpGModuleGE    2 28  404  o ga eee aa  2 4 4 ResolutionModuleRank                  e                2 4 5 ResolutionModuleRanks                   e                2 4 6 BoundaryFpGModuleHomomorphismGF                       2 4 7 ResolutionsAreEqual             o    o                 et  Example  Computing and working with resolutions                     Miscellaneous resolution functions    2    o    o    e    e    e     2 6 1 BestCentralSubgroupForResolutionFiniteExtension                  The FpoModgleGE DANDO  se ocean moe Doa aa eh aa Saia a a x7  Implementation details  Block echelon form             ooo    o     3 2 1 Generating vectors and their block structure                      3 2 2 Matrix echelon reduction and head elements                     3 2 3 Echelon block structure and minimal generators                    3 2 4 Intersection of two Modules            lens    3 3 1 FpGModuleGF construction functions           o    o    en  3 3 2 FpGModuleFr
26. 3 ModuleGeneratorsAreEchelonForm       ModuleGeneratorsAreEchelonForm  M   operation   Returns  Boolean  Return true if the module generators are known to be in echelon form  or  ie   EchelonModuleGenerators  3 6 1  has been called for this module   or false otherwise  Some  algorithms work more efficiently if  or require that  the generators of the module are in block echelon  form  i e  each generator in the module s list of generators has its first non zero block in the same  location or later than the generator before it in the list  See Section 3 5 11 below for an example of       usage     3 5 4 ModulelsFullCanonical       ModuleIsFullCanonical  M   operation   Returns  Boolean  Returns t rue if the module is known to represent the full module FG   with canonical generators  and group action  or false otherwise  A module is only known to be canonical if it was constructed  using the canonical module FpGModuleGF constructor  FpGModuleGF  3 3 1    If this is true  the  module is displayed in a concise form  and some functions have a trivial implementation  See Section  3 5 11 below for an example of usage     3 5 5 ModuleGeneratorsForm       ModuleGeneratorsForm M   operation   Returns  String  Returns a string giving the form of the module generators  This may be one of the following     e  unknown  The form is not known    HAPprime 25    e  minimal  The generators are known to be minimal  but not in any particular form   e  fullcanonical  The generators are the canonica
27. 6 1 8 HAPPRIME DisplayGeneratingRows       O HAPPRIME DisplayGeneratingRows  gens  GA   operation   Returns  nothing  Displays a set of G generating rows a human readable form  The elements of each generating  vector are displayed  with each block marked by a separator  since the group action on a module  vector will only permute elements within a block    This function is used by Display for both FpGModuleGF and FpGModuleHomomorphismGF   NOTE  This is currently only implemented for GF 2     Example          gap gt  HAPPRIME DisplayGeneratingRows     gt  ModuleGenerators  M   HAPPRIME ModuleGroupAndAction  M      oss od lides PA Tem  o ees            HAPprime 49       6 1 9 HAPPRIME_GeneratingRowsBlockStructure          HAPPRIME GeneratingRowsBlockStructure  gens  GA   operation   Returns  Matrix  Returns a matrix detailing the block structure of a set of module generating rows  The group  action on a generator permutes the vector in blocks of length GA actionBlockSize  any block that  contains non zero elements will still contain non zero elements after the group action  any block that  1s all zero will remain all zero  This operation returns a matrix giving this block structure  it has a one  where the block is non zero and zero where the block is all zero     Example  gap gt  b    HAPPRIME GeneratingRowsBlockStructure     gt  ModuleGenerators  M   ModuleActionBlockSize  M        L1  05 1  le    y   iy 0  le del gr  dy 14 1121 dO 0 1  1  4                       6 1 10 HAPPR
28. APPRIME GActMatrixColumns   6 1 3  to perform the group action on the whole set of generating rows at a time    The function HAPPRIME ExpandGeneratingRowsOnRight  6 1 4  is the same as above  but the  group action operates on the right instead                                            6 1 5 HAPPRIME AddGeneratingRowToSemiEchelonBasisDestructive          HAPPRIME AddGeneratingRowToSemiEchelonBasisDestructive basis  gen  GA   opera  tion    Returns  Record with elements vectors and basis   This function augments a vector space basis with another generator  It returns a record consisting  of two elements  vectors  a set of semi echelon basis vectors for the vector space spanned by the  sum of the input baszs and all G multiples of the generating vector gen  and heads  a list of the  head elements  in the same format as returned by SemiEchelonMat  Reference  SemiEchelonMat         HAPprime 48    The generator gen is expanded according to the group and action specified in the GA record  see  ModuleGroupAndAction  3 4 5      If the input basis is not zero  it is also modified by this function  to be the new basis  i e  the  same as the vectors element of the returned record      6 1 6 HAPPRIME ReduceVectorDestructive          HAPPRIME ReduceVectorDestructive v  basis  heads   operation   Returns  Boolean  Reduces the vector v  in place  using the semi echelon set of vectors basis with heads heads   as returned by SemiEchelonMat  Reference  SemiEchelonMat    Returns true if the vec
29. F objects   see Chapter 3  are  represented in HAPprime using the FpGModuleHomomorphismGF datatype  This represents module  homomorphisms in a similar manner to FG modules  using a set of generating vectors  in this case  vectors that generate the images in the target module of the generators of the source module    Three items need to be passed to the constructor function FpGModuleHomomorphismGF  4 4 1      e source the source FpGModuleGF module for the homomorphism  e target the target FpGModuleGF module for the homomorphism    e gens a list of vectors that are the images  in target  under the homomorphisms of each of the  generators stored in source    4 2 Calculating the kernel of a FG module homorphism by splitting  into two homomorphisms    HAPprime represents a homomorphism between two FG modules as a list of generators for the image  of the homomorphism  Each generator is given as an element in the target module  represented as a  vector in the same manner as used in the FpGModuleGF datatype  see Chapter 3   Given a set of such  generating vectors  an F generating set for the image of the homomorphism  as elements of the target  module   s vector space  is given by taking all G multiples of the generators  Writing the vectors in  this expanded set as a matrix  the kernel of the boundary homomorphism is the  left  null space of  this matrix  As with FpGModuleGFs  the block structure of the generating vectors  see Section 3 2 1   allows this null space to be calculated 
30. HAPprime    Datatypes reference manual  Version 0 5 1    10 May 2011    Paul Smith    Paul Smith      Email  paul  smith  st andrews ac uk      Homepage  http    www cs st andrews ac uk    pas      Address  School of Computer Science   University of St Andrews  St Andrews   UK     HAPprime 2    Copyright       2006 2011 Paul Smith   HAPprime is released under the GNU General Public License  GPL   This file is part of HAP   prime  though as documentation it is released under the GNU Free Documentation License  see  http   www gnu org licenses licenses html FDL     HAPprime is free software  you can redistribute it and or modify it under the terms of the GNU General  Public License as published by the Free Software Foundation  either version 2 of the License  or  at your option   any later version    HAPprime is distributed in the hope that it will be useful  but WITHOUT ANY WARRANTY  without even  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE  See the GNU  General Public License for more details    You should have received a copy of the GNU General Public License along with HAPprime  if not  write to  the Free Software Foundation  Inc   59 Temple Place  Suite 330  Boston  MA 02111 1307 USA   For more details  see http   www  fsf org licenses gpl html     Acknowledgements    HAPprime was developed with the support of a Marie Curie Transfer of Knowledge grant based at the  Department of Mathematics  NUI Galway  MTKD CT 2006 042685  and is maintained
31. IME DisplayGeneratingRowsBlocks       O HAPPRIME DisplayGeneratingRowsBlocks gens  actionBlockSize   operation    Returns  nothing   Displays a set of G generating rows a compact human readable form  Each generating rows can be  divided into blocks of length act ionBlockSize  The generating rows are displayed in a per block  form  a   where the block is non zero and   where the block is all zero    This function is used by DisplayBlocks  3 4 10   for FpGModuleGF  and DisplayBlocks  4 5 4    for FpGModuleHomomorphismGF    Example  gap   HAPPRIME DisplayGeneratingRowsBlocks   ModuleGenerators  M   HAPPRIME ModuleGroupAndAction  M                                                         gt   REA         s      55 2s    esa    zx              6 1 11 HAPPRIME IndependentGeneratingRows       O HAPPRIME IndependentGeneratingRows  blocks   operation   Returns  List of lists  Given a block structure as returned by HAPPRIME GeneratingRowsBlockStructure  6 1 9   this  decomposes a set of generating rows into sets of independent rows  These are returned as a list of row  indices  where each set of rows share no blocks with any other set           Example  gap   DisplayBlocks  M    Module over the group ring of Group    fl  f2  f3 1     in characteristic 2 with 6 generators in FG 5    5 4     HAPprime 50    e E        ke    eR    Generators are in minimal echelon form    gap   gens    ModuleGenerators  M      gap   G    ModuleGroup M      gap   blocks    HAPPRIME GeneratingRowsBlockStructu
32. PRIME WordToVector  53     gt     gt   gt                               E  P     E  P       ImageOfModuleHomomorphism   image of homomorphism  40   of collections of elements  40   of element  40   of module  40  ImageOfModuleHomomorphismDestructive   of collection of elements  40   of element  40  IntersectionModules  31  IntersectionModulesGF  31  IntersectionModulesGF2 31  IntersectionModulesGFDestructive  31  IsModuleElement   for collection of elements  33   for element  33  IsSameSubspace  44  IsSubModule  33       KernelOfModuleHomomorphism  40  KernelOfModuleHomomorphismGF  41  KernelOfModuleHomomorphismIndependent   Split  41  KernelOfModuleHomomorphismSplit  40                      LengthOneResolutionPrimePowerGroup  10  LengthZeroResolutionPrimePowerGroup  10       58    EchelonModuleGenerators  27          HAPprime  MinimalGeneratorsModuleGF  25 Semi  MinimalGeneratorsModuleGFDestructive  Semi  25   MinimalGeneratorsModuleRadical  25 Semi  ModuleAction  21 Semi  ModuleActionBlockSize  21   ModuleAmbientDimension  22 Solu  ModuleCharacteristic  22   ModuleField  22 Solu    ModuleGenerators  24  ModuleGeneratorsAreEchelonForm  24  ModuleGeneratorsAreMinimal  24  ModuleGeneratorsForm  24  ModuleGroup  21  ModuleGroupAndAction  21  ModuleGroupOrder  21  ModuleHomomorphismGeneratorMatrix  38  ModuleIsFullCanonical  24  ModuleRank  25  ModuleRankDestructive  25  ModuleVectorSpaceBasis  25  ModuleVectorSpaceDimension  25  MutableCopyModule  19                      Prelma
33. The  basis rows in the current set are used to reduce the next row of the matrix  if  after reduction  it is  non zero then it will have a unique head and is added to the list of basis rows  1f it is zero then it may  be removed  The final set of vectors will be a semi echelon basis for the row space of the original  matrix  which can then be permuted to give an echelon basis if required     3 2 3 Echelon block structure and minimal generators    In the same way that the echelon form is useful for vector space generators  we can convert a set  of FG module generators into echelon form  However  unlike multiplication by a field element  the  group action on generating vectors also permutes the vector elements  so a strict echelon form is less  useful  Instead  we define a    block echelon    form  treating the blocks in the vector  see example above   as the FG elements to be converted into echelon form  In block echelon form  the first non zero block  in each row is as far to the right as possible  Often  the first non zero block in a row will be to the right  of the first non zero block in the row above  but when several generating vectors are needed in a block   this may not be the case  The following example creates a random submodule of  FG   by picking five  generating vectors at random  This module is first displayed with the original generators  and then they  are converted to block echelon form using the the HAPprime function EchelonModuleGenerators   3 6 1   The two 
34. The most commonly used constructor requires  a list of generators gens and a group G  The group action and block size can be specified using the  action and actionBlockSize parameters  or if these are omitted then the canonical action is  assumed  These parameters can also be wrapped up in a groupAndAct ion record  see 3 1      HAPprime 19    An empty FpGModuleGF can be constructed by specifying a group and an ambientDimension  instead of a set of generators  A module spanning  IFG   with canonical generators and action can be  constructed by giving a group G and a rank n  A FpGModuleGF can also be constructed from a HAP  FpGModule HAPmod    The generators in a FpGModuleGF do not need to be a minimal set  If you wish to create a mod   ule with minimal generators  construct the module from a non minimal set gens and then use one  of the MinimalGeneratorsModule functions  3 5 9   When constructing a FpGModuleGF from a  FpGModule  the HAP function GeneratorsOfFpGModule  HAP  GeneratorsOfFpGModule  is used  to provide a set of generators  so in this case the generators will be minimal    Most of the forms of this function perform a few  cheap  tests to make sure that the arguments are  self consistent  The NC versions of the constructors are provided for internal use  or when you know  what you are doing and wish to skip the tests  See Section 3 3 5 below for an example of usage     3 3 2 FpGModuleFromFpGModuleGF    O FpGModuleFromFpGModuleGF  M   operation    Returns  FpGModule 
35. and returns a vector w that is the result of w     gv  See Section 3 4 11  below for an example of usage     3 4 4 ModuleActionBlockSize       ModuleActionBlockSize  M   operation   Returns  Integer  Returns the block size of the group action of the module M  This is the length of vectors  or  the factor of the length  upon which the group action function acts  See Section 3 4 11 below for an  example of usage     3 4 5 ModuleGroupAndAction       ModuleGroupAndAction  M   operation   Returns  Record with elements  group  action  actionOnRight  actionBlockSize   Returns details of the module   s group and action in a record with the following elements     e group The module   s group    e action The module   s group action  as a function of the form action g  v  that takes a vector  v and returns the vector w   gv    e actionOnRight The module   s group action when acting on the right  as a function of the form  action g  v  that takes a vector v and returns the vector w   vg    HAPprime 22    e actionBlockSize The module   s group action block size  This is the ambient dimension of  vectors in the module FG    This function is provided for convenience  and is used by a number of internal functions  The canoni   cal groups and action can be constructed using the function CanonicalGroupAndAct ion  3 3 4   See  Section 3 4 11 below for an example of usage     3 4 6 ModuleCharacteristic       ModuleCharacteristic M   operation   Returns  Integer  Returns the characteristic of the
36. ansionSize                  6 1 2 HAPPRIME KernelOfGeneratingRowsDestructive                 6 1 3 HAPPRIME GActMatrixColumns                          6 1 4 HAPPRIME ExpandGeneratingRow                  20    6 1 5 HAPPRIME AddGeneratingRowToSemiEchelonBasisDestructive         6 1 6 HAPPRIME ReduceVectorDestructive         llle  6 1 7 HAPPRIME ReduceGeneratorsOfModuleByXX                  6 1 8 HAPPRIME DisplayGeneratingRows                  20    6 1 9 HAPPRIME GeneratingRowsBlockStructure                    6 1 10 HAPPRIME DisplayGeneratingRowsBlocks                    6 1 11 HAPPRIME IndependentGeneratingRows               len  6 1 12 HAPPRIME GactPGvector          o    oh sss  6 1 13 HAPPRIME CoefficientsOfGeneratingRowsXX                6 1 14  HAPPRIME GenerateFromGeneratingRowsCoefficientsXX            6 1 15 HAPPRIME RemoveZeroBlocks              o              6 1 16 HAPPRIME AddZeroBlocks              e                  FG modules        6 2 1 HAPPRIME DirectSumForm                2 0000 00088  6 2 2 HAPPRIME PrintModuleDescription                        6 2 3 HAPPRIME ModuleGeneratorCoefficients                          6 3    6 4    HAPprime    6 2 4 HAPPRIME ModuleElementFromGeneratorCoefficients              6 2 5 HAPPRIME MinimalGeneratorsVectorSpaceGeneratingRowsDestructive      6 2 6 HAPPRIME IsGroupAndAction        ccccccc       Resolutions      0 3 1 HAPPRIMB Wordlo Vector sopas mun Eu be eS Pal a  6 3 2  HAPPRIME VectorToWord    4 242423  om 9 aaa a  6 3 3
37. e   this list is returned  Otherwise  fail is returned  Note that the first matrix in this list corresponds to  the zeroth degree  for resolutions of modules  this is the generators of the module  for resolutions of  groups  this is the empty matrix  The second matrix corresponds to the first degree  and so on     6 3 4 HAPPRIME AddNextResolutionBoundary MapMatNC       HAPPRIME_AddNextResolutionBoundaryMapMatNC R  BndMat   operation   Returns  HapResolution  Returns the resolution R extended by one term  where that term is given by the boundary map  matrix BndMat  If BndMat is not already in compressed matrix form  it will be converted into this  form  and if the boundaries in R are not already in matrix form  they are all converted into this form        6 3 5 HAPPRIME CreateResolutionWithBoundaryMapMatsNC    O HAPPRIME CreateResolutionWithBoundaryMapMatsNC G  BndMats   operation   Returns  HapResolution  Returns a HAP resolution object for group G where the module homomorphisms are given by the  boundary matrices in the list BndMat s  This list is indexed with the boundary matrix for degree zero  as the first element  If the resolution is the resolution of a module  the module s minimal generators  are this first boundary matrix  otherwise  for the resolution of a group   this should be set to be the  empty matrix           6 4 Test functions    Internal helper functions for testing HAPprime     6 4  HAPPRIME SingularIsAvailable          HAPPRIME_SingularIsAvailable     func
38. e columns of A such that J    1   t   Taking F and G multiples of these columns from  the remaining columns  the first row of these columns can be reduced to zero  giving a new matrix A      This matrix can be partitioned as follows    B 0  te  gt      where B is 1 x t  Cis  m    1  x t and D is  m     1  x  n    t   It is assumed that B and C are    small    and  operations on these can can be easily handled in memory using standard linear algebra  while D may  still be large    Taking the FG module generated by the    columns which form the BC partition of the matrix  we  compute E  a set of minimal generators for the submodule of this which is zero in the first row  These  are added as columns at the end of A   giving a matrix    B 0 0  CDE    HAPprime 37  The kernel of this matrix can be shown to be     T retos     L   preimg  ker DE  C     where    The augmentation of D with E guarantees that this preimage always exists  Since B and C are small   both ker B and L are easy to compute using linear algebra  while ker DE  can be computed by recur   sion    Unfortunately  E can be large  and the accumulated increase of size of the matrix over many  recursions negates the time and memory saving that this algorithm might be expected to give  Testing  indicates that it is currently no faster than the KernelOfModuleHomomorphismSplit  4 6 3  method   and does not save much memory over the full expansion using linear algebra  An improved version of  this algorithm would reduce E by
39. e list  the returned list can contain  fail entries if there are vectors with no solution   For an FpGModuleGF module M  this returns a  module whose image under phi is M  or fail   The module returned will not necessarily have  minimal generators  and one of the MinimalGeneratorsModule functions  3 5 9  should be used on  the result if a minimal set of generators is needed    The standard functions use linear algebra  expanding the generator matrix into a full matrix and  using SolutionMat  Reference  SolutionMat  to calculate a preimage of elm  In the case where a  list of vectors is provided  the matrix decomposition is only performed once  which can save signifi   cant time    The GF versions of the functions can give a large memory saving when the generators of the  homomorphism phi are in echelon form  and operate by doing back substitution using the generator  form of the matrices     4 6 3 KernelOfModuleHomomorphism       KernelOfModuleHomomorphism phi   operation      KernelOfModuleHomomorphismSplit  phi   operation     HAPprime 41    O Kernel0fModuleHomomorphismIndependent Split  phi   operation      KernelOfModuleHomomorphismGF  phi   operation   Returns  FpGModuleGF  Returns the kernel of the module homomorphism phi  as an FpGModuleGF module  There are  three independent algorithms for calculating the kernel  represented by different versions of this func   tion     The standard version calculates the kernel by the obvious vector space method  The homo   morphism 
40. e module element generated by multiplying c by the ex   pansion of the generators gens  For a list of coefficient vectors col 1  this returns a list of generating  vectors    The standard versions of this function use standard linear algebra  The GF versions only performs  the expansion of necessary generating rows  and only expands by one group element at a time  so will  only need at most twice the amount of memory as that to store gens  which is a large saving over  expanding the generators by every group element at the same time  as in a naive implementation  It  may also be faster     6 1 15 HAPPRIME RemoveZeroBlocks          HAPPRIME_RemoveZeroBlocks  gens  GA   operation    Returns  Vector   Removes from a set of generating vectors gens  with ModuleGroupAndAct ion  3 4 5  GA  any  blocks that are zero in every generating vector  Removal is done in place  i e  the input argument  gens will be modified to remove the zero blocks  Zero blocks are unaffected by any row or expansion  Operation  and can be removed to save time or memory in those operations  The function returns the  original block structure as a vector  and this can be used in the function HAPPRIME AddZeroBlocks   6 1 16  to reinstate the zero blocks later  if required  See the documentation for that function for more  detail of the block structure vector     6 1 16 HAPPRIME AddZeroBlocks          HAPPRIME AddZeroBlocks gens  blockStructure  GA   operation    Returns  List of vectors   Adds zero blocks to a s
41. ectly  or false otherwise   This repeatedly creates resolutions of length 6 for random 2 groups  up to order 128  using  both of the HAPprime resolution algorithms  and compares them both with the original HAP  ResolutionPrimePowerGroup  HAP  ResolutionPrimePowerGroup  and checks that they are  equal  The optional argument ntest s specifies how many resolutions to try  the default is 25     Index    for FpGModuleGF  33    AmbientModuleDimension  22    BestCentralSubgroupForResolutionFinite   Extension  13    BoundaryFpGModuleHomomorphismGF  11       CanonicalAction  19  CanonicalActionOnRight  19  CanonicalGroupAndAction  19    DirectDecompositionOfModule  30  DirectDecompositionOfModuleDestructive   30   DirectSumOfModules   for collection of modules  30   for n copies of the same module  30   for two modules  30  isplayBlocks  for FpGModuleGF  22  for FpGModuleHomomorphismGF  38  isplayModuleHomomorphismGenerator   Matrix  38  oduleHomomorphismGenerator   MatrixBlocks  38       isplay    tors  27  torsDestructive  27  oduleGen torsMinMem  27  oduleGen torsMinMem   Destructive  27    eGen  eGen    odul  odul    Echelon  Echelon  Echelon  Echelon    era  era  era                era             FpGModuleFromFpGMod  FpGModuleGF  construction from FpGModule  18  construction from generators and groupAn   dAction  18  construction from generators  group and ac   tion  18    uleGF  19       56    construction of empty module from group  and action  18  construction of empty module
42. enerators   in characteristic 2 with 5 generators in FG 3   gap   U    FpGModuleGF  32  CanonicalGroupAndAction G     Module over the group ring of  lt pc group of size 8 with   3 generators gt  in characteristic 2 with 0 generators in FG     4  Generators are in minimal echelon form    gap gt   gap gt  IsSubModule M  S    true  gap gt  IsSubModule M  T    true  gap gt  IsSubModule M  U    false   gap gt    gap gt  e    RandomElement  M      lt a GF2 vector of length 24 gt   gap gt  Display   el                        Dodo to loas xoxo dor a lod  eo Dog do a 2  gap gt  IsModuleElement  S  e    false  gap gt  IsModuleElement  T  e    true  gap gt     gap gt  FpGModuleFromFpGModuleGF  5            HAPprime 21    Module of dimension 8 over the group ring of  lt pc group of size 8 with  3 generators gt  in characteristic 2       3 4 Data access functions    3 4 1 ModuleGroup       ModuleGroup  M   operation   Returns  Group  Returns the group of the module M  See Section 3 4 11 below for an example of usage     3 4  ModuleGroupOrder       ModuleGroupOrder  M   operation   Returns  Integer  Returns the order of the group of the module M  This function is identical to    Order  ModuleGroup  M     and is provided for convenience  See Section 3 4 11 below for an ex   ample of usage     3 4 5 ModuleAction       ModuleAction  M   operation   Returns  Function  Returns the group action function of the module M  This is a function action g  v  thattakes a  group element g and a vector v 
43. er block form   with a   where the block is non zero and   where the block is all zero    The standard GAP methods View  Reference  View   Print  Reference  Print  and Display   Reference  Display  are also available   See Section 3 6 3 below for an example of usage     HAPprime    3 4 11 Example  Accessing data about a FpGModuleGF    In the following example  we construct three terms of a  minimal  resolution of the dihedral group of    order eight  which is a chain complex of FG modules      FGP  gt   FG    FG  gt  F  0    We obtain the last homomorphism in this chain complex and calculate its kernel  returning this as a  FpGModuleGF  We can use the data access functions described above to extract information about this    module     See Chapters 4 and 2 respectively for more information about FG module homomorphisms and    resolutions in HAPprime  Example          gap gt  R    ResolutionPrimePowerGroupRadical  DihedralGroup  8   2    Resolution of length 2 in characteristic 2 for  lt pc group of size 8 with  3 generators       No contracting homotopy available   A partial contracting homotopy is available        gap   phi    BoundaryFpGModuleHomomorphismGF  R  2      Module homomorphism gt     gap   M    KernelOfModuleHomomorphism  phi    Module over the group ring of   pc group of size 8 with  3 generators   in characteristic 2 with 15 generators in FG 3     gap     Now find out things about this module M  gap   ModuleGroup  M     lt pc group of size 8 with 3 generators  
44. er for a small group  of order 8  16  32 or 64   The group can be  specified an order  i pair from the GAP  Reference  Small Groups  library  or as a group G  in  which case IdSmallGroup  Reference  IdSmallGroup  is used to identify the group     Example          gap gt  HallSeniorNumber  32  5     20   gap gt  HallSeniorNumber  SmallGroup  64  1     11             Chapter 6    Internal functions    6 1 Matrices as G generators of a FG module vector space    Both FpGModuleGF  Chapter 3  and FpGModuleHomomorphismGF  Chapter 4  store a matrix whose  rows are G generators for a module vector space  the module and the homomorphism s image respec   tively   The internal functions listed here provide common operations for dealing with these matrices     6 1 1 HAPPRIME_ValueOptionMaxFGExpansionSize       O HAPPRIME ValueOptionMaxFGExpansionSize field  group   operation   Returns  Integer  Returns the maximum matrix expansion size  This is read from the MaxFGExpansionSize  option from the GAP options stack  Reference  Options Stack   computed using the  MaxFGExpansionMemoryLimit option           6 1 2 HAPPRIME KernelOfGeneratingRowsDestructive       O HAPPRIME KernelOfGeneratingRowsDestructive  gens  rowlengths  GA   operation   Returns  List  Returns a list of generating vectors for the kernel of the FG module homomorphism defined by  the generating rows gens using the group and action GA   This function computes the kernel recursively by partitioning the generating rows into    B 0
45. et of generating vectors gens to make it have the block structure given  in blockStructure  for a given ModuleGroupAndAction  3 4 5  GA   The generators gens are  modified in place  and also returned    The b1ockStructure parameter is a vector of which is the length of the required output vector  and has zeros where zero blocks should be  and is non zero elsewhere  Typically  an earlier call to  HAPPRIME RemoveZeroBlocks  6 1 15  will have been used to remove the zero blocks  and this func   tion and such a blockStructure vector is returned by this function  HAPPRIME AddZeroBlocks   6 1 16  can be used to reinstate these zero blocks        6 2 FG modules    FG modules in HAPprime use the datatype FpGModuleGF  Chapter 3   Internally  this uses many of  the functions listed in Section 6 1  and further internal functions are listed below     HAPprime 52    6 2 1 HAPPRIME DirectSumForm          HAPPRIME DirectSumForm current  new   operation   Returns  String  Returns a string containing the form of the generator matrix if the direct sum is formed between  a FpGModuleGF with the form current and a FpGModuleGF with the form new  The direct sum is  formed by placing the two module generating matrices in diagonal form  Given the form of the two  generating matrices  this allows the form of the direct sum to be stated  See ModuleGeneratorsForm   3 5 5  for information about form strings     6 2 2 HAPPRIME PrintModuleDescription          HAPPRIME PrintModuleDescription M  func   opera
46. field F  and the action is a permutation of the vector elements    Note that these functions are attributes of a group  so that the canonical action for a particular  group object will always be an identical function  which is desirable for comparing and combining    HAPprime    modules and submodules      3 3 5 Example  Constructing a FpGModuleGF    The example below constructs four different FG modules  where G is the quaternion group of order    eight  and the action is the canonical action in each case   1  Mis the module  FG   2  Sis the submodule of  FG   with elements only in the first summand  3  Tis a random submodule M generated by five elements    4  Uis the trivial  zero  submodule of  FG      We check whether S  T and U are submodules of M  examine a random element from M  and convert S    into a HAP FpGModule  For the other functions used in this example  see Section 3 8   Example          gap gt  G    SmallGroup 8  4     gap   M    FpGModuleGF  G  3    Full canonical module FG 3 over the group ring of  lt pc group of size 8 with  3 generators gt  in characteristic 2   gap gt  gen    ListWithIdenticalEntries 24  Zero GF 2        gap gt  gen 1     One  GF  2      gap   S    FpGModuleGF   gen   G    Module over the group ring of  lt pc group of size 8 with   3 generators gt  in characteristic 2 with 1 generator in FG     3  Generators are in minimal echelon form   gap gt  T    RandomSubmodule  M  5    Module over the group ring of  lt pc group of size 8 with   3 g
47. for each other block  Any generators that are completely zero are then removed  The  algorithm is summarised in the following pseudocode     Let X be the list of generators still to convert  initially all the generators   Let Xe      be the list of generators already in block echelon form   Define X b  to represent the  b th block from generators X   Define V X  to represent the vector space generated by generators X                for b in  1  blocks   1  Find a minimal set of generators Xm from X such that  V Xm b    Xe b     V X b    Xe b    2  Remove Xm from X and add them to Xe  3  Find a semi echelon basis for V Xe  and use this to reduce th lements  of block b in remaining vectors of X to zero  end for       The result of this algorithm is a new generating set for the module that is minimal in the sense that  no vector can be removed from the set and leave it still spanning the same vector space  In the case  of a FG module with F GF 2   this is a globally minimal set  there is no possible alternative set with  fewer generators     3 2 4 Intersection of two modules    Knowing the block structure of the modules enables the intersection of two modules to be calculated    more efficiently  Consider two modules U and V with the block structure as given in this example   Example          gap gt  DisplayBlocks  U            AH          gap gt  DisplayBlocks  V                      HAPprime 18       To calculate the intersection of the two modules  it is normal to expand out 
48. g vector space  These do not need to be  minimal   they could even be a vector space basis  The MinimalGeneratorsModule functions   3 5 9  can be used to convert a module to one with a minimal set of generators     group  the group G for the module    action  a function action g  u  that represents the module s group action on vectors  It  takes a group element g     G and a vector u of length actionBlockSize and returns another  vector v of the same length that is the product v     gu  If action is not provided  the canonical  group permutation action is used  If the vector u is an integer multiple of actionBlockSize in  length  the function act ion acts block wise on the vector     e actionBlockSize  the length of vectors upon which action operates  This is usually the  order of the group   G   for example for the canonical action   but it is possible to specify this to    14    HAPprime 15    support other possible group actions that might act on larger vectors  actionBlockSize will  always be equal to the ambient dimension of the module FG      The group  action and block size are internally wrapped up into a record groupAndAction  with  entries group  action and actionBlockSize  This is used to simplify the passing of parameters to  some functions    Some additional information is sometimes needed to construct particular classes of FpGModuleGF     e ambientDimension  the length of vectors in the generating set  for a module  FG    this is  equal to nxactionBlockSize  Thi
49. geRepresentativeOfModule   Homomorphism  for collection of elements  40  for element  40  for module  40  PrelImageRepresentativeOfModule   HomomorphismGF  for collection of elements  40  for element  40  PrintDimensionsMat  44    RadicalOfModule  26  RandomElement  33  RandomSubmodule  34  ResolutionFpGModuleGF  11  ResolutionGroup  11  ResolutionLength  ll  ResolutionModuleRank  11  ResolutionModuleRanks  11  ResolutionsAreEqual  11  ReverseEchelonModuleGenerators  28  ReverseEchelonModuleGenerators   Destructive  28                   EchelonModuleGeneratorsDestructive     27    EchelonModuleGeneratorsMinMem  27  EchelonModuleGeneratorsMinMem     Destructive  28  tionMat    for multiple vectors  44       tionMatDestructive    for multiple vectors  44  SourceModule  38  SumIntersectionMatDestructive  43  SumIntersectionMatDestructiveSE  43  SumModules  31       TargetModule  38    
50. generating sets both span the same vector space  i e  the same FG module   but the  latter representation is much more useful                             Example   gap gt  M    FpGModuleGF  RandomMat  5  32  GF 2    DihedralGroup  8       gap   Display  M    Module over the group ring of Group    fl  f2  f3 1    in characteristic 2 with 5 generators in FG 4    desde elas ade AML  E     Mle A DEP RT A OP  Ls     AS A AAA A n   i      TX Da a a DEDE  sd  Et   eod ELE    SIIAIIIT L 1  111    15 e 111      gap   echM    accu m   rec  module    Module over the group ring of   pc group of size 8 with    3 generators   in characteristic 2 with 4 generators in FG                    4  Generators are in minimal echelon form   headblocks      1  2  3  4       gap   Display  echM module    Module over the group ring of Group    f1  f2    3      in characteristic 2 with 4 generators in FG 4    Dela ado oo cado p LIIl ltt  Tl 1131     A A AA AS    Seeks em met    51 1 3   D 1 111     ere nean reete rm      1111 1   Generators are in minimal echelon form gap gt   gap   M   echM module   true   The main algorithm for converting a set of generators into echelon form is    SemiEchelonModuleGeneratorsDestructive  3 6 1      The generators for the IFG module are  represented as rows of a matrix  and  with the canonical action  the first  G  columns of this matrix    HAPprime 17    correspond to the first block  the next  G  columns to the second block  and so on  The first block  of the matrix 
51. hile the homomor   phism is needed     4 4 2 Example  Constructing a FpGModuleHomomorphismGF    In this example we construct the module homomorphism q    FG       FG which maps both generators  of  FG   to the generator of FG    Example          gap   G    SmallGroup 8  4      gap   im     1 0 0 0 0 0 0 0   One  GF  2         2 2  0  0 2 2   0 Z 2   0 2 2   0 Z 2   0 2 2   0 2 2   0 2 2     gap   phi    FpGModuleHomomorphismGF   gt  FpGModuleGF  G  2         HAPprime 38     gt  FpGModuleGF  G  1     gt   im  im      lt Module homomorphism gt        4 5 Data access functions    4 5 1 SourceModule       SourceModule  phi   operation   Returns  FpGModuleGF  Returns the source module for the homomorphism phi  as an FpGModuleGF     4 5 2 TargetModule    O TargetModule  phi   operation   Returns  FpGModuleGF  Returns the targetmodule for the homomorphism phi  as an FpGModuleGF     4 5 3 ModuleHomomorphismGeneratorMatrix       ModuleHomomorphismGeneratorMatrix  phi   operation   Returns  List of vectors  Returns the generating vectors gens of the representation of the homomorphism phi  These  vectors are the images in the target module of the generators of the source module     4 5 4 DisplayBlocks  for FpGModuleHomomorphismGF     O DisplayBlocks  phi   method   Returns  nothing  Prints a detailed description of the module in human readable form  with the module generators  and generator matrix shown in block form  The standard GAP methods View  Reference  View    Print  Reference  P
52. ight version of this function  to each column vector in the matrix Vt  By acting on columns of  a matrix  i e  the transpose of the normal GAP representation   the group action is just a permutation  of the rows of the matrix  which is a fast operation  The group and action are passed in GA using the  ModuleGroupAndAction  3 4 5  record    If the input matrix Vt is in a compressed matrix representation  then the returned matrix will also  be in compressed matrix representation        6 1 4 HAPPRIME ExpandGeneratingRow       O HAPPRIME ExpandGeneratingRow gen  GA   operation   O HAPPRIME ExpandGeneratingRows gens  GA   operation      HAPPRIME ExpandGeneratingRowOnRight gen  GA   operation   O HAPPRIME ExpandGeneratingRowsOnRight gens  GA   operation     Returns  List   Returns a list of G generators for the vector space that corresponds to the of G generator gen  or  generators gens   This space is formed by multiplying each generator by each element of G in turn   using the group and action specified in GA  see ModuleGroupAndAction  3 4 5    The returned list is  thus  G  times larger than the input    For a list of generators gens  vi v        v4   HAPPRIME ExpandGeneratingRows  6 1 4  returns  the list  g1  1 22V1     21  2 22V2       amp  g Va  In other words  the form of the returned matrix is block   wise  with the expansions of each row given in turn  This function is more efficient than repeated use of  HAPPRIME ExpandGeneratingRow  6 1 4  since it uses the efficient H
53. ionPrimePowerGroup  G     Resolution of length 1 in characteristic 2 for   pc group of size 64 with  6 generators       No contracting homotopy available    A partial contracting homotopy is available              gap gt  R    ExtendResolutionPrimePowerGroupRadical  R      gap gt  R    ExtendResolutionPrimePowerGroupRadical  R     gap gt  R    ExtendResolutionPrimePowerGroupRadical  R         Resolution of length 4 in characteristic 2 for  lt pc group of size 64 with  6 generators      No contracting homotopy available    A partial contracting homotopy is available           gap   gap   ResolutionLength  R    4  gap gt  ResolutionGroup  R      lt pc group of size 64 with 6 generators gt   gap gt  ResolutionModuleRanks  R       4  9  15  22    gap gt  ResolutionModuleRank R  3    15  gap   M2    ResolutionFpGModuleGF  R  2     Full canonical module FG 9 over the group ring of   pc group of size 64 with  6 generators   in characteristic 2                   gap   d3    BoundaryFpGModuleHomomorphismGF  R  3      Module homomorphism gt     gap   ImageOfModuleHomomorphism d3    Module over the group ring of   pc group of size 64 with  6 generators   in characteristic 2 with 15 generators in FG 9           gap        HAPprime 13    gap gt  S    ResolutionPrimePowerGroupGF  G  4     Resolution of length 4 in characteristic 2 for  lt pc group of size 64 with  6 generators      No contracting homotopy available    A partial contracting homotopy is available     gap   ResolutionsAreEqua
54. is taken and the vector space V  spanned by the rows of that block is found  which  will be a a subspace of FIG   Taking the rows in the first block  find  by gradually leaving out  rows  a minimal subset that generates V   The rows of the full matrix that correspond to this  minimal subset form the first rows of the block echelon form generators  Taking those rows  and  all G multiples of them  now calculate a semi echelon basis for the vector space that they generate   using SemiEchelonMatDestructive  Reference  SemiEchelonMatDestructive    This is used to  reduce all of the other generators  Since the rows we have chosen span the space of the first block   the first block in all the other rows will be reduced to zero  We can now move on to the second block    We now look at the rows of the matrix that start  have their first non zero entry  in the second  block  In addition  some of the generators used for the first block might additionally give rise to  vector space basis vectors with head elements in the second blocks  The rows need to be stored during  the first stage and reused here  We find a minimal set of the matrix rows with second block heads  that  when taken with any second block heads from the first stage  generate the entire space spanned  by the second block  The vector space basis from this new minimal set is then used to reduce the rest  of the generating rows as before  reducing all of the other rows    second blocks to zero  The process  is then repeated 
55. ith 1 generator in FG   1  Generators are in minimal echelon form     gap   N    FpGModuleGF   1 1 1 1   One GF 2    G     Module over the group ring of   pc group of size 4 with   2 generators   in characteristic 2 with 1 generator in FG   1  Generators are in minimal echelon form              gap       gap   S    SumModules  M N      Module over the group ring of   pc group of size 4 with   2 generators   in characteristic 2 with 2 generators in FG 1           HAPprime 33    gap gt  I    IntersectionModules  M N    Module over the group ring of  lt pc group of size 4 with  2 generators gt  in characteristic 2 with 1 generator in FG 1     gap gt     gap gt  S   Mand I   N   true             3 8 Miscellaneous functions    3 8 1    for FpGModuleGF          M  N   operation   Returns  Boolean  Returns t rue if the modules are equal  false otherwise  This checks that the groups and actions  in each module are equal  i e  identical   and that the vector space spanned by the two modules are  the same   All vector spaces in FpGModuleGFs of the same ambient dimension are assumed to be  embedded in the same canonical basis   See Section 3 5 11 above for an example of usage     3 8 2 IsModuleElement       IsModuleElement  M  elm   operation      IsModuleElement  M  coll   operation   Returns  Boolean  Returns true if the vector elm can be interpreted as an element of the module M  or false  otherwise  If a collection of elements is given as the second argument then a list of responses
56. l  and minimal  generators for FG     e  semiechelon  The generators are minimal and in semi echelon form    e  echelon  The generators are minimal and in echelon form    See Section 3 5 11 below for an example of usage     3 5 6 ModuleRank       ModuleRank  M   operation      ModuleRankDestructive  M   operation    Returns  Integer   Returns the rank of the module M  i e  the number of minimal generators  If the module is al   ready in minimal form  according to ModuleGeneratorsAreMinimal  3 5 2   then the number of  generators is returned with no calculation  Otherwise  MinimalGeneratorsModuleGF  3 5 9  or  MinimalGeneratorsModuleGFDestructive  3 5 9  respectively are used to find a set of minimal  generators  See Section 3 5 11 below for an example of usage     3 5 7 ModuleVectorSpaceBasis    O ModuleVectorSpaceBasis  M   operation    Returns  List of vectors   Returns a matrix whose rows are a basis for the vector space of the FpGModuleGF module M   Since FpGModuleGF stores modules as a minimal G generating set  this function has to calculate all  G multiples of this generating set and row reduce this to find a basis  See Section 3 5 11 below for an  example of usage    TODO  A GF version of this one    3 5 8 ModuleVectorSpaceDimension    O ModuleVectorSpaceDimension  M   operation   Returns  Integer  Returns the dimension of the vector space of the module M  Since FpGModuleGF stores modules  as a minimal G generating set  this function has to calculate all G multiples of
57. l R  S    true  gap   T    ResolutionPrimePowerGroupGF2 G  4     Resolution of length 4 in characteristic 2 for   pc group of size 64 with  6 generators      No contracting homotopy available    A partial contracting homotopy is available        gap gt  ResolutionsAreEqual R  T    true             Further example of constructing resolutions and extracting data from them are given in Sections  3 4 11  3 5 11  3 6 3  4 5 7 and 4 6 4 in this reference manual  and also the chapter of  HAPprime   Examples  in the HAPprime user guide     2 6 Miscellaneous resolution functions    2 6 1 BestCentralSubgroupForResolutionFiniteExtension       BestCentralSubgroupForResolutionFiniteExtension G   n    operation    Returns  Group   Returns the central subgroup of G that is likely to give the smallest module ranks when using the  HAP function ResolutionFiniteExtension  HAP  ResolutionFiniteExtension   That function  computes a non minimal resolution for G from the twisted tensor product of resolutions for a normal  subgroup N  lt  G and the quotient group G N  The ranks of the modules in the resolution for G are the  products of the module ranks of the resolutions for these smaller groups  This function tests n terms  of the minimal resolutions for all the central subgroups of G and the corresponding quotients to find  the subgroup quotient pair with the smallest module ranks  If n is not provided  then n   5 is used        Chapter 3    FG modules    Let FG be the group ring of the group G o
58. mGF construction functions                 4 5    4 6    General Functions  Matrices          3d    5 2    Internal functions    6 1    6 2    HAPprime    4 4 2 Example  Constructing a FoGModuleHomomorphismGF               Data access TINO ci n one does c e d cam e he m m eon ded eod  45 1  BoumreMbod  le   4 44 2a G4 cm e de moe d moe ee a a  4 5 2  CTargerModule     oo o e a hae x a ER dry aU  4 5 3 ModuleHomomorphismGeneratorMatrix              ll  4 5 4  DisplayBlocks  for FpGModuleHomomorphisnGF                 4 5 5  DisplayModuleHomomorphismGeneratorMatrix                  4 5 6 DisplayModuleHomomorphismGeneratorMatrixBlocks              4 5 7  Example  Accessing data about a FpGModuleHomomorphismGF          Image and kernel funch  ns       2  coc unas e dass oy xm ava  4 6 1 ImageOfModuleHomomorphism           ees  4 6 2  PrelmageRepresentativeOfModuleHomomorphism                 4 6 3 KernelOfModuleHomomorphism                e             4 6 4 Example  Kernel and Image of a FpGModuleHomomorphismGF             5 1 1 SumintersectionMatDestructive             e                   5 1 2 SolutionMat  for multiple vectors             o    o           3 1 3 UsSameSubspac    20 cie dde a a yo s  5 1 4 PrintDimensionsMat                e     5 1 5 Example  matrices and vector Spaces       o    o    e            Groups         5 2 1 HallSeniorNumber          0 0   ees    Matrices as G generators of a FG module vector space             oo     6 1 1 HAPPRIME ValueOptionMaxFGExp
59. me of the structure of the module   s vector space to be inferred  from the G generators  without needing a full vector space basis   A desirable set of G generators is  one that has many zero blocks  and what we call the    block echelon    form is one that has this property        3 2 2 Matrix echelon reduction and head elements    The block echelon form of a FG module generating set is analagous to the echelon form of matrices   used as a first stage in many matrix algorithms  and we first briefly review matrix echelon form  In a   row  echelon form matrix  the head element in each row  the first non zero entry  is the identity  and  is to the right of the head in the previous row  A consequence of this is that the values below each  head are all zero  All zero rows are at the bottom of the matrix  or are removed   GAP also defines a  semi echelon form  in which it is guaranteed that all values below each head is zero  but not that each  head is to the right of those above it    Matrices can be converted into  semi  echelon form by using Gaussian elimination to perform  row reduction  for example the GAP function SemiEchelonMat  Reference  SemiEchelonMat    A    HAPprime 16    typical algorithm gradually builds up a list of matrix rows with unique heads  which will eventually  be an echelon form set of basis elements for the row space of the matrix  This set is initialised with  the first row of the matrix  and the algorithm is then applied to each subsequent row in turn  
60. minimal form  the  MinimalGeneratorsModule functions  3 5 9  can be used to convert the module to a minimal  form if necessary  See Section 3 5 11 below for an example of usage     3 5 11 Example  Generators and basis vectors of a FpGModuleGF    Starting with the same module as in the earlier example  Section 3 4 11   we now investi   gate the generators of the module M  The generating vectors  of which there are 15  returned  by the function KernelOfModuleHomomorphism  4 6 3  are not a minimal set  but the function  MinimalGeneratorsModuleGF  3 5 9  creates a new object N representing the same module  but now  with only four generators  The vector space spanned by these generators has 15 basis vectors  so rep   resenting the module by a G generating set instead is much more efficient   The original generating  set in M was in fact an F basis  so the dimension of the vector space should come as no surprise     We can also find the radical of the module  and this is used internally for the faster  but more  memory hungry  MinimalGeneratorsModuleRadical  3 5 9    Example  gap gt  R    ResolutionPrimePowerGroupRadical  DihedralGroup  8   2     gap gt  phi    BoundaryFpGModuleHomomorphismGF  R  2     gap   M    KernelOfModuleHomomorphism  phi      gap gt     gap gt  ModuleGenerators  M                           lt a GF2 vector of length 24 gt     a GF2 vector of length 24 gt      a GF2 vector of length 24 gt     a GF2 vector of length 24 gt      a GF2 vector of length 24 gt     a
61. morphism d    M      M  1  the kernel  of this can be calculated  Then given a set of generators  ideally a small set  for ker d    we can set  Mai    EG   ke   da   and the new module homomorphism d  to be the one mapping the standard  generators of M    onto the generators of ker d      HAPprime implements the construction of resolutions using this method  The construc   tion is divided into two stages  The creation of the first homomorphism in the resolution  for M is performed by the function LengthZeroResolutionPrimePowerGroup  2 3 2   or  for a resolution of the trivial FG module F  the first two homomorphisms can be stated  without calculation using LengthOneResolutionPrimePowerGroup  2 3 1  Once this ini   tial sequence is created  a longer resolution can be created by repeated application of one    HAPprime 10       of ExtendResolutionPrimePowerGroupGF  HAPprime  ExtendResolutionPrimePower   GroupGF   ExtendResolutionPrimePowerGroupRadical  HAPprime  ExtendResolu   tionPrimePowerGroupRadical  or  ExtendResolutionPrimePowerGroupGF2  HAPprime   ExtendResolutionPrimePowerGroupGF2   each of which extends the resolution by one  stage by constructing a new module and homomorphism mapping onto the minimal genera   tors of the kernel of the last homomorphism of the input resolution  These extension func   tions differ in speed and the amount of memory that they use  The lowest memory version   ExtendResolutionPrimePowerGroupGF  HA Pprime  ExtendResolutionPrimePowerGroupGF   
62. n can simply be stated  given a set of minimal generators for the group     2 3 2 LengthZeroResolutionPrimePowerGroup    O LengthZeroResolutionPrimePowerGroup  M   function   Returns  HAPResolution  Returns a minimal free IFG resolution of length O for the FpGModuleGF module M  i e  the resolu   tion  FG          M    This function requires little calculation since the the first stage of the resolution can simply be  stated if the module has minimal generators  each standard generator of the zeroth degree module  Mo maps onto a generator of M  If M does not have minimal generators  they are calculated using  MinimalGeneratorsModuleRadical  3 5 9      HAPprime 11    2 4 Resolution data access functions    2 4 1 ResolutionLength       ResolutionLength  R   method   Returns  Integer  Returns the length  1 e  the maximum index k  in the resolution R     2 4 2 ResolutionGroup       ResolutionGroup  R   method   Returns  Group  Returns the group of the resolution R     2 4 3 ResolutionFpGModuleGF       ResolutionFpGModuleGF R  k   method   Returns  FpGModuleGF  Returns the module M  in the resolution R  as a FpGModuleGF  see Chapter 3   assuming the  canonical action     2 4 4 ResolutionModuleRank       ResolutionModuleRank R  k   method   Returns  Integer  Returns the FG rank of the kth module M  in the resolution     2 4 5 ResolutionModuleRanks       ResolutionModuleRanks  R   method   Returns  List of integers  Returns a list containg the FG rank of the each of the modules M  in
63. nelOfModuleHomomorphism d2    Module over the group ring of   pc group of size 8 with  3 generators   in characteristic 2 with 15 generators in FG 3     gap gt  I   k    true   gap gt      gap   e    ModuleGenerators  K   1      gap gt  PreImageRepresentativeOfModuleHomomorphism d3  e      lt a GF2 vector of length 32 gt    gap gt  f    PreImageRepresentativeOfModuleHomomorphism d3  e     lt a GF2 vector of length 32 gt    gap gt  ImageOfModuleHomomorphism d3  f      lt a GF2 vector of length 24 gt    gap gt  last   e    true   gap gt      gap gt  L    KernelOfModuleHomomorphismSplit  d2     Module over the group ring of  lt pc group of size 8 with   3 generators   in characteristic 2 with 5 generators in FG 3           gap gt  k   L   true  gap gt     KernelOfModuleHomomorphismGF  d2      Module over the group ring of  lt pc group of size 8 with  3 generators gt  in characteristic 2 with 4 generators in FG     3  Generators are minimal        gap gt  K   M   true          Chapter 5    General Functions    Some of the functions provided by HAPprime are not specifically aimed at homological algebra or  extending the HAP package  The functions in this chapter  which are used internally by HAPprime  extend some of the standard GAP functions and datatypes     5 1 Matrices    For details of the standard GAP vector and matrix functions  see  Tutorial  matrices  and  Reference   Matrices  in the GAP tutorial and reference manuals  HAPprime provides improved versions of a  couple of 
64. nsiderable cost in time  so this is not done  However  since U and V have fewer generators  than the original homomorphism H  a space saving is still made    In the case where the problem is seperable  i e  a U and V can be found for which there is  no intersection  this approach can give a large saving  The separable components of the homo   morphism can be readily identified from the block structure of the generators  they are the rows  which share no blocks or heads with other rows   and the kernels of these can be calculated inde   pendently  with no intersection to worry about  This is implemented in the alternative algorithm  KernelOfModuleHomomorphismIndependentSplit  4 6 3      4 3 Calculating the kernel of a FG module homorphism by column re   duction and partitioning    The list of generators of the image of a FG module homomorphism can be interpreted as the rows  of a matrix A with elements in FG  and it is the kernel of this matrix which must be found  i e  the  solutions to xA   0  If column reduction is performed on this matrix  by adding FG multiples of other  columns to a column   the kernel is left unchanged  and this process can be performed to enable the  kernel to be found by a recursive algorithm similar to standard back substitution methods    Given the matrix A    aij   take the FG module generated by the first row  a     and find a minimal   or small  subset of elements  ai    e that generate this module  Without altering the kernel  we can  permute th
65. nual  and  HAPprime  Resolutions  in the HAPprime user guide  This section describes the  internal helper functions used by the higher level functions     6 3 1 HAPPRIME WordToVector       HAPPRIME WordToVector  w  dim  orderG   method    Returns  HAP word  list of lists    Returns the boundary map vector that corresponds to the HAP word vector w with module ambient  dimension dim and group order orderG  assumed to be the actionBlockSize   A HAP word  vector has the following format     block  elm    block  elm         where block is a  block number and elm is a group element index  see example below     See also HAPPRIME VectorToWord  6 3 2              Example  gap   G    CyclicGroup  4       gap gt  v    HAPPRIME WordToVector    1 2   2 3  1   2  Order G       lt a GF2 vector of length 8 gt    gap gt  HAPPRIME DisplayGeneratingRows   v   CanonicalGroupAndAction  G       Ls  lees lee    gap gt  HAPPRIME VectorToWord v  Order G       11 2    2 3                    6 3 2 HAPPRIME VectorToWord       HAPPRIME VectorToWord vec  orderG   function   Returns  Vector  The HAP word format vector that corresponds to the boundary vector vec with  actionBlockSize assumed to be orderG   See HAPPRIME WordToVector  6 3 1  for a few more details and an example           HAPprime 54    6 3 3 HAPPRIME BoundaryMatrices          HAPPRIME BoundaryMatrices  R   attribute   Returns  List of matrices  If Ris a resolution which stores its boundaries as a list of matrices  e g  one created by HAPprim
66. omFpGModuleGF             llle  35 3 3  MutableCepyModule x o s zl o m em ctum a    3 3 5 Example  Constructing a FpGModuleGF             a    1 1 Internal function reference  2 Resolutions  21  22  2 3  2 4  2 4 1  ResolutionLength  24 2 ResolutionGroup  2 5  2 6  3 FG modules  3 1  23 2  3 3 Construction functions    3 3 4  CanonicalAction  3 4 Data access functions        3 4 1  ModuleGroup        10  10  10  11  11  11  11  11  11  11  11  12  13  13                   HAPprime  342  ModuleGroupirder ns ou eom em a  34 3 Mod  leAction comia a s we a  3 4 4 ModuleActionBlockSize          o    0 002 e    e    o     3 4 5 ModuleGroupAndAction                 e     3 4 6 ModuleCharacteristic                               0        347  ModulePield   ss aa ans ox a aa a  3 4 8 ModuleAmbientDimension           o     3 4 9   AmbientModuleDimension           e     3 4 10 DisplayBlocks  for FpGModuleGF              o             3 4 11 Example  Accessing data about a FpGModuleGF                   3 5 Generator and vector space functions           o    e    e    eee  3 5 1 ModuleGenerat  rs    oc lloro daa dd a kes  3 5 2 ModuleGeneratorsAreMinimal               000 eee        3 5 3 ModuleGeneratorsAreEchelonForm              0 0000  eee  3 5 4 ModuleIsFullCanonical                       cns  3 5 5 ModuleGeneratorsForm             0 000  eee ee ee eee  330 ModulgBunk 21 ss a Gh ek ee ee a S UR es ee S  3 5 7 ModuleVectorSpaceBasis               0 002 eee ee eee  3 5 8 Module VectorS 
67. pGModuleGF  G  2    Full canonical module FG 2 over the group ring of   pc group of size 64 with  6 generators   in characteristic 2    gap   M    DirectSumOfModules FG2  FG    Full canonical module FG 3 over the group ring of   pc group of size 64 with  6 generators   in characteristic 2    gap   DirectDecompositionOfModule  M      Module over the group ring of   pc group of size 64 with   6 generators   in characteristic 2 with 1 generator in FG     Generators are in minimal echelon form     Module over the group ring of   pc group of size 64 with  6 generators   in characteristic 2 with 1 generator in FG     Generators are in minimal echelon form     Module over the group ring of   pc group of size 64 with  6 generators   in characteristic 2 with 1 generator in FG   Generators are in minimal echelon form                    Bt ore toe                                                 We can also compute the sum and intersection of FG modules  In the example below we construct  two submodules of FG  where G is the dihedral group of order four  M is the submodule generated by  81  82  and N is the submodule generated by g1   g2  83  84  We calculate their sum and intersection     Since N is in this case a submodule of M it is easy to check that the correct results are obtained   Example          gap gt  G    DihedralGroup  4       gap gt  M    FpGModuleGF   1 1 0 0   One GF 2    G     Module over the group ring of   pc group of size 4 with   2 generators   in characteristic 2 w
68. paceDimension      2 26  bc ee ee ee mz  3 5 9 MinimalGeneratorsModule       0 0 00  a  3 5 10 RadicalOtModule     sa a ee ee ees  3 5 11 Example  Generators and basis vectors ofa FpGModuleGF             3 6 Block echelon functions 2     4 2640004 44 04 84 RR be Re a RR A  3 6 1 EchelonModuleGenerators              eee ee ee  3 6 2 ReverseEchelonModuleGenerators         o    e    e          3 6 3 Example  Converting a FpGModuleGF to block echelon form            3 7 Siti and intersection functions     aaa sasaa o a oy o ER AA  3 7 1 Duareet5umOfModules o aaa s e mmm  3 7 2 DirectDecomposiionOfModule             leen  3 7 3 IntersectionModules            2e  37 4 SumMoedules      ce a a a cae o a Romy Rs  3 7 5 Example  Sum and intersection of FpGModuleGFs                 3 8 Miscellaneous functions       2l less  381 e  orbpOModUeDP  o c orac e e eea OE ORC RR X  Rc ok rg i  3 8 2   TeMladuleBletieht   uus sse a a hoi oom ey Res  38 3 DISubMod  le uo uou aede se doen RA DO xn Fee o Re dose  4 5 4 EandomEleme  t puma oom oem meme Reno x eoe aD  3 8 5  Random Submodule sas cuales E Eme REA e ww  FG module homomorphisms  4 1 The FpGModuleHomomorphismGF datatype         o    o    a  4 2 Calculating the kernel of a FG module homorphism by splitting into two homomor   PREIS   lt a a a de deg a Ge A AS  4 3 Calculating the kernel of a FG module homorphism by column reduction and parti   HOME coloca ca ra a a A  4 4 Construction functions            e       4 4 4 FpGModuleHomomorphis
69. re  gens  C       LL dy Oy O Do  Dad  0  04 QO Ja 00  Li L5 05 0 Jp  Oris 0  0      0 0 0  1 0    0 0 0  0  1      gap   HAPPRIME IndependentGeneratingRows  blocks       1 2  3  4    5    L6                6 1 12 HAPPRIME GactFGvector    O HAPPRIME_GactFGvector g  v  MT   operation   Returns  Vector  Returns the vector that is the result of the action u   gv of the group element y on a module vector  v  according to the group multiplication table MT  This operation is the quickest current method for a  single vector  To perform the same action on a set of vectors  it is faster write the vectors as columns  of a matrix and use HAPPRIME GActMatrixColumns  6 1 3  instead              6 1 13 HAPPRIME CoefficientsOfGeneratingRowsXX   O HAPPRIME CoefficientsOfGeneratingRows gens  GA  v   operation   O HAPPRIME CoefficientsOfGeneratingRows gens  GA  coll   operation   O HAPPRIME CoefficientsOfGeneratingRowsDestructive gens  GA  v   operation   O HAPPRIME CoefficientsOfGeneratingRowsDestructive gens  GA  coll   operation   O HAPPRIME CoefficientsOfGeneratingRowsGF gens  GA  v   operation      HAPPRIME CoefficientsOfGeneratingRowsGF gens  GA  coll   operation      HAPPRIME CoefficientsOfGeneratingRowsGFDestructive gens  GA  v   operation   O HAPPRIME CoefficientsOfGeneratingRowsGFDestructive gens  GA  coll   operation   O HAPPRIME CoefficientsOfGeneratingRowsGFDestructive2 gens  GA  v   operation   O HAPPRIME CoefficientsOfGeneratingRowsGFDestructive2 gens  GA  coll   operation       
70. rint  and Display  Reference  Display  are also available      4 5 5 DisplayModuleHomomorphismGeneratorMatrix    O DisplayModuleHomomorphismGeneratorMatrix  phi   method   Returns  nothing  Prints a detailed description of the module homomorphism generating vectors gens in human   readable form  This is the display method used in the Display  Reference  Display  method for this  datatype     4 5 6 DisplayModuleHomomorphismGeneratorMatrixBlocks       DisplayModuleHomomorphismGeneratorMatrixBlocks  phi   method   Returns  nothing  Prints a detailed description of the module homomorphism generating vectors gens in human   readable form  This is the function used in the DisplayBlocks  4 5 4  method     HAPprime 39    4 5 7 Example  Accessing data about a FpGModuleHomomorphismGF    A free FG resolution is a chain complex of FG modules and homomorphisms  and the homomor   phisms in a HAPResolution  see Chapter 2  can be extracted as a FpGModuleHomomorphismGF  using the function BoundaryFpGModuleHomomorphismGF  2 4 6   We construct a resolution R and  then examine the third resolution in the chain complex  which is a FG module homomorphism  d     FG   gt   FG     Example  gap   R    ResolutionPrimePowerGroupRadical  SmallGroup  64  141   3       1 Dimension 2  rank 5    I Dimension 3  rank 7   gap gt  d3    BoundaryFpGModuleHomomorphismGF  R  3      gap gt  SourceModule  d3     Full canonical module FG 7 over the group ring of   pc group of size 64 with  6 generators gt  in characte
71. ristic 2          gap   TargetModule  d3    Full canonical module FG 5 over the group ring of   pc group of size 64 with  6 generators   in characteristic 2    gap   ModuleHomomorphismGeneratorMatrix  d3      an immutable 7x320 matrix over GF2    gap   DisplayBlocks  d3    Module homomorphism with source   Full canonical module FG 7 over the group ring of Group     f1    2    3    4    5    6     in characteristic 2    and target   Full canonical module FG 5 over the group ring of Group     fl  f2    3    4  f5    6       in characteristic 2    and generator matrix   xk           CEN S                         Note that the module homomorphism generating vectors in a resolution calculated using HAP   prime are in block echelon form  see Section 3 2   This makes it efficient to compute the kernel of  this homomorphism using KernelOfModuleHomomorphismSplit  4 6 3   as described in Section 4 2   since there is only a small intersection between the images generated by the top and bottom halves of  the generating vectors     HAPprime 40    4 6 Image and kernel functions    4 6 1 ImageOfModuleHomomorphism       Image0fModuleHomomorphi sm     ImageOfModuleHomomorphism    ph a   operation         phi  M   operation                                         O ImageOfModuleHomomorphism phi  elm   operation      ImageOfModuleHomomorphism phi  coll   operation      ImageOfModuleHomomorphismDestructive phi  elm   operation   O ImageOfModuleHomomorphismDestructive phi  coll   operation       
72. s generators are expanded into a full vector space basis and the kernel of that vector  space homomorphism is found  The generators of the returned module are in fact a vector space  basis for the kernel module     e The Split version divides the homomorphism into two  using the first half and the second half  of the generating vectors   and uses the preimage of the intersection of the images of the two  halves to calculate the kernel  see Section 4 2   If the generating vectors for phi are in block  echelon form  see Section 3 2   then this approach provides a considerable memory saving over  the standard approach     e The IndependentSplit version splits the generating vectors into sets that generate vector  spaces which have no intersection  and calculates the kernel as the sum of the kernels of those  independent rows  If the generating vectors can be decomposed in this manner  i e  the the  generator matrix is in a diagonal form   this will provide a very large memory saving over the  standard approach     e The GF version performs column reduction and partitioning of the generator matrix to enable  a recursive approach to computing the kernel  see Section 4 3   The level of partitioning is  governed by the option MaxFGExpansionSize  which defaults to 10   allowing about 128Mb  of memory to be used for standard linear algebra before partitioning starts  See  Reference   Options Stack  for details of using options in GAP       None of these basis versions of the functions
73. s in the middle block kept  The  third generator can be ignored  Finally  the intersection of Uf and V  can found using  for example   SumIntersectionMatDestructive  HAPprime Datatypes  SumIntersectionMatDestructive     This algorithm  implemented in the function IntersectionModulesGF  3 7 3   will  for modules  whose generators have zero columns  use less memory than a full vector space expansion  and in the  case where U and V have no intersection  may need to perform no expansion at all  In the worst  case  both U and V will need a full expansion  using no more memory than the naive implementation   Since any full expansion is done row by row  with echelon reduction each time  it will in general still  require less memory  but will be slower      3 3 Construction functions    3 3 1 FpGModuleGF construction functions                FpGModuleGF  gens  G   action  actionBlockSize    operation      FpGModuleGF  gens  groupAndAction   operation      FpGModuleGF  ambientDimension  G   action  actionBlockSize    operation      FpGModuleGF  ambientDimension  groupAndAction   operation      FpGModuleGF G  n   operation      FpGModuleGF  groupAndAction  n   operation      FpGModuleGF  HAPmod   operation   O FpGModuleGFNC  gens  G  form  action  actionBlockSize   operation      FpGModuleGFNC  ambientDimension  G  action  actionBlockSize   operation      FpGModuleGFNC  gens  groupAndAction   form    operation     Returns  FpGModuleGF   Creates and returns a FpGModuleGF module object  
74. s is needed in the case when the list of generating vectors is  empty     e form  a string detailing whether the generators are known to be minimal or not  and if so  in which format  It can be one of  unknown    fullcanonical    minimal    echelon   or  semiechelon   Some algorithms require a particular form  and algorithms such as  EchelonModuleGenerators  3 6 1  that manipulate a module s generators to create these  forms set this entry     3 2 Implementation details  Block echelon form    3 2 1 Generating vectors and their block structure    Consider the vector representation of an element in the FG module  FG   where G is a group of  order four   v      FG      g1  83 g1  82  84     1010 1101     The first block of four entries in the vector correspond to the first FG summand and the second block  to the second summand  and the group elements are numbered in the order provided by the GAP  function Elements  Reference  Elements      Given a G generating set for a FG module  the usual group action permutes the group elements   and thus the effect on the vector is to permute the equivalent vector elements  Each summand is inde   pendent  and so elements are permuted within the blocks  normally of size  G   seen in the example  above  A consequence of this is that if any block  i e  summand  in a generator is entirely zero  then  it remains zero under group  or F  multiplication and so that generator contributes nothing to that part  of the vector space  This fact enables so
75. sions when the user might already have the semi echelon versions available  in which case a  small amount of time will be saved              43    HAPprime 44    5 1 2 SolutionMat  for multiple vectors     O SolutionMat M  V   operation      SolutionMatDestructive M  V   operation     Calculates  for each row vector v  in the matrix V  a solution to x  x M   vj  and returns these  solutions in a matrix X  whose rows are the vectors x   If there is not a solution for a v   then fail is  returned for that row    These functions are identical to the kernel functions SolutionMat  Reference  SolutionMat   and SolutionMatDestructive  Reference  SolutionMatDestructive   but are provided for cases  where multiple solutions using the same matrix M are required  In these cases  using this function is  far faster  since the matrix is only decomposed once    The Destructive version corrupts both the input matrices  while the non Destructive version  operates on copies of these     5 1 3 IsSameSubspace    O IsSameSubspace  U  V   operation     Returns true if the subspaces spanned by the rows of U and V are the same  false otherwise   This function treats the rows of the two matrices as vectors from the same vector space  with the  same basis   and tests whether the subspace spanned by the two sets of vectors is the same     5 1 4 PrintDimensionsMat   O PrintDimensionsMat  M   operation   Returns a string containing the dimensions of the matrix M in the form  mxn   where m is the   number
76. specifying the number of copies of M to sum  See Section  3 7 5 below for an example of usage    If the input modules all have minimal generators and or echelon form  the construction of the  direct sum guarantees that the output module will share the same form     3 7 20 DirectDecompositionOfModule    O DirectDecompositionOfModule  M   operation   O DirectDecompositionOfModuleDestructive  M   operation    Returns  List of FpGModuleGFs   Returns a list of FpGModuleGFs whose direct sum is equal to the input FpGModuleGF module M   The list may consist of one element  the original module    This function relies on the block structure of a set of generators that have been con   verted to both echelon and reverse echelon form  see EchelonModuleGenerators  3 6 1  and  ReverseEchelonModuleGenerators  3 6 2    and calls these functions if the module is not already  in echelon form  In this form  it can be possible to trivially identify direct summands  There is no  guarantee either that this function will return a decomposition if one is available  or that the modules       HAPprime 31    returned in a decomposition are themselves indecomposable  See Section 3 7 5 below for an example  of usage    The Destructive version of this function uses the Destructive versions of the echelon func   tions  and so modifies the input module and returns modules who share generating rows with the  modified M  The non Destructive version operates on a copy of M  and returns modules with unique  rows
77. standard matrix operations  and two small helper functions     5 1 1 SumIntersectionMatDestructive    O SumIntersectionMatDestructive U  V   operation      SumIntersectionMatDestructiveSE  Ubasis  Uheads  Vbasis  Vheads   operation     Returns a list of length 2 with  at the first position  the sum of the vector spaces generated by the  rows of U and V  and  at the second position  the intersection of the spaces    Like the GAP core function SumIntersectionMat  Reference  SumIntersectionMat   this per   forms Zassenhaus    algorithm to compute bases for the sum and the intersection  However  this version  operates directly on the input matrices  thus corrupting them   and is rewritten to require only approx   imately 1 5 times the space of the original input matrices  By contrast  the original GAP version uses  three times the memory of the original matrices to perform the calculation  and since it doesn   t modify  the input matrices will require a total of four times the space of the original matrices    The function SumIntersectionMatDestructiveSE takes as arguments not a pair of generating  matrices  but a pair of semi echelon basis matrices and the corresponding head locations  such as  is returned by a call to SemiEchelonMatDestructive  Reference  SemiEchelonMatDestructive    these arguments must all be mutable  so SemiEchelonMat  Reference  SemiEchelonMat  cannot  be used   This function is used internally by SumIntersectionMatDestructive  and is provided for  the occa
78. t    lt a  2 vector of length 24 gt    lt a  2 vector of length 24 gt    lt a  2 vector of length 24 gt    lt a       DO    vector of length 24 gt    vector of length 24 gt    vector of length 24 gt    vector of length 24 gt    vector of length 24 gt    vector of length 24 gt    vector of length 24 gt      T 1   N N    xj  N    2202000     i  So   No No    xj  N       2 vector of length 24 gt       ModuleVectorSpaceDimension  N         MinimalGeneratorsModuleRadical  M         RadicalOfModule  M        N     27          3 6 Block echelon functions    3 6 1 EchelonModuleGenerators    O Ech  O Ech     Sen     Sen     Ech     Ech          Sem    elon  elon  iEch  iEch  elon  elon  iEch       ModuleGenerators     M     ModuleGeneratorsDestructive  M     elonModuleGenera  elonModuleGenera    tors  M   torsDestructive  M     ModuleGeneratorsMinMem  M   ModuleGeneratorsMinMemDestructive  M        elonModuleGenera       torsMinMem  M      operation    operation    operation    operation    operation    operation      operation     HAPprime 28       SemiEchelonModuleGeneratorsMinMemDestructive  M   operation   Returns  Record  module  headblocks   Returns a record with two components     e module A module whose generators span the same vector space as that of the input module M   but whose generators are in a block echelon  or semi echelon  form    e headblocks A list giving  for each generating vector in M  the block in which the head for that  generating row lies    In block echelon
79. the two modules to find the  vector space Up and Vg of the two modules and calculate the intersection as a standard vector space  intersection  However  in this case  since U has no elements in the last block  and V has no elements  in the first block  the intersection must only have elements in the middle block  This means that the  first generator of U and the last generator of V can not be in the intersection and can be ignored for  the purposes of the intersection calculation  In general  rather than expanding the entirety of U and V  into an F basis to calculate their intersection  one can expand U and V more intelligently into F bases  Up and Ve which are smaller than Ug and Vg but have the same intersection    Having determined  by comparing the block structure of U and V  that only the middle block in  our example contributes to the intersection  we only need to expand out the rows of U and V that  have heads in that block  The first generator of U generates no elements in the middle block  and  trivially be ignored  The second row of U may or may not contribute to the intersection  this will need  expanding out and echelon reduced  The expanded rows that don   t have heads in the central block can  then be discarded  with the other rows forming part of the basis of Up  Likewise  the third generator  of U is expanded and echelon reduced to give the rest of the basis for Up  To find Vj  the first two  generators are expanded  semi echelon reduced and the rows with head
80. tion    Returns  Boolean   The Singular package can be succesfully loaded whether the singular executable is present or  not  so this function attempts to check for the presence of this executable by searching on the system  path and checking for global variables set by the Singular    Whether this function returns true or false will not affect the rest of this package  it only affects  which tests are run by the happrime txt and testall g test routines     6 4 2 HAPPRIME Random2Group       HAPPRIME_Random2Group    orderG    operation      HAPPRIME_Random2GroupAndAction    orderG    operation   Returns  Group or groupAndAct ion record       HAPprime 55    Returns a random 2 group  or a groupAndAction record  see ModuleGroupAndAction  3 4 5    with the canonical action  The order may be specified as an argument  or 1f not then a group is chosen  randomly  from a uniform distribution  over all of the possible groups with order from 2 to 128     Example          gap gt  HAPPRIME Random2Group       lt pc group of size 8 with 3 generators    gap   HAPPRIME Random2Group       lt pc group of size 32 with 5 generators               6 4 5 HAPPRIME TestResolutionPrimePowerGroup          HAPPRIME TestResolutionPrimePowerGroup  ntests    operation    Returns  Boolean   Returns true if ResolutionPrimePowerGroupGF  HAPprime   ResolutionPrimePower   GroupGF  for group   and ResolutionPrimePowerGroupRadical  HAPprime  Resolution   PrimePowerGroupRadical  for group   appear to be working corr
81. tion   Returns  nothing  Used by Printobj  Reference  PrintObj  ViewObj  Reference  ViewObj   Display   Reference  Display  and DisplayBlocks  3 4 10   this helper function prints a description of  the module M  The parameter func can be one of the strings  print    view    display  or   displayblocks   corresponding to the print different functions that might be called     6 2 3 HAPPRIME ModuleGeneratorCoefficients                      HAPPRIME ModuleGeneratorCoefficients M  elm   operation      HAPPRIME ModuleGeneratorCoefficientsDestructive M  elm   operation      HAPPRIME ModuleGeneratorCoefficients M  coll   operation      HAPPRIME ModuleGeneratorCoefficientsDestructive M  coll   operation     Returns  Vector   Returns the coefficients needed to make the module element e 1m as a linear and G combination of  the module generators of the FpGModuleGF M  The coefficients are returned in standard vector form   or if there is no solution then fail is returned  If a list of elements is given  then a list of coefficients   or fails  is returned  The Destructive form of this function might change the elements of of M or  elm  The non Destruct ive version makes copies to ensure that they are not changed    See also HAPPRIME ModuleElementFromGeneratorCoefficients  6 2 4            6 2 4 HAPPRIME ModuleElementFromGeneratorCoefficients       HAPPRIME ModuleElementFromGeneratorCoefficients M  c   operation      HAPPRIME ModuleElementFromGeneratorCoefficients M  coll   operation    Ret
82. tor is  completely reduced to zero  or false otherwise        6 1 7 HAPPRIME ReduceGeneratorsOfModuleByXX                   HAPPRIME ReduceGeneratorsOfModuleBySemiEchelon gens  GA   operation      HAPPRIME ReduceGeneratorsOfModuleBySemiEchelonDestructive gens  GA   operation      HAPPRIME ReduceGeneratorsOfModuleByLeavingOneOut gens  GA   operation   O HAPPRIME ReduceGeneratorsOnRightByLeavingOneOut gens  GA   operation     Returns  List of vectors   Returns a subset of the module generators gens over the group with action specified in the GA  record  see ModuleGroupAndAction  3 4 5   that will still generate the module    The BySemiEchelon functions gradually expand out the module generators into an F basis  using  that F basis to reduce the other generators  until the full vector space of the module is spanned  The  generators needed to span the space are returned  and should be a small set  although not minimal   The Destructive version of this function will modify the input gens parameter  The non destructive  version makes a copy first  so leaves the input arguments unchanged  at the expense of more memory    The ByLeavingOneOut function is tries repeatedly leaving out generators from the list gens to  find a small subset that still generates the module  If the generators are from the field GF 2   this is  guaranteed to be a minimal set of generators  The OnRight version computes a minimal subset which  generates the module under group multiplication on the right        
83. urns  Vector   Returns an element from the module M  constructed as a linear and G sum of the module genera   tors as specified in c  If a list of coefficient vectors is given  a list of corresponding module elements  is returned    See also HAPPRIME ModuleGeneratorCoefficients  6 2 3                 6 2 5 HAPPRIME MinimalGeneratorsVectorSpaceGeneratingRowsDestructive    O    HAPPRIME MinimalGeneratorsVectorSpaceGeneratingRowsDestructive vgens  GA    operation     O HAPPRIME MinimalGeneratorsVectorSpaceGeneratingRowsOnRightDestructive vgens        HAPprime 53    GA   operation    Returns  FpGModuleGF   Returns a module with minimal generators that is equal to the FG module with vector space basis  vgens and ModuleGroupAndAction  3 4 5  as specified in GA  The solution is computed by the  module radical method  which is fast at the expense of memory  This function will corrupt the matrix  gens    This is a helper function for MinimalGeneratorsModuleRadical  3 5 9  that is also used  by ExtendResolutionPrimePowerGroupRadical  HAPprime  ExtendResolutionPrimePower   GroupRadical   which knows that its module is already in vector space form      6 2 6 HAPPRIME IsGroupAndAction       HAPPRIME_IsGroupAndAction  obj   operation   Returns  Boolean  Returns true if obj appears to be a groupAndAction record  see ModuleGroupAndAction   3 4 5    or false otherwise     6 3 Resolutions    For details of the main resolution functions in HAPprime  see Chapter 2 of this datatypes reference  ma
84. ve version operates on copies of them  leaving the original  modules unmodified  The generating vectors in the module returned by this function are in fact also a  vector space basis for the module  so will not be minimal  The returned module can be converted to a  set of minimal generators using one of the MinimalGeneratorsModule functions  3 5 9     This operation is currently only defined for GF 2         3 7 4 SumModules       SumModules M  N   operation    Returns  FpGModuleGF   Returns the FpGModuleGF module that is the sum of the input modules M and N  This function  simply concatenates the generating vectors of the two modules and returns the result  If a set of  minimal generators are needed then use one of the MinimalGeneratorsModule functions  3 5 9  on  the result  See Section 3 7 5 below for an example of usage    The vector spaces in FpGModuleGF are assumed to all be with respect to the same canonical basis   so it is assumed that modules are compatible if they have the same group and the same ambient  dimension     HAPprime 32    3 7 5 Example  Sum and intersection of FpGModuleGFs    We can construct the direct sum of FG modules  and  attempt to  calculate a direct decomposition of  a module  For example  we can show that     FG 6 FG   FG FGOFG    Example          gap   G    CyclicGroup  64       gap   FG    FpGModuleGF G  1     Full canonical module FG 1 over the group ring of   pc group of size 64 with  6 generators gt  in characteristic 2    gap gt  FG2    F
85. ver the field F  In this package we only consider the case  where G is a finite p groups and F   F  is the field of p elements  In addition  we only consider free  FG modules     3 1 The FpGModuleGF datatype    Modules and submodules of free FG modules are represented in HAPprime using the FpGModuleGF  datatype  where the    GF    stands for    Generator Form     This defines a module using a group G and a set  of G generating vectors for the module   s vector space  together with a group action which operates  on those vectors  A free FG module FG can be considered as a vector space FIC  whose basis is  the elements of G  An element of  IFG   is the direct sum of n copies of FG and  as an element of  FpGModuleGF  is represented as a vector of length n G  with coefficients in IF  Representing our FG   module elements as vectors is ideal for our purposes since GAP s representation and manipulation of  vectors and matrices over small prime fields is very efficient in both memory and computation time    The HAP package defines a FpGModule object  which is similar but stores a vector space basis  rather than a G generating set for the module s vector space  Storing a G generating set saves memory   both in passive storage and in allowing more efficient versions of some computation algorithms    There are a number of construction functions for FpGModuleGFs  see 3 3 1 for details  A FG   module is defined by the following     e gens  a list of G generating vectors for the underlyin
86. without necessarily expanding the whole matrix    This basic algorithm is implemented in the HAPprime function  KernelOfModuleHomomorphismSplit  4 6 3   The generating vectors for a module homo   morphism H are divided in half  with the homomorphism generated by the first half of the generating  vectors being called U and that by the second half being called V  Given this partition the kernel of  H can be defined as   ker H    preimy  1  N    preimy  I      where    35    HAPprime 36    e    im U Nim V  is the intersection of the images of the two homomorphisms U and V  e preimy  1  the set of all preimages of J under U  e preimy  I  the set of all preimages of J under V    Rather than computing the complete set of preimages  instead the implementation takes a preimage  representative of each generator for   and adds the kernel of the homomorphisms U and V  The means  that instead of calculating the null space of the full expanded matrix  we can compute the answer by  calculating the kernels of two homomorphisms with fewer generators  as well as the intersection of  two modules  and some preimage representatives  Each of these operations takes less memory than the  naive null space calculation  The intersection of two FG modules can be compactly calculated using  the generators    block structure  see Section 3 2 4   while the kernels of U and V can be computed  recursively using these same algorithm  The block structure can also help in calculating the preimage   but at a co
    
Download Pdf Manuals
 
 
    
Related Search
 HAPprime  hap prime ppo  happiness  happiness company  happimess squamish  happimess.com  happimess amazon  happiness bags  happimess wicker storage trunk  hp prime  hap primacura  hap primary care physicians  hap primaria  hp prime g2 
    
Related Contents
Rangemaster Amethyst  Dell Wyse C90LE  ps568a_userÕs manual BASE  ACL99 Climate Control Tube User Manual  ACUMULADORES ESTÁTICOS para tarifa nocturna NIGHT  02 Introduccion - Repositorio Digital-UPS    Vortex Operation Manual    CAP Cuisine 2014 – Sujet 2    Copyright © All rights reserved. 
   Failed to retrieve file