The package **homalg** is meant to be the first part of a continuously growing open source multi volume book about homological and homotopical algebra. **homalg** is an attempt to translate as much as possible of homological algebra, as can be found in books like [CE99], [ML63], [HS97], [Rot79], [Wei94], and [GM03], into a language that a computer can directly understand. But just like the aforementioned books, **homalg** should, to a great extent, be readable by a mathematician, even without deep programming knowledge. For the reasons mentioned in (--> Appendix Why GAP4?) **GAP4** was chosen as the language of **homalg**.

The package **homalg** is the foundational part of the project. It provides procedures to construct basic objects in homological algebra:

filtrations of objects

complexes (of objects and of complexes)

chain morphisms

bicomplexes

bigraded (differential) objects

spectral sequences

functors

Beside these so-called constructors **homalg** provides operations to perform computations with these objects. The list of operations includes:

computation of subfactor objects

applying functors (like

`Ext`

,`Tor`

, ...) to objects, morphisms, complexes and chain morphismsderivation and composition of functors

horse shoe resolution of short exact sequences of objects

connecting homomorphisms and long exact sequences

Cartan-Eilenberg resolution of complexes

hyper (co)homology

spectral sequences of bicomplexes

the Grothendieck spectral sequences associated to two composable functors

test if an object is torsion-free, reflexive, projective, stably free, pure

determine the rank, grade, projective dimension, degree of torsion-freeness, and codegree of purity of an object

Using the philosophy of **GAP4**, one or more methods are installed for each operation, depending on properties and attributes of these objects. These properties and attributes can themselves be computed by methods installed for this purpose.

As mentioned above, the package **homalg** should only be the first and foundational part of the **homalg** project. On the one hand it is designed independently of the details of the different matrix operations, which other packages are meant to provide. Typically, these packages (like **RingsForHomalg**) heavily rely on existing, well tested, and optimized systems like **Singular**, **Macaulay2**, or **MAGMA**. On the other hand other packages can be built upon or extend the **homalg** package in different ways:

add constructors (sheaves, schemes, simplicial sets, ...)

add methods for basic operation (Yoneda products, Massey products, Steenrod operations, ...)

add methods to compute sheaf cohomology, local cohomology, Hochschild (co)homology, cyclic (co)homology...

provide algorithms for holonomic \(D\)-modules based on the restriction algorithm: localization, computing tensor products,

`Hom`

,`Ext`

, de Rham cohomology, ...support change of rings, Lyndon/Hochschild-Serre spectral sequence, base change spectral sequences, ...

support perturbation techniques, Serre and Eilenberg-Moore spectral sequence of simplicial spaces of infinite type, ...

...

The project will remain open and contributions are highly welcome. The different packages will be attributed to their respective authors. The whole project will be attributed to the "**homalg** team", i.e. the authors and contributers of all packages in the project.

Chapter 2 describes the installation of this package. The remaining chapters are each devoted to one of the **homalg** objects (--> 1.1-2) with its constructors, properties, attributes, and operations.

generated by GAPDoc2HTML