# [GAP Forum] An Essay in GAP Programming: Algebraic Topology

mbg nimda mbg.nimda at gmail.com
Sun May 30 15:26:31 BST 2010

```Dear Forum Members,

I have only be using GAP for a little while and derived great pleasure from
it. Out of
curiosity I also had a look at the Programmers Reference, and decided, as an
exercise
to write some functions supporting the study of homological groups on chain
complexes.
I would like to present the results of what I actually have already at this
moment and
obtain remarks and comments from the public on something that maybe could
become
a package concerning the construction and the study of chain complexes.

It has to be said that this work is in a very embryonic stage, programming
is lousy, nomenclature is
not always consistent and some problems still have to be resolved.

Maybe a few examples could give a good idea what it is all about. In this
implementation,
chain complexes are constructed by using skeletons recursively, increasing
dimension, each skeleton
of dimension n serving as a building block on which a skeleton of dimension
n+1 is
constructed. A 0-skeleton is a mere finite set of vertexes (the type of
elements of this
set is not important yet, so it can be numbers, polynomials, indeterminates
etc.). The only effect is that
they are labelled and that this label is used as a positional parameter in
higher dimensions.

A 1-skeleton is built on a given 0-skeleton by connecting some of the
vertexes, in fact one
considers a set of formal differences between two vertexes, giving a
directed edge. If v is
the number of vertexes then these edges can be represented as v-dimensional
vectors with
only two integer entries 1 and -1 put at the position of the corresponding
points.
For example the edge connecting the i-th vertex with
the j-th vertex can be viewed as the vector (0,..0,1,0,..,0,-1,0,..,0) with
the i-th coordinate being 1 and the j-th coordinate being -1.

In order not to overflow the forum system I will start with a few examples,
but it soon will be clear
that the construction always follows the same scheme. First a set of
n-cycles is found out, and "promoted"
to n+1-cells. Then a set of these cells is found out that form cycles to be
promoted to n+2-cells and so on.

The examples will appear in separate postings in order not to inundate the
forum and to have separate references
in case of discussion.
The examples will include:
The 2-Disk
The 2-Sphere
The 2-Open ended cylinder
The Moebius strip
The 2-Projective Space
The Klein bottle
Still to do : the double torus, the 3-Sphere, general constructions like
joining and excision.