# &homalg;

A &GAP4; Meta-Package for Homological Algebra
(this manual is still under construction)

This manual is best viewed as an HTML document. The latest version is available online at:
http://homalg.math.rwth-aachen.de/~barakat/homalg/chap0.html

An offline version should be included in the documentation subfolder of the package.

This package is part of the &homalg;-project:
http://homalg.math.rwth-aachen.de/index.php/core-packages/homalg-package
Version <#Include SYSTEM "../VERSION">
Mohamed Barakat

          Department of Mathematics,

          University of Kaiserslautern,

          67653 Kaiserslautern,

          Germany

barakat@mathematik.uni-kl.de http://wwwb.math.rwth-aachen.de/˜barakat/
November 2009
&copyright; 2007-2009 by Mohamed Barakat

This package may be distributed under the terms and conditions of the GNU Public License Version 2.
http://www-groups.mcs.st-and.ac.uk/~neunhoef/
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 (&see; ). The slides (in German) to his talk in our seminar on 30.10.2006 can be found on http://www-groups.mcs.st-and.ac.uk/~neunhoef/Publications/talks.html.

He, http://www.math.rwth-aachen.de/~Frank.Luebeck/Frank Lübeck, and http://www.math.rwth-aachen.de/~Thomas.Breuer/ Thomas Breuer patiently answered trillions of specific questions, even those I was too lazy to look up in the excellent programming tutorialhttp://www.gap-system.org/Manuals/doc/htm/prg/chapters.htm.

Without their continuous and tireless help and advice, not only this package but the &homalg; project as a whole http://homalg.math.rwth-aachen.de/ 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 http://wwwb.math.rwth-aachen.de/~daniel/ during our early collaboration, where we developed our philosophy of a meta package for homological algebra and implemented http://homalg.math.rwth-aachen.de/maple/ it in &Maple;.

In the fall of 2007 I began collaborating with Simon Görtzen http://wwwb.math.rwth-aachen.de/goertzen/ 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.

http://wwwb.math.rwth-aachen.de/~thomas/
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 http://wwwb.math.rwth-aachen.de/~markus/ and continued by him and Simon, while Markus Kirschmer http://www.math.rwth-aachen.de/~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 pointershttp://www.gap-system.org/Manuals/doc/htm/ext/CHAP007.htm 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 (&see; Appendix ). Without their contributions the package &homalg; would have remained a core without a body:

http://wwwb.math.rwth-aachen.de/~thomas/
Barbara Bremer
http://www.math.rwth-aachen.de/~Thomas.Breuer/
Anna Fabiańska
http://wwwb.math.rwth-aachen.de/goertzen/
http://www.math.rwth-aachen.de/~Markus.Kirschmer/
http://wwwb.math.rwth-aachen.de/~markus/
http://www.math.rwth-aachen.de/~Frank.Luebeck/
http://www-groups.mcs.st-and.ac.uk/~neunhoef/
http://wwwb.math.rwth-aachen.de/~daniel/

I would also like to thank Alban Quadrat http://www-sop.inria.fr/members/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 http://wwwb.math.rwth-aachen.de/Mitarbeiter/plesken.php 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.