Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 A B C D E F Bib Ind
 [Top of Book]  [Contents]   [Next Chapter] 


A homological algebra meta-package for computable Abelian categories

Version 2021.06-01

September 2015

(this manual is still under construction)

This manual is best viewed as an HTML document. The latest version is available online at:

An offline version should be included in the documentation subfolder of the package. This package is part of the homalg-project:

Mohamed Barakat
Department of Mathematics,
University of Siegen,
57072 Siegen,

Markus Lange-Hegermann
Lehrstuhl B für Mathematik, RWTH Aachen, Templergraben 64, 52056 Aachen, Germany


© 2007-2015 by Mohamed Barakat and Markus Lange-Hegermann

This package may be distributed under the terms and conditions of the GNU Public License Version 2 or (at your option) any later version.


Max Neunhöffer not only taught me the philosophy of object-oriented programming in GAP4, but also to what extent this philosophy is still unique among programming languages (--> Why GAP4?). He, Frank Lübeck, and Thomas Breuer patiently answered trillions of specific questions, even those I was too lazy to look up in the excellent reference manual. Without their continuous and tireless help and advice, not only this package but the as a whole homalg project would have remained on my todo list.

A lot of ideas that make up this package and the whole homalg project came out of intensive discussions with Daniel Robertz during our early collaboration, where we developed our philosophy of a meta package for homological algebra and implemented it in Maple. This Maple package homalg is now part of the GAP package RingsForHomalg.

In the fall of 2007 I began collaborating with Simon Görtzen to further pursue and extend these ideas preparing the transition to GAP4. With his help homalg became an extendable multi-package project.

Max Neunhöffer convinced me to use his wonderful IO package to start communicating with external computer algebra systems. This was crucial to remedy the yet missing support for important rings in GAP. Max provided the first piece of code to access the computer algebra system Singular. This was the starting point of the packages HomalgToCAS and IO_ForHomalg, which were further abstracted by Simon and myself enabling homalg to communicate with virtually any external (computer algebra) system.

Thomas Bächler wrote the package MapleForHomalg to directly access Maple via its C-interface. It offers an alternative to the package IO_ForHomalg, which requires Maple's terminal interface cmaple.

The basic support for Sage was added by Simon, and the support for Singular was initiated by Markus Lange-Hegermann and continued by him and Simon, while Markus Kirschmer contributed the complete support for MAGMA. This formed the beginning of the RingsForHomalg package. Recently, Daniel added the support for Macaulay2.

My concerns about how to handle the garbage collection in the external computer algebra systems were evaporated with the idea of Thomas Breuer using the so-called weak pointers in GAP4 to keep track of all the external objects that became obsolete for homalg. This idea took shape in a discussion with him and Frank Lübeck and finally found its way into the package HomalgToCAS.

My gratitude to all with whom I worked together to develop extension packages and those who developed their own packages within the homalg project (--> Appendix E). Without their contributions the package homalg would have remained a core without a body:

I would also like to thank Alban Quadrat for supporting the homalg project and for all the wonderful discussions we had. At several places in the code I was happy to add the comment: "I learned this from Alban".

My teacher Wilhelm Plesken remains an inexhaustible source of extremely broad and deep knowledge. Thank you for being such a magnificent person.

This manual was created using the GAPDoc package of Max Neunhöffer and Frank Lübeck.

Last but not least, thanks to Miriam, Josef, Jonas, and Irene for the endless love and support.

Mohamed Barakat


1 Introduction
2 Installation of the homalg Package
3 Objects
4 Morphisms
5 Elements
6 Complexes
7 Chain Morphisms
8 Bicomplexes
9 Bigraded Objects
10 Spectral Sequences
11 Functors
12 Examples
A The Mathematical Idea behind homalg
B Development
C Logic Subpackages
D Debugging homalg
E The Core Packages and the Idea behind their Splitting
F Overview of the homalg Package Source Code

 [Top of Book]  [Contents]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 A B C D E F Bib Ind

generated by GAPDoc2HTML