The PartialContractingHomotopy Data Type

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: .resolution a HapResolution on which the contraction is defined. .knownPartOfHomotopy a list of Records with components .space and .map.

Let h be a contracting homotopy. The lookup table .knownPartOfHomotopy has one entry for each term of the resolution h.resolution (that is, one more than Length(h.resolution)).

The i th element of .knownPartOfHomotopy contains a record with components .space and .map where .space is a FreeZGWord of the i-1 st term of the resolution.

The component .map is a list of length Dimension(h.resolution)(i-1). The entries of this list are pairs [g,im] where g represents a group element and im represents the image of the contraction. So the entry [g,im] in the kth component of the list .map means that the kth free generator of the corresponding module multiplied with the group element represented by g is mapped to im under the partial contracting homotopy. Note that the data type of g or im are not fixed at this level. They must be specified by the sub representations. Also, im 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.

A HapResolution
This returns the resolution of the homotopy homotopy (the component homotopy!.resolution).
The entry im of the corresponding lookup table
Looks up the known part of the contracting homotopy homotopy and returns the corresponding image. More precisely, it returns the image of the generatorth generator times the group element represented by groupel in term term under the partial homotopy. The data type of this image depends on the representation of homotopy.

term has to be an integer and generator a positive integer. groupel only has to be an Object.

The NC version does not do any checks on the input. The other version checks if term and generator are sensible. It does not check groupel.