GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
% generated by GAPDoc2LaTeX from XML source (Frank Luebeck)1\documentclass[a4paper,11pt]{report}2\usepackage{a4wide}3\sloppy4\pagestyle{myheadings}5\usepackage{amssymb}6\usepackage[latin1]{inputenc}7\usepackage{makeidx}8\makeindex9\usepackage{color}10\definecolor{DarkOlive}{rgb}{0.1047,0.2412,0.0064}11\definecolor{FireBrick}{rgb}{0.5812,0.0074,0.0083}12\definecolor{RoyalBlue}{rgb}{0.0236,0.0894,0.6179}13\definecolor{RoyalGreen}{rgb}{0.0236,0.6179,0.0894}14\definecolor{RoyalRed}{rgb}{0.6179,0.0236,0.0894}15\definecolor{LightBlue}{rgb}{0.8544,0.9511,1.0000}16\definecolor{Black}{rgb}{0.0,0.0,0.0}17\definecolor{FuncColor}{rgb}{1.0,0.0,0.0}18%% strange name because of pdflatex bug:19\definecolor{Chapter }{rgb}{0.0,0.0,1.0}2021\usepackage{fancyvrb}2223\usepackage{pslatex}2425\usepackage[pdftex=true,26a4paper=true,bookmarks=false,pdftitle={Written with GAPDoc},27pdfcreator={LaTeX with hyperref package / GAPDoc},28colorlinks=true,backref=page,breaklinks=true,linkcolor=RoyalBlue,29citecolor=RoyalGreen,filecolor=RoyalRed,30urlcolor=RoyalRed,pagecolor=RoyalBlue]{hyperref}3132% write page numbers to a .pnr log file for online help33\newwrite\pagenrlog34\immediate\openout\pagenrlog =\jobname.pnr35\immediate\write\pagenrlog{PAGENRS := [}36\newcommand{\logpage}[1]{\protect\write\pagenrlog{#1, \thepage,}}37%% were never documented, give conflicts with some additional packages383940\newcommand{\GAP}{\textsf{GAP}}4142\begin{document}4344\logpage{[ 0, 0, 0 ]}45\begin{titlepage}46\begin{center}{\Huge \textbf{\textsf{Hap Programming} {\textendash} An experimental framework for objectifying the data structures47of Hap\mbox{}}}\\[1cm]48\hypersetup{pdftitle=\textsf{Hap Programming} {\textendash} An experimental framework for objectifying the data structures49of Hap}50\markright{\scriptsize \mbox{}\hfill \textsf{Hap Programming} {\textendash} An experimental framework for objectifying the data structures51of Hap \hfill\mbox{}}52{( development version of 27.10.2013 ) \mbox{}}\\[1cm]53\mbox{}\\[2cm]54{\large \textbf{Marc R{\"o}der \mbox{}}}\\55\hypersetup{pdfauthor=Marc R{\"o}der }56\end{center}\vfill5758\mbox{}\\59{\mbox{}\\60\small \noindent \textbf{Marc R{\"o}der } --- Email: \href{mailto://marc.roeder(at)nuigalway.ie} {\texttt{marc.roeder(at)nuigalway.ie}}}\\6162\noindent \textbf{Address: }\begin{minipage}[t]{8cm}\noindent63Marc R{\"o}der, Department of Mathematics, NUI Galway, Irleland \end{minipage}64\end{titlepage}6566\newpage\setcounter{page}{2}67{\small68\section*{Abstract}69\logpage{[ 0, 0, 1 ]}70This extension does not change the behaviour of Hap and is fully71backwards-compatible. It is not a part of Hap and there is no guarantee that72it will at any point be supported by Hap. Use at your own risk. \mbox{}}\\[1cm]73{\small74\section*{Copyright}75\logpage{[ 0, 0, 3 ]}76{\copyright} 2007 Marc R{\"o}der.7778This package is distributed under the terms of the GNU General Public License79version 2 or later (at your convenience). See the file \texttt{LICENSE.txt} or \href{http://www.gnu.org/copyleft/gpl.html} {\texttt{http://www.gnu.org/copyleft/gpl.html}} \mbox{}}\\[1cm]80{\small81\section*{Acknowledgements}82\logpage{[ 0, 0, 2 ]}83This work was supported by Marie Curie Grant No. MTKD-CT-2006-042685 \mbox{}}\\[1cm]84\newpage8586\def\contentsname{Contents\logpage{[ 0, 0, 4 ]}}8788\tableofcontents89\newpage909192\chapter{\textcolor{Chapter }{Resolutions in Hap}}\label{hapresolution}93\logpage{[ 1, 0, 0 ]}94\hyperdef{L}{X7C6DD73E7BB931AB}{}95{96This document is only concerned with the representation of resolutions in Hap.97Note that it is not a part of Hap. The framework provided here is just an98extension of Hap data types used in HAPcryst and HAPprime.99100From now on, let $G$ be a group and $\dots \to M_n\to M_{n-1}\to\dots\to M_1\to M_0\to Z$ be a resolution with free $ZG$ modules $M_i$.101102The elements of the modules $M_i$ can be represented in different ways. This is what makes different103representations for resolutions desirable. First, we will look at the standard104representation (\texttt{HapResolutionRep}) as it is defined in Hap. After that, we will present another representation105for infinite groups. Note that all non-standard representations must be106sub-representations of the standard representation to ensure compatibility107with Hap.108\section{\textcolor{Chapter }{The Standard Representation \texttt{HapResolutionRep}}}\label{hapresolutionrep}109\logpage{[ 1, 1, 0 ]}110\hyperdef{L}{X804F611B7E23BDB1}{}111{112For every $M_i$ we fix a basis and number its elements. Furthermore, it is assumed that we113have a (partial) enumeration of the group of a resolution. In practice this is114done by generating a lookup table on the fly.115116In standard representation, the elements of the modules $M_k$ are represented by lists -"words"- of pairs of integers. A letter \texttt{[i,g]} of such a word consists of the number of a basis element \texttt{i} or \texttt{-i} for its additive inverse and a number $g$ representing a group element.117118A \texttt{HapResolution} in \texttt{HapResolutionRep} representation is a component object with the components119\begin{itemize}120\item \texttt{group}, a group of arbitrary type.121\item \texttt{elts}, a (partial) list of (possibly duplicate) elements in G. This list provides122the "enumeration" of the group. Note that there are functions in Hap which123assume that \texttt{elts[1]} is the identity element of G.124\item \texttt{appendToElts(g)} a function that appends the group element \texttt{g} to \texttt{.elts}. This is not documented in Hap 1.8.6 but seems to be required for infinite125groups. This requirement might vanish in some later version of Hap [G. Ellis,126private communication].127\item \texttt{dimension(k)}, a function which returns the ZG-rank of the Module $M_k$128\item \texttt{boundary(k,j)}, a function which returns the image in $M_{k-1}$ of the $j$th free generator of $M_k$. Note that negative $j$ are valid as input as well. In this case the additive inverse of the boundary129of the $j$th generator is returned130\item \texttt{homotopy(k,[i,g])} a function which returns the image in $M_{k+1}$, under a contracting homotopy $M_k \to M_{k+1}$, of the element \texttt{[[i,g]]} in $M_k$. The value of this might be \texttt{fail}. However, currently (version 1.8.4) some Hap functions assume that \texttt{homotopy} is a function without testing.131\item \texttt{properties}, a list of pairs \texttt{["name","value"]} "name" is a string and value is anything (boolean, number, string...). Every \texttt{HapResolution} (regardless of representation) has to have \texttt{["type","resolution"]}, \texttt{["length",length]} where \texttt{length} is the length of the resolution and \texttt{["characteristic",char]}. Currently (Hap 1.8.6), \texttt{length} must not be \texttt{infinity}. The values of these properties can be tested using the Hap function \texttt{EvaluateProperty(resolution,propertyname)}.132\end{itemize}133Note that making \texttt{HapResolution}s immutable will make the \texttt{.elts} component immutable. As this lookup table might change during calculations, we134do not recommend using immutable resolutions (in any representation). }135136137\section{\textcolor{Chapter }{The \texttt{HapLargeGroupResolutionRep} Representation}}\label{largegrouprep}138\logpage{[ 1, 2, 0 ]}139\hyperdef{L}{X8024014D8488FE30}{}140{141In this sub-representation of the standard representation, the module elements142in this resolution are lists of groupring elements. So the lookup table \texttt{.elts} is not used as long as no conversion to standard representation takes place.143In addition to the components of a \texttt{HapResolution}, a resolution in large group representation has the following components:144\begin{itemize}145\item \texttt{boundary2(resolution,term,gen)}, a function that returns the boundary of the \mbox{\texttt{\slshape gen}}th generator of the \mbox{\texttt{\slshape term}}th module.146\item \texttt{groupring} the group ring of the resolution \mbox{\texttt{\slshape resolution}}.147\item \texttt{dimension2(resolution,term)} a function that returns the dimension of the \mbox{\texttt{\slshape term}}th module of the resolution \mbox{\texttt{\slshape resolution}}.148\end{itemize}149The effort of having two versions of \texttt{boundary} and \texttt{dimension} is necessary to keep the structure compatible with the usual Hap resolution. }150151}152153154\chapter{\textcolor{Chapter }{Accessing and Manipulating Resolutions}}\logpage{[ 2, 0, 0 ]}155\hyperdef{L}{X86374CEA7CDC6946}{}156{157158\section{\textcolor{Chapter }{Representation-Independent Access Methods}}\logpage{[ 2, 1, 0 ]}159\hyperdef{L}{X7A7225067E7895A9}{}160{161All methods listed below take a \texttt{HapResolution} in any representation. If the other arguments are compatible with the162representation of the resolution, the returned value will be in the form163defined by this representation. If the other arguments are in a different164representation, \textsf{GAP}s method selection is used via \texttt{TryNextMethod()} to find an applicable method (a suitable representation).165166The idea behind this is that the results of computations have the same form as167the input. And as all representations are sub-representations of the \texttt{HapResolutionRep} representation, input which is compatible with the \texttt{HapResolutionRep} representation is always valid.168169Every new representation must support the functions of this section.170171\subsection{\textcolor{Chapter }{StrongestValidRepresentationForLetter}}172\logpage{[ 2, 1, 1 ]}\nobreak173\hyperdef{L}{X7CBC6D4C783383BE}{}174{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{StrongestValidRepresentationForLetter({\slshape resolution, term, letter})\index{StrongestValidRepresentationForLetter@\texttt{StrongestValidRepresentationForLetter}}175\label{StrongestValidRepresentationForLetter}176}\hfill{\scriptsize (method)}}\\177\textbf{\indent Returns:\ }178filter179180181182Finds the sub-representation of \texttt{HapResolutionRep} for which \mbox{\texttt{\slshape letter}} is a valid letter of the \mbox{\texttt{\slshape term}}th module of \mbox{\texttt{\slshape resolution}}. Note that \mbox{\texttt{\slshape resolution}} automatically is in some sub-representation of \texttt{HapResolutionRep}.This is mainly meant for debugging. }183184185186\subsection{\textcolor{Chapter }{StrongestValidRepresentationForWord}}187\logpage{[ 2, 1, 2 ]}\nobreak188\hyperdef{L}{X7C10841285614D04}{}189{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{StrongestValidRepresentationForWord({\slshape resolution, term, word})\index{StrongestValidRepresentationForWord@\texttt{StrongestValidRepresentationForWord}}190\label{StrongestValidRepresentationForWord}191}\hfill{\scriptsize (method)}}\\192\textbf{\indent Returns:\ }193filter194195196197Finds the sub-representation of \texttt{HapResolutionRep} for which \mbox{\texttt{\slshape word}} is a valid word of the \mbox{\texttt{\slshape term}}th module of \mbox{\texttt{\slshape resolution}}. Note that \mbox{\texttt{\slshape resolution}} automatically is in some sub-representation of \texttt{HapResolutionRep}. This is mainly meant for debugging. }198199200201\subsection{\textcolor{Chapter }{PositionInGroupOfResolution}}202\logpage{[ 2, 1, 3 ]}\nobreak203\hyperdef{L}{X780AD2DB7F5D4935}{}204{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{PositionInGroupOfResolution({\slshape resolution, g})\index{PositionInGroupOfResolution@\texttt{PositionInGroupOfResolution}}205\label{PositionInGroupOfResolution}206}\hfill{\scriptsize (method)}}\\207\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{PositionInGroupOfResolutionNC({\slshape resolution, g})\index{PositionInGroupOfResolutionNC@\texttt{PositionInGroupOfResolutionNC}}208\label{PositionInGroupOfResolutionNC}209}\hfill{\scriptsize (method)}}\\210\textbf{\indent Returns:\ }211positive integer212213214215This returns the position of the group element \mbox{\texttt{\slshape g}} in the enumeration of the group of \mbox{\texttt{\slshape resolution}}. The NC version does not check if \mbox{\texttt{\slshape g}} really is an element of the group of \mbox{\texttt{\slshape resolution}}. }216217218219\subsection{\textcolor{Chapter }{IsValidGroupInt}}220\logpage{[ 2, 1, 4 ]}\nobreak221\hyperdef{L}{X7A58EC7B8130D6E2}{}222{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{IsValidGroupInt({\slshape resolution, n})\index{IsValidGroupInt@\texttt{IsValidGroupInt}}223\label{IsValidGroupInt}224}\hfill{\scriptsize (method)}}\\225\textbf{\indent Returns:\ }226boolean227228229230Returns true if the \mbox{\texttt{\slshape n}}th element of the group of \mbox{\texttt{\slshape resolution}} is known. }231232233234\subsection{\textcolor{Chapter }{GroupElementFromPosition}}235\logpage{[ 2, 1, 5 ]}\nobreak236\hyperdef{L}{X822604B67B2A9133}{}237{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{GroupElementFromPosition({\slshape resolution, n})\index{GroupElementFromPosition@\texttt{GroupElementFromPosition}}238\label{GroupElementFromPosition}239}\hfill{\scriptsize (method)}}\\240\textbf{\indent Returns:\ }241group element or \texttt{fail}242243244245Returns \mbox{\texttt{\slshape n}}th element of the group of \mbox{\texttt{\slshape resolution}}. If the \mbox{\texttt{\slshape n}}th element is not known, \texttt{fail} is returned. }246247248249\subsection{\textcolor{Chapter }{MultiplyGroupElts}}250\logpage{[ 2, 1, 6 ]}\nobreak251\hyperdef{L}{X7D3673E8840FA0B6}{}252{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{MultiplyGroupElts({\slshape resolution, x, y})\index{MultiplyGroupElts@\texttt{MultiplyGroupElts}}253\label{MultiplyGroupElts}254}\hfill{\scriptsize (method)}}\\255\textbf{\indent Returns:\ }256positive integer or group element, depending on the type of \mbox{\texttt{\slshape x}} and \mbox{\texttt{\slshape y}}257258259260If \texttt{x} and \texttt{y} are given in standard representation (i.e. as integers), this returns the261position of the product of the group elements represented by the positive262integers \mbox{\texttt{\slshape x}} and \mbox{\texttt{\slshape x}}.263264If \texttt{x} and \texttt{y} are given in any other representation, the returned group element will also be265represented in this way. }266267268269\subsection{\textcolor{Chapter }{MultiplyFreeZGLetterWithGroupElt}}270\logpage{[ 2, 1, 7 ]}\nobreak271\hyperdef{L}{X8540F3B37BAC695F}{}272{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{MultiplyFreeZGLetterWithGroupElt({\slshape resolution, letter, g})\index{MultiplyFreeZGLetterWithGroupElt@\texttt{MultiplyFreeZGLetterWithGroupElt}}273\label{MultiplyFreeZGLetterWithGroupElt}274}\hfill{\scriptsize (method)}}\\275\textbf{\indent Returns:\ }276A letter277278279280Multiplies the letter \mbox{\texttt{\slshape letter}} with the group element \mbox{\texttt{\slshape g}} and returns the result. If \mbox{\texttt{\slshape resolution}} is in standard representation, \mbox{\texttt{\slshape g}} has to be an integer and \mbox{\texttt{\slshape letter}} has to be a pair of integer. If \mbox{\texttt{\slshape resolution}} is in any other representation, \mbox{\texttt{\slshape letter}} and \mbox{\texttt{\slshape g}} can be in a form compatible with that representation or in the standard form281(in the latter case, the returned value will also have standard form). }282283284285\subsection{\textcolor{Chapter }{MultiplyFreeZGWordWithGroupElt}}286\logpage{[ 2, 1, 8 ]}\nobreak287\hyperdef{L}{X826835B185CA4DAF}{}288{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{MultiplyFreeZGWordWithGroupElt({\slshape resolution, word, g})\index{MultiplyFreeZGWordWithGroupElt@\texttt{MultiplyFreeZGWordWithGroupElt}}289\label{MultiplyFreeZGWordWithGroupElt}290}\hfill{\scriptsize (method)}}\\291\textbf{\indent Returns:\ }292A word293294295296Multiplies the word \mbox{\texttt{\slshape word}} with the group element \mbox{\texttt{\slshape g}} and returns the result. If \mbox{\texttt{\slshape resolution}} is in standard representation, \mbox{\texttt{\slshape g}} has to be an integer and \mbox{\texttt{\slshape word}} has to be a list of pairs of integers. If \mbox{\texttt{\slshape resolution}} is in any other representation, \mbox{\texttt{\slshape word}} and \mbox{\texttt{\slshape g}} can be in a form compatible with that representation or in the standard form297(in the latter case, the returned value will also have standard form). }298299300301\subsection{\textcolor{Chapter }{BoundaryOfFreeZGLetter}}302\logpage{[ 2, 1, 9 ]}\nobreak303\hyperdef{L}{X7D8B54D7828D7C5C}{}304{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{BoundaryOfFreeZGLetter({\slshape resolution, term, letter})\index{BoundaryOfFreeZGLetter@\texttt{BoundaryOfFreeZGLetter}}305\label{BoundaryOfFreeZGLetter}306}\hfill{\scriptsize (method)}}\\307\textbf{\indent Returns:\ }308free ZG word (in the same representation as \mbox{\texttt{\slshape letter}})309310311312Calculates the boundary of the letter (word of length 1) \mbox{\texttt{\slshape letter}} of the \mbox{\texttt{\slshape term}}th module of \mbox{\texttt{\slshape resolution}}.313314The returned value is a word of the \mbox{\texttt{\slshape term}}-1st module and comes in the same representation as \mbox{\texttt{\slshape letter}}. }315316317318\subsection{\textcolor{Chapter }{BoundaryOfFreeZGWord}}319\logpage{[ 2, 1, 10 ]}\nobreak320\hyperdef{L}{X81A6037F82C3C31E}{}321{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{BoundaryOfFreeZGWord({\slshape resolution, term, word})\index{BoundaryOfFreeZGWord@\texttt{BoundaryOfFreeZGWord}}322\label{BoundaryOfFreeZGWord}323}\hfill{\scriptsize (method)}}\\324\textbf{\indent Returns:\ }325free ZG word (in the same representation as \mbox{\texttt{\slshape letter}})326327328329Calculates the boundary of the word \mbox{\texttt{\slshape word}} of the \mbox{\texttt{\slshape term}}th module of \mbox{\texttt{\slshape resolution}}.330331The returned value is a word of the \mbox{\texttt{\slshape term}}-1st module and comes in the same representation as \mbox{\texttt{\slshape word}}. }332333}334335336\section{\textcolor{Chapter }{Converting Between Representations}}\logpage{[ 2, 2, 0 ]}337\hyperdef{L}{X7B94A2ED857C62D5}{}338{339Four methods are provided to convert letters and words from standard340representation to any other representation and back again.341342\subsection{\textcolor{Chapter }{ConvertStandardLetter}}343\logpage{[ 2, 2, 1 ]}\nobreak344\hyperdef{L}{X7EB515317948BE8E}{}345{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{ConvertStandardLetter({\slshape resolution, term, letter})\index{ConvertStandardLetter@\texttt{ConvertStandardLetter}}346\label{ConvertStandardLetter}347}\hfill{\scriptsize (method)}}\\348\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{ConvertStandardLetterNC({\slshape resolution, term, letter})\index{ConvertStandardLetterNC@\texttt{ConvertStandardLetterNC}}349\label{ConvertStandardLetterNC}350}\hfill{\scriptsize (method)}}\\351\textbf{\indent Returns:\ }352letter in the representation of \mbox{\texttt{\slshape resolution}}353354355356Converts the letter \mbox{\texttt{\slshape letter}} in standard representation to the representation of \mbox{\texttt{\slshape resolution}}. The NC version does not check whether \mbox{\texttt{\slshape letter}} really is a letter in standard representation. }357358359360\subsection{\textcolor{Chapter }{ConvertStandardWord}}361\logpage{[ 2, 2, 2 ]}\nobreak362\hyperdef{L}{X7A1CB5DF7A459D76}{}363{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{ConvertStandardWord({\slshape resolution, term, word})\index{ConvertStandardWord@\texttt{ConvertStandardWord}}364\label{ConvertStandardWord}365}\hfill{\scriptsize (method)}}\\366\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{ConvertStandardWordNC({\slshape resolution, term, word})\index{ConvertStandardWordNC@\texttt{ConvertStandardWordNC}}367\label{ConvertStandardWordNC}368}\hfill{\scriptsize (method)}}\\369\textbf{\indent Returns:\ }370word in the representation of \mbox{\texttt{\slshape resolution}}371372373374Converts the word \mbox{\texttt{\slshape word}} in standard representation to the representation of \mbox{\texttt{\slshape resolution}}. The NC version does not check whether \mbox{\texttt{\slshape word}} is a valid word in standard representation. }375376377378\subsection{\textcolor{Chapter }{ConvertLetterToStandardRep}}379\logpage{[ 2, 2, 3 ]}\nobreak380\hyperdef{L}{X83153E2682184860}{}381{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{ConvertLetterToStandardRep({\slshape resolution, term, letter})\index{ConvertLetterToStandardRep@\texttt{ConvertLetterToStandardRep}}382\label{ConvertLetterToStandardRep}383}\hfill{\scriptsize (method)}}\\384\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{ConvertLetterToStandardRepNC({\slshape resolution, term, letter})\index{ConvertLetterToStandardRepNC@\texttt{ConvertLetterToStandardRepNC}}385\label{ConvertLetterToStandardRepNC}386}\hfill{\scriptsize (method)}}\\387\textbf{\indent Returns:\ }388letter in standard representation389390391392Converts the letter \mbox{\texttt{\slshape letter}} in the representation of \mbox{\texttt{\slshape resolution}} to the standard representation. The NC version does not check whether \mbox{\texttt{\slshape letter}} is a valid letter of \mbox{\texttt{\slshape resolution}}. }393394395396\subsection{\textcolor{Chapter }{ConvertWordToStandardRep}}397\logpage{[ 2, 2, 4 ]}\nobreak398\hyperdef{L}{X848203218271A166}{}399{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{ConvertWordToStandardRep({\slshape resolution, term, word})\index{ConvertWordToStandardRep@\texttt{ConvertWordToStandardRep}}400\label{ConvertWordToStandardRep}401}\hfill{\scriptsize (method)}}\\402\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{ConvertWordToStandardRepNC({\slshape resolution, term, word})\index{ConvertWordToStandardRepNC@\texttt{ConvertWordToStandardRepNC}}403\label{ConvertWordToStandardRepNC}404}\hfill{\scriptsize (method)}}\\405\textbf{\indent Returns:\ }406word in standard representation407408409410Converts the word \mbox{\texttt{\slshape word}} in the representation of \mbox{\texttt{\slshape resolution}} to the standard representation. The NC version does not check whether \mbox{\texttt{\slshape word}} is a valid word of \mbox{\texttt{\slshape resolution}}. }411412}413414415\section{\textcolor{Chapter }{Special Methods for \texttt{HapResolutionRep}}}\logpage{[ 2, 3, 0 ]}416\hyperdef{L}{X84FB45EB83B5822C}{}417{418Some methods explicitely require the input to be in the standard419representation (\mbox{\texttt{\slshape HapResolutionRep}}). Two of these test if a word/letter is really in standard representation,420the other ones are non-check versions of the universal methods.421422\subsection{\textcolor{Chapter }{IsFreeZGLetter}}423\logpage{[ 2, 3, 1 ]}\nobreak424\hyperdef{L}{X7B803CC184BD2612}{}425{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{IsFreeZGLetter({\slshape resolution, term, letter})\index{IsFreeZGLetter@\texttt{IsFreeZGLetter}}426\label{IsFreeZGLetter}427}\hfill{\scriptsize (method)}}\\428\textbf{\indent Returns:\ }429boolean430431432433Checks if \mbox{\texttt{\slshape letter}} is an valid letter (word of length 1) in standard representation of the \mbox{\texttt{\slshape term}}th module of \mbox{\texttt{\slshape resolution}}. }434435436437\subsection{\textcolor{Chapter }{IsFreeZGWord}}438\logpage{[ 2, 3, 2 ]}\nobreak439\hyperdef{L}{X7A36FB7B84E9A892}{}440{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{IsFreeZGWord({\slshape resolution, term, word})\index{IsFreeZGWord@\texttt{IsFreeZGWord}}441\label{IsFreeZGWord}442}\hfill{\scriptsize (method)}}\\443\textbf{\indent Returns:\ }444boolean445446447448Check if \mbox{\texttt{\slshape word}} is a valid word in large standard representation of the \mbox{\texttt{\slshape term}}th module in \mbox{\texttt{\slshape resolution}}. }449450451452\subsection{\textcolor{Chapter }{MultiplyGroupEltsNC}}453\logpage{[ 2, 3, 3 ]}\nobreak454\hyperdef{L}{X836D3F9886EED6AC}{}455{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{MultiplyGroupEltsNC({\slshape resolution, x, y})\index{MultiplyGroupEltsNC@\texttt{MultiplyGroupEltsNC}}456\label{MultiplyGroupEltsNC}457}\hfill{\scriptsize (method)}}\\458\textbf{\indent Returns:\ }459positive integer460461462463Given positive integers \texttt{x} and \texttt{y}, this returns the position of the product of the group elements represented464by the positive integers \mbox{\texttt{\slshape x}} and \mbox{\texttt{\slshape x}}. This assumes that all input is in standard representation and does not check465the input. }466467468469\subsection{\textcolor{Chapter }{MultiplyFreeZGLetterWithGroupEltNC}}470\logpage{[ 2, 3, 4 ]}\nobreak471\hyperdef{L}{X85893CC5823508A8}{}472{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{MultiplyFreeZGLetterWithGroupEltNC({\slshape resolution, letter, g})\index{MultiplyFreeZGLetterWithGroupEltNC@\texttt{MultiplyFreeZGLetterWithGroupEltNC}}473\label{MultiplyFreeZGLetterWithGroupEltNC}474}\hfill{\scriptsize (method)}}\\475\textbf{\indent Returns:\ }476A letter in standard representation477478479480Multiplies the letter \mbox{\texttt{\slshape letter}} with the group element represented by the positive integer \mbox{\texttt{\slshape g}} and returns the result. The input is assumed to be in \mbox{\texttt{\slshape HapResolutionRep}} and is not checked. }481482483484\subsection{\textcolor{Chapter }{MultiplyFreeZGWordWithGroupEltNC}}485\logpage{[ 2, 3, 5 ]}\nobreak486\hyperdef{L}{X8073DE7E7AD8B7CB}{}487{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{MultiplyFreeZGWordWithGroupEltNC({\slshape resolution, word, g})\index{MultiplyFreeZGWordWithGroupEltNC@\texttt{MultiplyFreeZGWordWithGroupEltNC}}488\label{MultiplyFreeZGWordWithGroupEltNC}489}\hfill{\scriptsize (method)}}\\490\textbf{\indent Returns:\ }491A letter in standard representation492493494495Multiplies the word \mbox{\texttt{\slshape word}} with the group element represented by the positive integer \mbox{\texttt{\slshape g}} and returns the result. The input is assumed to be in \mbox{\texttt{\slshape HapResolutionRep}} and is not checked. }496497498499\subsection{\textcolor{Chapter }{BoundaryOfFreeZGLetterNC}}500\logpage{[ 2, 3, 6 ]}\nobreak501\hyperdef{L}{X7BD3994E7C414149}{}502{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{BoundaryOfFreeZGLetterNC({\slshape resolution, term, letter})\index{BoundaryOfFreeZGLetterNC@\texttt{BoundaryOfFreeZGLetterNC}}503\label{BoundaryOfFreeZGLetterNC}504}\hfill{\scriptsize (method)}}\\505\textbf{\indent Returns:\ }506free ZG word in standard representation507508509510Calculates the boundary of the letter (word of length 1) \mbox{\texttt{\slshape letter}} of the \mbox{\texttt{\slshape term}}th module of \mbox{\texttt{\slshape resolution}}. The input is assumed to be in standard representation and not checked. }511512513514\subsection{\textcolor{Chapter }{BoundaryOfFreeZGWordNC}}515\logpage{[ 2, 3, 7 ]}\nobreak516\hyperdef{L}{X84B1DA21805A0880}{}517{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{BoundaryOfFreeZGWordNC({\slshape resolution, term, word})\index{BoundaryOfFreeZGWordNC@\texttt{BoundaryOfFreeZGWordNC}}518\label{BoundaryOfFreeZGWordNC}519}\hfill{\scriptsize (method)}}\\520\textbf{\indent Returns:\ }521free ZG word in standard representation522523524525Calculates the boundary of the word \mbox{\texttt{\slshape word}} of the \mbox{\texttt{\slshape term}}th module of \mbox{\texttt{\slshape resolution}}. The input is assumed to be in standard representation and not checked. }526527}528529530\section{\textcolor{Chapter }{The \texttt{HapLargeGroupResolutionRep} Representation}}\logpage{[ 2, 4, 0 ]}531\hyperdef{L}{X8024014D8488FE30}{}532{533The large group representation has one additional component called \texttt{groupring}. Elements of the modules in a resolution are represented by lists of group534ring elements. The length of the list corresponds to the dimension of the free535module.536537All methods for the generic representation do also work for the large group538representation. Some of them are wrappers for special methods which do only539work for this representation. The following list only contains the methods540which are not already present in the generic representation.541542Note that the input or the output of these functions does not comply with the543standard representation.544545\subsection{\textcolor{Chapter }{GroupRingOfResolution}}546\logpage{[ 2, 4, 1 ]}\nobreak547\hyperdef{L}{X861BE6C787FA8032}{}548{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{GroupRingOfResolution({\slshape resolution})\index{GroupRingOfResolution@\texttt{GroupRingOfResolution}}549\label{GroupRingOfResolution}550}\hfill{\scriptsize (method)}}\\551\textbf{\indent Returns:\ }552group ring553554555556This returns the group ring of \mbox{\texttt{\slshape resolution}}. Note that by the way that group rings are handled in \textsf{GAP}, this is not equal to \texttt{GroupRing(R,GroupOfResolution(\mbox{\texttt{\slshape resolution}}))} where \texttt{R} is the ring of the resolution. }557558559560\subsection{\textcolor{Chapter }{MultiplyGroupElts{\textunderscore}LargeGroupRep}}561\logpage{[ 2, 4, 2 ]}\nobreak562\hyperdef{L}{X8338F7A37F240E33}{}563{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{MultiplyGroupElts{\textunderscore}LargeGroupRep({\slshape resolution, x, y})\index{MultiplyGroupEltsLargeGroupRep@\texttt{Multiply}\-\texttt{Group}\-\texttt{Elts{\textunderscore}}\-\texttt{Large}\-\texttt{GroupRep}}564\label{MultiplyGroupEltsLargeGroupRep}565}\hfill{\scriptsize (method)}}\\566\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{MultiplyGroupEltsNC{\textunderscore}LargeGroupRep({\slshape resolution, x, y})\index{MultiplyGroupEltsNCLargeGroupRep@\texttt{Multiply}\-\texttt{Group}\-\texttt{Elts}\-\texttt{N}\-\texttt{C{\textunderscore}}\-\texttt{Large}\-\texttt{GroupRep}}567\label{MultiplyGroupEltsNCLargeGroupRep}568}\hfill{\scriptsize (method)}}\\569\textbf{\indent Returns:\ }570group element571572573574Returns the product of \mbox{\texttt{\slshape x}} and \mbox{\texttt{\slshape y}}. The NC version does not check whether \mbox{\texttt{\slshape x}} and \mbox{\texttt{\slshape y}} are actually elements of the group of \mbox{\texttt{\slshape resolution}}. }575576577578\subsection{\textcolor{Chapter }{IsFreeZGLetterNoTermCheck{\textunderscore}LargeGroupRep}}579\logpage{[ 2, 4, 3 ]}\nobreak580\hyperdef{L}{X86F91A948022DEBB}{}581{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{IsFreeZGLetterNoTermCheck{\textunderscore}LargeGroupRep({\slshape resolution, letter})\index{IsFreeZGLetterNoTermCheckLargeGroupRep@\texttt{IsFree}\-\texttt{Z}\-\texttt{G}\-\texttt{Letter}\-\texttt{No}\-\texttt{Term}\-\texttt{Check{\textunderscore}}\-\texttt{Large}\-\texttt{GroupRep}}582\label{IsFreeZGLetterNoTermCheckLargeGroupRep}583}\hfill{\scriptsize (method)}}\\584\textbf{\indent Returns:\ }585boolean586587588589Returns \texttt{true} if \mbox{\texttt{\slshape letter}} has the form of a letter (a module element with exactly one non-zero entry590which has exactly one non-zero coefficient) a module of \mbox{\texttt{\slshape resolution}} in the \texttt{HapLargeGroupResolution} representation. Note that it is not tested if \mbox{\texttt{\slshape letter}} actually is a letter in any term of \mbox{\texttt{\slshape resolution}} }591592593594\subsection{\textcolor{Chapter }{IsFreeZGWordNoTermCheck{\textunderscore}LargeGroupRep}}595\logpage{[ 2, 4, 4 ]}\nobreak596\hyperdef{L}{X793BA61478AEBE16}{}597{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{IsFreeZGWordNoTermCheck{\textunderscore}LargeGroupRep({\slshape resolution, word})\index{IsFreeZGWordNoTermCheckLargeGroupRep@\texttt{IsFree}\-\texttt{Z}\-\texttt{G}\-\texttt{Word}\-\texttt{No}\-\texttt{Term}\-\texttt{Check{\textunderscore}}\-\texttt{Large}\-\texttt{GroupRep}}598\label{IsFreeZGWordNoTermCheckLargeGroupRep}599}\hfill{\scriptsize (method)}}\\600\textbf{\indent Returns:\ }601boolean602603604605Returns \texttt{true} if \mbox{\texttt{\slshape word}} has the form of a word of a module of \mbox{\texttt{\slshape resolution}} in the \texttt{HapLargeGroupResolution} representation. Note that it is not tested if \mbox{\texttt{\slshape word}} actually is a word in any term of \mbox{\texttt{\slshape resolution}}. }606607608609\subsection{\textcolor{Chapter }{IsFreeZGLetter{\textunderscore}LargeGroupRep}}610\logpage{[ 2, 4, 5 ]}\nobreak611\hyperdef{L}{X85A7BFC284E9D9CB}{}612{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{IsFreeZGLetter{\textunderscore}LargeGroupRep({\slshape resolution, term, letter})\index{IsFreeZGLetterLargeGroupRep@\texttt{IsFree}\-\texttt{Z}\-\texttt{G}\-\texttt{Letter{\textunderscore}}\-\texttt{Large}\-\texttt{GroupRep}}613\label{IsFreeZGLetterLargeGroupRep}614}\hfill{\scriptsize (method)}}\\615\textbf{\indent Returns:\ }616boolean617618619620Returns \texttt{true} if and only if \mbox{\texttt{\slshape letter}} is a letter (a word of length 1) of the \mbox{\texttt{\slshape term}}th module of \mbox{\texttt{\slshape resolution}} in the \texttt{hapLargeGroupResolution} representation. I.e. it tests if \mbox{\texttt{\slshape letter}} is a module element with exactly one non-zero entry which has exactly one621non-zero coefficient. }622623624625\subsection{\textcolor{Chapter }{IsFreeZGWord{\textunderscore}LargeGroupRep}}626\logpage{[ 2, 4, 6 ]}\nobreak627\hyperdef{L}{X7BF4A7EC83BE61C8}{}628{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{IsFreeZGWord{\textunderscore}LargeGroupRep({\slshape resolution, term, word})\index{IsFreeZGWordLargeGroupRep@\texttt{IsFree}\-\texttt{Z}\-\texttt{G}\-\texttt{Word{\textunderscore}}\-\texttt{Large}\-\texttt{GroupRep}}629\label{IsFreeZGWordLargeGroupRep}630}\hfill{\scriptsize (method)}}\\631\textbf{\indent Returns:\ }632boolean633634635636Tests if \mbox{\texttt{\slshape word}} is an element of the \mbox{\texttt{\slshape term}}th module of \mbox{\texttt{\slshape resoultion}}. }637638639640\subsection{\textcolor{Chapter }{MultiplyFreeZGLetterWithGroupElt{\textunderscore}LargeGroupRep}}641\logpage{[ 2, 4, 7 ]}\nobreak642\hyperdef{L}{X7A4B682079630694}{}643{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{MultiplyFreeZGLetterWithGroupElt{\textunderscore}LargeGroupRep({\slshape resolution, letter, g})\index{MultiplyFreeZGLetterWithGroupEltLargeGroupRep@\texttt{Multiply}\-\texttt{Free}\-\texttt{Z}\-\texttt{G}\-\texttt{Letter}\-\texttt{With}\-\texttt{Group}\-\texttt{Elt{\textunderscore}}\-\texttt{Large}\-\texttt{GroupRep}}644\label{MultiplyFreeZGLetterWithGroupEltLargeGroupRep}645}\hfill{\scriptsize (method)}}\\646\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{MultiplyFreeZGLetterWithGroupEltNC{\textunderscore}LargeGroupRep({\slshape resolution, letter, g})\index{MultiplyFreeZGLetterWithGroupEltNCLargeGroupRep@\texttt{Multiply}\-\texttt{Free}\-\texttt{Z}\-\texttt{G}\-\texttt{Letter}\-\texttt{With}\-\texttt{Group}\-\texttt{Elt}\-\texttt{N}\-\texttt{C{\textunderscore}}\-\texttt{Large}\-\texttt{GroupRep}}647\label{MultiplyFreeZGLetterWithGroupEltNCLargeGroupRep}648}\hfill{\scriptsize (method)}}\\649\textbf{\indent Returns:\ }650free ZG letter in large group representation651652653654Multiplies the letter \mbox{\texttt{\slshape letter}} with the group element \mbox{\texttt{\slshape g}} and returns the result. The NC version does not check whether \mbox{\texttt{\slshape g}} is an element of the group of \mbox{\texttt{\slshape resolution}} and \mbox{\texttt{\slshape letter}} can be a letter. }655656657658\subsection{\textcolor{Chapter }{MultiplyFreeZGWordWithGroupElt{\textunderscore}LargeGroupRep}}659\logpage{[ 2, 4, 8 ]}\nobreak660\hyperdef{L}{X7F2365D2851E3E3C}{}661{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{MultiplyFreeZGWordWithGroupElt{\textunderscore}LargeGroupRep({\slshape resolution, word, g})\index{MultiplyFreeZGWordWithGroupEltLargeGroupRep@\texttt{Multiply}\-\texttt{Free}\-\texttt{Z}\-\texttt{G}\-\texttt{Word}\-\texttt{With}\-\texttt{Group}\-\texttt{Elt{\textunderscore}}\-\texttt{Large}\-\texttt{GroupRep}}662\label{MultiplyFreeZGWordWithGroupEltLargeGroupRep}663}\hfill{\scriptsize (method)}}\\664\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{MultiplyFreeZGWordWithGroupEltNC{\textunderscore}LargeGroupRep({\slshape resolution, word, g})\index{MultiplyFreeZGWordWithGroupEltNCLargeGroupRep@\texttt{Multiply}\-\texttt{Free}\-\texttt{Z}\-\texttt{G}\-\texttt{Word}\-\texttt{With}\-\texttt{Group}\-\texttt{Elt}\-\texttt{N}\-\texttt{C{\textunderscore}}\-\texttt{Large}\-\texttt{GroupRep}}665\label{MultiplyFreeZGWordWithGroupEltNCLargeGroupRep}666}\hfill{\scriptsize (method)}}\\667\textbf{\indent Returns:\ }668free ZG word in large group representation669670671672Multiplies the word \mbox{\texttt{\slshape word}} with the group element \mbox{\texttt{\slshape g}} and returns the result. The NC version does not check whether \mbox{\texttt{\slshape g}} is an element of the group of \mbox{\texttt{\slshape resolution}} and \mbox{\texttt{\slshape word}} can be a word. }673674675676\subsection{\textcolor{Chapter }{GeneratorsOfModuleOfResolution{\textunderscore}LargeGroupRep}}677\logpage{[ 2, 4, 9 ]}\nobreak678\hyperdef{L}{X8355F6E8842B3D8C}{}679{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{GeneratorsOfModuleOfResolution{\textunderscore}LargeGroupRep({\slshape resolution, term})\index{GeneratorsOfModuleOfResolutionLargeGroupRep@\texttt{Generators}\-\texttt{Of}\-\texttt{Module}\-\texttt{Of}\-\texttt{Resolution{\textunderscore}}\-\texttt{Large}\-\texttt{GroupRep}}680\label{GeneratorsOfModuleOfResolutionLargeGroupRep}681}\hfill{\scriptsize (method)}}\\682\textbf{\indent Returns:\ }683list of letters/words in large group representation684685686687Returns a set of generators for the \mbox{\texttt{\slshape term}}th module of \mbox{\texttt{\slshape resolution}}. The returned value is a list of vectors of group ring elements. }688689690691\subsection{\textcolor{Chapter }{BoundaryOfGenerator{\textunderscore}LargeGroupRep}}692\logpage{[ 2, 4, 10 ]}\nobreak693\hyperdef{L}{X840DF79086D5473E}{}694{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{BoundaryOfGenerator{\textunderscore}LargeGroupRep({\slshape resolution, term, n})\index{BoundaryOfGeneratorLargeGroupRep@\texttt{Boundary}\-\texttt{Of}\-\texttt{Generator{\textunderscore}}\-\texttt{Large}\-\texttt{GroupRep}}695\label{BoundaryOfGeneratorLargeGroupRep}696}\hfill{\scriptsize (method)}}\\697\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{BoundaryOfGeneratorNC{\textunderscore}LargeGroupRep({\slshape resolution, term, n})\index{BoundaryOfGeneratorNCLargeGroupRep@\texttt{Boundary}\-\texttt{Of}\-\texttt{Generator}\-\texttt{N}\-\texttt{C{\textunderscore}}\-\texttt{Large}\-\texttt{GroupRep}}698\label{BoundaryOfGeneratorNCLargeGroupRep}699}\hfill{\scriptsize (method)}}\\700\textbf{\indent Returns:\ }701free ZG word in the large group representation702703704705Returns the boundary of the \mbox{\texttt{\slshape n}}th generator of the \mbox{\texttt{\slshape term}}th module of \mbox{\texttt{\slshape resolution}} as a word in the \mbox{\texttt{\slshape n-1}}st module (in large group representation). The NC version does not check706whether there is a \mbox{\texttt{\slshape term}}th module and if it has at least \mbox{\texttt{\slshape n}} generators. }707708709710\subsection{\textcolor{Chapter }{BoundaryOfFreeZGLetterNC{\textunderscore}LargeGroupRep}}711\logpage{[ 2, 4, 11 ]}\nobreak712\hyperdef{L}{X83D90EC28357DCCE}{}713{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{BoundaryOfFreeZGLetterNC{\textunderscore}LargeGroupRep({\slshape resolution, term, letter})\index{BoundaryOfFreeZGLetterNCLargeGroupRep@\texttt{Boundary}\-\texttt{Of}\-\texttt{Free}\-\texttt{Z}\-\texttt{G}\-\texttt{Letter}\-\texttt{N}\-\texttt{C{\textunderscore}}\-\texttt{Large}\-\texttt{GroupRep}}714\label{BoundaryOfFreeZGLetterNCLargeGroupRep}715}\hfill{\scriptsize (method)}}\\716\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{BoundaryOfFreeZGLetter{\textunderscore}LargeGroupRep({\slshape resolution, term, letter})\index{BoundaryOfFreeZGLetterLargeGroupRep@\texttt{Boundary}\-\texttt{Of}\-\texttt{Free}\-\texttt{Z}\-\texttt{G}\-\texttt{Letter{\textunderscore}}\-\texttt{Large}\-\texttt{GroupRep}}717\label{BoundaryOfFreeZGLetterLargeGroupRep}718}\hfill{\scriptsize (method)}}\\719\textbf{\indent Returns:\ }720free ZG word in large group representation721722723724Calculates the boundary of the letter \mbox{\texttt{\slshape letter}} of the \mbox{\texttt{\slshape term}}th module of \mbox{\texttt{\slshape resolution}} in large group representation. The NC version does not check whether \mbox{\texttt{\slshape letter}} actually is a letter in the \mbox{\texttt{\slshape term}}th module. }725726727728\subsection{\textcolor{Chapter }{BoundaryOfFreeZGWord{\textunderscore}LargeGroupRep}}729\logpage{[ 2, 4, 12 ]}\nobreak730\hyperdef{L}{X78C681D37F8DC2A1}{}731{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{BoundaryOfFreeZGWord{\textunderscore}LargeGroupRep({\slshape resolution, term, word})\index{BoundaryOfFreeZGWordLargeGroupRep@\texttt{Boundary}\-\texttt{Of}\-\texttt{Free}\-\texttt{Z}\-\texttt{G}\-\texttt{Word{\textunderscore}}\-\texttt{Large}\-\texttt{GroupRep}}732\label{BoundaryOfFreeZGWordLargeGroupRep}733}\hfill{\scriptsize (method)}}\\734\textbf{\indent Returns:\ }735free ZG word in large group representation736737738739Calculates the boundary of the element \mbox{\texttt{\slshape word}} of the \mbox{\texttt{\slshape term}}th module of \mbox{\texttt{\slshape resolution}} in large group representation. The NC version does not check whether \mbox{\texttt{\slshape word}} actually is a word in the \mbox{\texttt{\slshape term}}th module. }740741}742743}744745746\chapter{\textcolor{Chapter }{Contracting Homotopies}}\logpage{[ 3, 0, 0 ]}747\hyperdef{L}{X792B9CC97C670AEA}{}748{749750\section{\textcolor{Chapter }{The \texttt{PartialContractingHomotopy} Data Type}}\logpage{[ 3, 1, 0 ]}751\hyperdef{L}{X7E957D2381DBE362}{}752{753A partial contracting homotopy is a component object that knows the values of754a contracting homotopy on some subspace of a resolution. It has two mandatory755components:756\begin{itemize}757\item \texttt{.resolution} a \texttt{HapResolution} on which the contraction is defined.758\item \texttt{.knownPartOfHomotopy} a list of \texttt{Record}s with components \texttt{.space} and \texttt{.map}.759\end{itemize}760Let \texttt{h} be a contracting homotopy. The lookup table \texttt{.knownPartOfHomotopy} has one entry for each term of the resolution \texttt{h.resolution} (that is, one more than \texttt{Length(h.resolution)}).761762The $i$ th element of \texttt{.knownPartOfHomotopy} contains a record with components \texttt{.space} and \texttt{.map} where \texttt{.space} is a \texttt{FreeZGWord} of the $i-1$ st term of the resolution. The component \texttt{.map} is a list of length \texttt{Dimension(h.resolution)(i-1)}. The entries of this list are pairs \texttt{[g,im]} where \texttt{g} represents a group element and \texttt{im} represents the image of the contraction. So the entry \texttt{[g,im]} in the \texttt{k}th component of the list \texttt{.map} means that the \texttt{k}th free generator of the corresponding module multiplied with the group763element represented by \texttt{g} is mapped to \texttt{im} under the partial contracting homotopy. Note that the data type of \texttt{g} or \texttt{im} are not fixed at this level. They must be specified by the sub764representations. Also, \texttt{im} need not represent the actual image under a contracting homotopy. It is765possible to just store a bit of information that is then used to generate the766actual image.767768As this is a very general data type, it has very few methods.769770\subsection{\textcolor{Chapter }{ResolutionOfContractingHomotopy}}771\logpage{[ 3, 1, 1 ]}\nobreak772\hyperdef{L}{X7D899ACD7EB512FA}{}773{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{ResolutionOfContractingHomotopy({\slshape homotopy})\index{ResolutionOfContractingHomotopy@\texttt{ResolutionOfContractingHomotopy}}774\label{ResolutionOfContractingHomotopy}775}\hfill{\scriptsize (method)}}\\776\textbf{\indent Returns:\ }777A \texttt{HapResolution}778779780781This returns the resolution of the homotopy \mbox{\texttt{\slshape homotopy}} (the component \mbox{\texttt{\slshape homotopy!.resolution}}). }782783784785\subsection{\textcolor{Chapter }{PartialContractingHomotopyLookup}}786\logpage{[ 3, 1, 2 ]}\nobreak787\hyperdef{L}{X79C69C9B877C6D60}{}788{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{PartialContractingHomotopyLookup({\slshape homotopy, term, generator, groupel})\index{PartialContractingHomotopyLookup@\texttt{PartialContractingHomotopyLookup}}789\label{PartialContractingHomotopyLookup}790}\hfill{\scriptsize (method)}}\\791\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{PartialContractingHomotopyLookupNC({\slshape homotopy, term, generator, groupel})\index{PartialContractingHomotopyLookupNC@\texttt{PartialContractingHomotopyLookupNC}}792\label{PartialContractingHomotopyLookupNC}793}\hfill{\scriptsize (method)}}\\794\textbf{\indent Returns:\ }795The entry \texttt{im} of the corresponding lookup table796797798799Looks up the known part of the contracting homotopy \mbox{\texttt{\slshape homotopy}} and returns the corresponding image. More precisely, it returns the image of800the \mbox{\texttt{\slshape generator}}th generator times the group element represented by \mbox{\texttt{\slshape groupel}} in term \mbox{\texttt{\slshape term}} under the partial homotopy. The data type of this image depends on the801representation of \mbox{\texttt{\slshape homotopy}}.802803\mbox{\texttt{\slshape term}} has to be an integer and \mbox{\texttt{\slshape generator}} a positive integer. \mbox{\texttt{\slshape groupel}} only has to be an \texttt{Object}.804805The NC version does not do any checks on the input. The other version checks806if \mbox{\texttt{\slshape term}} and \mbox{\texttt{\slshape generator}} are sensible. It does not check \mbox{\texttt{\slshape groupel}}. }807808}809810}811812\newpage813\immediate\write\pagenrlog{["End"], \arabic{page}];}814\immediate\closeout\pagenrlog815\end{document}816817818