<!-- 
  HAPPRIME - internal.xml.in
  Function documentation template file for HAPprime
  Paul Smith

  Copyright (C)  2008
  Paul Smith
  National University of Ireland Galway

  $Id: functions.xml.in 200 2008-02-05 14:29:47Z pas $
-->

<!-- ********************************************************** -->
<Chapter  Label="InternalFunctions">
  <Heading>Internal functions</Heading>

  <Section Label="InternalGGenerators">
    <Heading>Matrices as &G;-generators of a &FG;-module vector space</Heading>

    Both <K>FpGModuleGF</K> (Chapter <Ref Chap="FpGModuleGF"/>) and 
    <K>FpGModuleHomomorphismGF</K> 
    (Chapter <Ref Chap="FpGModuleGFHom"/>) store a matrix 
    whose rows are &G;-generators for a module vector space (the module and 
    the homomorphism's image respectively). The internal functions listed here
    provide common operations for dealing with these matrices.

    <#Include Label="HAPPRIME_ValueOptionMaxFGExpansionSize_manGenMatInt">
    <#Include Label="HAPPRIME_KernelOfGeneratingRowsDestructive_manGenMatInt">
    <#Include Label="HAPPRIME_GActMatrixColumns_manGenMatInt">
    <#Include Label="HAPPRIME_ExpandGeneratingRows_manGenMatInt">
    <#Include Label="HAPPRIME_AddGeneratingRowToSemiEchelonBasisDestructive_manGenMatInt">
    <#Include Label="HAPPRIME_ReduceVectorDestructive_manGenMatInt">
    <#Include Label="HAPPRIME_ReduceGeneratorsOfModuleBySemiEchelonDestructive_manGenMatInt">
    <#Include Label="HAPPRIME_DisplayGeneratingRows_manGenMatInt">
    <#Include Label="HAPPRIME_GeneratingRowsBlockStructure_manGenMatInt">
    <#Include Label="HAPPRIME_DisplayGeneratingRowsBlocks_manGenMatInt">
    <#Include Label="HAPPRIME_IndependentGeneratingRows_manGenMatInt">
    <#Include Label="HAPPRIME_GactFGvector_manGenMatInt">
    <#Include Label="HAPPRIME_CoefficientsOfGeneratingRowsDestructive_manGenMatInt">
    <#Include Label="HAPPRIME_GenerateFromGeneratingRowsCoefficients_manGenMatInt">
    <#Include Label="HAPPRIME_RemoveZeroBlocks_manGenMatInt">
    <#Include Label="HAPPRIME_AddZeroBlocks_manGenMatInt">

  </Section>
  
  <Section>
    <Heading>&FG;-modules</Heading>

    &FG;-modules in &HAPprime; use the datatype <K>FpGModuleGF</K> 
    (Chapter <Ref Chap="FpGModuleGF"/>). Internally, this uses many of the 
    functions listed in Section <Ref Sect="InternalGGenerators"/>, and
    further internal functions are listed below.

    <#Include Label="HAPPRIME_DirectSumForm_DTmanFpGModuleInt">
    <#Include Label="HAPPRIME_PrintModuleDescription_DTmanFpGModuleInt">
    <#Include Label="HAPPRIME_ModuleGeneratorCoefficients_DTmanFpGModuleInt">
    <#Include Label="HAPPRIME_ModuleElementFromGeneratorCoefficients_DTmanFpGModuleInt">
    <#Include Label="HAPPRIME_MinimalGeneratorsVectorSpaceGeneratingRowsDestructive_DTmanFpGModuleInt">
    <#Include Label="HAPPRIME_IsGroupAndAction_DTmanFpGModuleInt">

  </Section>
  
  <Section>
    <Heading>Resolutions</Heading>

    For details of the main resolution functions in &HAPprime;, see Chapter
    <Ref Chap="Resolution"/> of this datatypes reference manual, and 
    <Ref Sect="Resolutions" BookName="HAPprime"/> in the &HAPprime; user guide.
    This section describes the internal helper functions used by the 
    higher-level functions.

    <#Include Label="HAPPRIME_WordToVector_DTmanResolutionInt">
    <#Include Label="HAPPRIME_VectorToWord_DTmanResolutionInt">
    <#Include Label="HAPPRIME_BoundaryMatrices_DTmanResolutionInt">
    <#Include Label="HAPPRIME_AddNextResolutionBoundaryMapMatNC_DTmanResolutionInt">
    <#Include Label="HAPPRIME_CreateResolutionWithBoundaryMapMatsNC_DTmanResolutionInt">

  </Section>
  
  <Section>
    <Heading>Test functions</Heading>

    Internal helper functions for testing &HAPprime;.

    <#Include Label="HAPPRIME_SingularIsAvailable_manTestInt">
    <#Include Label="HAPPRIME_Random2Group_manTestInt">
    <#Include Label="HAPPRIME_TestResolutionPrimePowerGroup_manTestInt">

  </Section>
  
</Chapter>

