  
  [1X20 [33X[0;0YWords in free [22XZG[122X[101X[1X-modules[133X[101X
  
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XAddFreeWords(v,w) [110X[133X
  
  [33X[0;0YInputs  two  words [22Xv,w[122X in a free [22XZG[122X-module and returns their sum [22Xv+w[122X. If the
  characteristic  of  [22XZ[122X is greater than [22X0[122X then the next function might be more
  efficient.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XAddFreeWordsModP(v,w,p) [110X[133X
  
  [33X[0;0YInputs  two  words [22Xv,w[122X in a free [22XZG[122X-module and the characteristic [22Xp[122X of [22XZ[122X. It
  returns  the  sum  [22Xv+w[122X.  If  [22Xp=0[122X the previous function might be fractionally
  quicker.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XAlgebraicReduction(w) [110X[133X
  [33X[0;0Y[10XAlgebraicReduction(w,p) [110X[133X
  
  [33X[0;0YInputs  a  word  [22Xw[122X  in a free [22XZG[122X-module and returns a reduced version of the
  word in which all pairs of mutually inverse letters have been cancelled. The
  reduction  is  performed in a free abelian group unless the characteristic [22Xp[122X
  of [22XZ[122X is entered.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XMultiply Word(n,w) [110X[133X
  
  [33X[0;0YInputs a word [22Xw[122X and integer [22Xn[122X. It returns the scalar multiple [22Xn⋅ w[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XNegate([i,j]) [110X[133X
  
  [33X[0;0YInputs a pair [22X[i,j][122X of integers and returns [22X[-i,j][122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XNegateWord(w) [110X[133X
  
  [33X[0;0YInputs a word [22Xw[122X in a free [22XZG[122X-module and returns the negated word [22X-w[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XPrintZGword(w,elts) [110X[133X
  
  [33X[0;0YInputs  a word [22Xw[122X in a free [22XZG[122X-module and a (possibly partial but sufficient)
  listing  elts  of  the  elements of [22XG[122X. The function prints the word [22Xw[122X to the
  screen in the form[133X
  
  [33X[0;0Y[22Xr_1E_1 + ... + r_nE_n[122X[133X
  
  [33X[0;0Ywhere  [22Xr_i[122X  are elements in the group ring [22XZG[122X, and [22XE_i[122X denotes the [22Xi[122X-th free
  generator of the module.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XTietzeReduction(S,w) [110X[133X
  
  [33X[0;0YInputs a set [22XS[122X of words in a free [22XZG[122X-module, and a word [22Xw[122X in the module. The
  function returns a word [22Xw'[122X such that {[22XS,w'[122X} generates the same abelian group
  as  {[22XS,w[122X}. The word [22Xw'[122X is possibly shorter (and certainly no longer) than [22Xw[122X.
  This function needs to be improved![133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XResolutionBoundaryOfWord(R,n,w)[110X[133X
  
  [33X[0;0YInputs a resolution [22XR[122X, a positive integer [22Xn[122X and a list [22Xw[122X representing a word
  in  the  free  module [22XR_n[122X. It returns the image of [22Xw[122X under the [22Xn[122X-th boundary
  homomorphism.[133X
  
