Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 A B C D E F G H I Bib Ind
 Top of Book   Previous Chapter   Next Chapter 

1 Introduction
 1.1 What is the role of the homalg package in the homalg project?
  1.1-1 Philosophy

  1.1-2 homalg provides ...

  1.1-3 homalg delegates ...

  1.1-4 Rings supported in a sufficient way

  1.1-5 Principal limitation

  1.1-6 The black box concept

  1.1-7 homalg's dictionaries (technical)

  1.1-8 The advantages of the outsourcing concept

  1.1-9 Does this mean that homalg has only algorithms for the generic case?

  1.1-10 The principle of least communication (technical)

  1.1-11 Building upon the homalg package

  1.1-12 Frequently asked questions
 1.2 This manual

1 Introduction

1.1 What is the role of the homalg package in the homalg project?

1.1-1 Philosophy

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.

1.1-2 homalg provides ...

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

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

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.

1.1-3 homalg delegates ...

The package homalg delegates all matrix operations as it treats matrices and their rings as black boxes. homalg comes with a single predefined class of rings and a single predefined class of matrices over these rings -- the so-called internal matrices (--> 6.1-2) over so-called internal rings (--> 4.1-4). An internal matrix (resp. ring) is simply a wrapper containing a GAP-builtin matrix (resp. ring). homalg allows other packages to define further classes or extend existing classes of rings and matrices together with their operations. For example:

The matrix operations are divided into two classes called "Tools" and "Basic". The "Tools" operations include addition, subtraction, multiplication, extracting certain rows or columns, stacking, and augmenting matrices (--> Appendix D). The "Basic" operations include the two basic operations in linear algebra needed to solve an inhomogeneous linear system XA=B with coefficients in a not necessarily commutative ring R (--> Appendix C):

The first operation is nothing but deciding the solvability of the inhomogeneous system XA=B and if solvable to compute a particular solution X, while the second is to compute an R-generating set for the homogeneous solution space, i.e. the solution space of the homogeneous system YA=0 (--> Rings supported in a sufficient way). The above is of course also valid for the column convention.

1.1-4 Rings supported in a sufficient way

Through out this manual the following terminology is used. We say that a computer algebra system "sufficiently supports" a ring R, if it contains procedures to effectively solve one-sided inhomogeneous linear systems XA=B and AX=B with coefficients over R (--> Principal limitation).

1.1-5 Principal limitation

Note that the solution space of the one-sided finite dimensional system YA=0 (resp. AY=0) over a left (resp. right) noetherian ring R is a finitely generated left (resp. right) R-module, even if R is not commutative. The solution space of the linear system X_1 A_1 + A_2 X_2 + A_3 X_3 A_4=0 is in general not an R-module, and worse, in general not finitely generated over the center of R. homalg can only handle homological problems that lead to one sided finite dimensional homogeneous or inhomogeneous systems over the underlying ring R. Such problems are called problems of finite type over R. Typically, the computation of Hom(M,N) of two (even) finitely generated modules over a noncommutative ring R is generally not of finite type over R, unless at least one of the two modules is an R-bimodule. Also note that over a commutative ring any linear system can be easily brought to a one-sided form. For more details see [BR08].

1.1-6 The black box concept

Now we address the following concerns: Wouldn't the idea of using algorithms like the Gröbnerbasis algorithm(s) as a black box (--> homalg delegates ...) contradict the following facts?

The following should clarify the above concerns.

See also 3.1.

1.1-7 homalg's dictionaries (technical)

homalg uses the so-called homalgTable, which is stored in the ring, to know how to delegate the necessary matrix operations. I.e. the homalgTable serves as a small dictionary that enables homalg to speak (as much as needed of) the language of the computer algebra system which hosts the ring and the matrices. The GAP internal ring of integers is the only ring which homalg endows with a homalgTable. Other packages like GaussForHomalg and RingsForHomalg provide dictionaries for further rings. While GaussForHomalg defines internal rings and matrices, the package RingsForHomalg enables defining external rings and matrices in a wide range of (external) computer algebra systems (Singular, Sage, Macaulay2, MAGMA, Maple) by providing appropriate dictionaries.

Since these dictionaries are all what is needed to handle matrix operations, homalg does not distinguish between handling internal and handling external matrices. Even the physical communication with the external systems is not at all a concern of homalg. This is the job of the package IO_ForHomalg, which is based on the powerful IO package of Max Neunhöffer. Furthermore, for all structures beyond matrices (from relations, generators, and modules, to functors and spectral sequences) homalg no longer distinguishes between internal and external.

1.1-8 The advantages of the outsourcing concept

Linking different systems to achieve one task is a highly attractive idea, especially if it helps to avoid reinventing wheels over and over again. This was essential for homalg, since Singular and MAGMA provide the fastest and most advanced Gröbner basis algorithms, while GAP4 is by far the most convenient programming language to realize complex mathematical structures (--> Appendix Why GAP4?). Second, the implementation of the homological constructions is automatically universal, since it is independent of where the matrices reside and how the several matrix operations are realized. In particular, homalg will always be able to use the system with the fastest Gröbner basis implementation. In this respect is homalg and all packages that build upon it future proof.

1.1-9 Does this mean that homalg has only algorithms for the generic case?

No, on the contrary. There are a lot of specialized algorithms installed in homalg. These algorithms are based on properties and attributes that -- thanks to GAP4 -- homalg objects can carry (--> Appendix A.2-4): Not only can homalg take the special nature of the underlying ring into account, it also deals with modules, complexes, ... depending on their special properties. Still, these special algorithms, like all algorithms in homalg, are independent of the computer algebra system which hosts the matrices and which will perform the several matrix operations.

1.1-10 The principle of least communication (technical)

Linking different systems can also be highly problematic. The following two points are often among the major sources of difficulties:

Solving these two difficulties is an important part of homalg's design. homalg splits homological computations into two parts. The matrices reside in a system which provides fast matrix operations (addition, multiplication, bases and normal form computations), while the higher structures (modules, maps, complexes, chain maps, spectral sequences, functors, ...) with their properties, attributes, and algorithms live in GAP4, as the system where one can easily create such complex structures and handle all their logical dependencies. With this split there is no need to transfer each sort of data outside of its system. The remaining communication between GAP4 and the system hosting the matrices gets along with a tiny dictionary. Moreover, GAP4, as it manages and delegates all computations, also manages the whole data flow, while the other system does not even recognize that it is part of a bidirectional communication.

The existence of such a clear cut is certainly to some extent due to the special nature of homological computations.

1.1-11 Building upon the homalg package

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:

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.

1.1-12 Frequently asked questions

1.2 This manual

Chapter 2 describes the installation of this package, while Chapter 3 provides a short quick guide to build your first own example, using the package ExamplesForHomalg. The remaining chapters are each devoted to one of the homalg objects (--> 1.1-2) with its constructors, properties, attributes, and operations.

 Top of Book   Previous Chapter   Next Chapter 
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 A B C D E F G H I Bib Ind

generated by GAPDoc2HTML