Goto Chapter: Top 1 2 3
Top of Book Previous Chapter Next Chapter

1. Resolutions in Hap
1.1 The Standard Representation `HapResolutionRep`
1.2 The `HapLargeGroupResolutionRep` Representation

### 1. Resolutions in Hap

This document is only concerned with the representation of resolutions in Hap. Note that it is not a part of Hap. The framework provided here is just an extension of Hap data types used in HAPcryst and HAPprime.

From now on, let G be a group and dots -> M_n-> M_n-1->dots-> M_1-> M_0-> Z be a resolution with free ZG modules M_i.

The elements of the modules M_i can be represented in different ways. This is what makes different representations for resolutions desirable. First, we will look at the standard representation (`HapResolutionRep`) as it is defined in Hap. After that, we will present another representation for infinite groups. Note that all non-standard representations must be sub-representations of the standard representation to ensure compatibility with Hap.

#### 1.1 The Standard Representation `HapResolutionRep`

For every M_i we fix a basis and number its elements. Furthermore, it is assumed that we have a (partial) enumeration of the group of a resolution. In practice this is done by generating a lookup table on the fly.

In standard representation, the elements of the modules M_k are represented by lists -"words"- of pairs of integers. A letter `[i,g]` of such a word consists of the number of a basis element `i` or `-i` for its additive inverse and a number g representing a group element.

A `HapResolution` in `HapResolutionRep` representation is a component object with the components

- `group`, a group of arbitrary type.

- `elts`, a (partial) list of (possibly duplicate) elements in G. This list provides the "enumeration" of the group. Note that there are functions in Hap which assume that `elts[1]` is the identity element of G.

- `appendToElts(g)` a function that appends the group element `g` to `.elts`. This is not documented in Hap 1.8.6 but seems to be required for infinite groups. This requirement might vanish in some later version of Hap [G. Ellis, private communication].

- `dimension(k)`, a function which returns the ZG-rank of the Module M_k

- `boundary(k,j)`, a function which returns the image in M_k-1 of the jth free generator of M_k. Note that negative j are valid as input as well. In this case the additive inverse of the boundary of the jth generator is returned

- `homotopy(k,[i,g])` a function which returns the image in M_k+1, under a contracting homotopy M_k -> M_k+1, of the element `[[i,g]]` in M_k. The value of this might be `fail`. However, currently (version 1.8.4) some Hap functions assume that `homotopy` is a function without testing.

- `properties`, a list of pairs `["name","value"]` "name" is a string and value is anything (boolean, number, string...). Every `HapResolution` (regardless of representation) has to have `["type","resolution"]`, `["length",length]` where `length` is the length of the resolution and `["characteristic",char]`. Currently (Hap 1.8.6), `length` must not be `infinity`. The values of these properties can be tested using the Hap function `EvaluateProperty(resolution,propertyname)`.

Note that making `HapResolution`s immutable will make the `.elts` component immutable. As this lookup table might change during calculations, we do not recommend using immutable resolutions (in any representation).

#### 1.2 The `HapLargeGroupResolutionRep` Representation

In this sub-representation of the standard representation, the module elements in this resolution are lists of groupring elements. So the lookup table `.elts` is not used as long as no conversion to standard representation takes place. In addition to the components of a `HapResolution`, a resolution in large group representation has the following components:

- `boundary2(resolution,term,gen)`, a function that returns the boundary of the genth generator of the termth module.

- `groupring` the group ring of the resolution resolution.

- `dimension2(resolution,term)` a function that returns the dimension of the termth module of the resolution resolution.

The effort of having two versions of `boundary` and `dimension` is necessary to keep the structure compatible with the usual Hap resolution.

Top of Book Previous Chapter Next Chapter
Goto Chapter: Top 1 2 3

generated by GAPDoc2HTML