  
  [1X3 Contracting Homotopies[0X
  
  
  [1X3.1 The [9XPartialContractingHomotopy[1X Data Type[0X
  
  A  partial  contracting homotopy is a component object that knows the values
  of  a  contracting  homotopy  on  some  subspace of a resolution. It has two
  mandatory components:
  
  --    [10X.resolution[0m a [9XHapResolution[0m on which the contraction is defined.
  
  --    [10X.knownPartOfHomotopy[0m  a  list  of  [9XRecord[0ms  with components [10X.space[0m and
        [10X.map[0m.
  
  Let  [10Xh[0m  be a contracting homotopy. The lookup table [10X.knownPartOfHomotopy[0m has
  one  entry  for  each term of the resolution [10Xh.resolution[0m (that is, one more
  than [10XLength(h.resolution)[0m).
  
  The  i  th element of [10X.knownPartOfHomotopy[0m contains a record with components
  [10X.space[0m  and  [10X.map[0m  where  [10X.space[0m  is  a [9XFreeZGWord[0m of the i-1 st term of the
  resolution.     The     component    [10X.map[0m    is    a    list    of    length
  [10XDimension(h.resolution)(i-1)[0m.  The  entries  of  this  list are pairs [10X[g,im][0m
  where  [10Xg[0m  represents  a  group  element  and  [10Xim[0m represents the image of the
  contraction. So the entry [10X[g,im][0m in the [10Xk[0mth component of the list [10X.map[0m means
  that  the [10Xk[0mth free generator of the corresponding module multiplied with the
  group element represented by [10Xg[0m is mapped to [10Xim[0m under the partial contracting
  homotopy.  Note  that  the data type of [10Xg[0m or [10Xim[0m are not fixed at this level.
  They  must  be  specified  by  the  sub  representations.  Also, [10Xim[0m need not
  represent  the  actual image under a contracting homotopy. It is possible to
  just  store  a  bit  of information that is then used to generate the actual
  image.
  
  As this is a very general data type, it has very few methods.
  
  [1X3.1-1 ResolutionOfContractingHomotopy[0m
  
  [2X> ResolutionOfContractingHomotopy( [0X[3Xhomotopy[0X[2X ) ________________________[0Xmethod
  [6XReturns:[0X  A [9XHapResolution[0m
  
  This  returns  the  resolution  of  the  homotopy  [3Xhomotopy[0m  (the  component
  [3Xhomotopy!.resolution[0m).
  
  [1X3.1-2 PartialContractingHomotopyLookup[0m
  
  [2X> PartialContractingHomotopyLookup( [0X[3Xhomotopy, term, generator, groupel[0X[2X ) [0Xmethod
  [2X> PartialContractingHomotopyLookupNC( [0X[3Xhomotopy, term, generator, groupel[0X[2X ) [0Xmethod
  [6XReturns:[0X  The entry [10Xim[0m of the corresponding lookup table
  
  Looks up the known part of the contracting homotopy [3Xhomotopy[0m and returns the
  corresponding image. More precisely, it returns the image of the [3Xgenerator[0mth
  generator  times the group element represented by [3Xgroupel[0m in term [3Xterm[0m under
  the   partial  homotopy.  The  data  type  of  this  image  depends  on  the
  representation of [3Xhomotopy[0m.
  
  [3Xterm[0m has to be an integer and [3Xgenerator[0m a positive integer. [3Xgroupel[0m only has
  to be an [9XObject[0m.
  
  The NC version does not do any checks on the input. The other version checks
  if [3Xterm[0m and [3Xgenerator[0m are sensible. It does not check [3Xgroupel[0m.
  
