[GAP Forum] Chain Complexes: INTRO

Marc Bogaerts marc.bogaerts at cyclone.be
Mon Jun 21 16:56:41 BST 2010


Dear forum members,
A few weeks ago I announced I was going to post some results I had 
writing some
gap functions that permit to represent "chain complexes". First of all I 
have
to make you aware that all this is very inuitive and there are no proofs 
of my
assertions whatsoever. I admit the programming style is clumsy and not 
optimal.
Moreover the notion of "chain complex" is rather vague but can be seen as
purely algebraically abstract.

The idea of a chain complex is based on the notion of n-skeleton. For 
each object in this category, there is a list of skeletons built one 
upon the other. Here is
how a chain complex is built:
First there a set of vertices is chosen. For this 0-skeleton it does not 
matter
what exactly a set contains, only it's number of elements is important. The
command to create a 0-skeleton is simply:
     ChainComplex(0, set), where the first argument is the dimension, 
and the
second argument is any finite set. Example
     c0:=ChainComplex(0, [1..6]);                                     
#line 1
The command for 0- and 1- skeletons differ from those of higher 
dimensions as will
be clear in the following. As an example of the creation of a 1-skeleton 
we could
enter
     c1:=ChainComplex(1, c0,
[[1,2],[2,3],[3,1],[4,5],[5,6],[6,4],[1,4],[2,5],[3,6]]);      #line 2
The arguments are the dimension, the skeleton of dimension 0, and a set of
(order independent) order independent defind by a couple of vertices 
respectively.
A closer inspection shows that these edges form two triangles with the 
respective
vertices joined: The 1-skeleton of a prism.

 From dimension 2 on, the command ChainComplex is standard of the form
     ChainComplex(n, c, list),
where n is the dimension, c is a previously defined n-1 skeleton,
and "list" is a set of vectors of the same length, containing 
coefficients. These
coefficients are associated with objects of the previous skeleton c, the
objects being identified by their position in c. Example based on line 2:
     c2:=ChainComplex(2, c1, [
         [ 1, 0, 0, -1, 0, 0, 1, -1, 0 ], # the face 1,2,5,4
         [ 0, 1, 0, 0, -1, 0, 0, 1, -1 ], # the face 2,3,6,5
         [ 0, 0, 1, 0, 0, -1, -1, 0, 1 ]  # the face 3,1,4,6
]                                                                        
                     # line 3
This 2-skeleton is built on c1 and defines the three lateral square 
faces of the prism.

Some of the examples contain a scheme in ASCII characters. In order to 
distinguish
between the labels of vertices and the labels of edges, the vertices are 
labeled
by an asterix followed by a number. The labels of the edges are written 
on the
edges themselves. I don't have examples where the faces needed to be 
labeled.

I expect to receive your suggestions, comments, questions and 
recommandations for improvement.
I also don't know if it is admissible to add pictures as attachments, 
I've not seen it been doing
here before, but I'll do it anyway unless somebody complains.

Marc Bogaerts.





More information about the Forum mailing list