Introduction to homalg
homalg is a Maple package that implements a lot of basic homological algebra
constructions in an abstract way. This means, these constructions are implemented
independently of any specific ring. Whenever one wants to perform concrete
homological computations over a ring, one specifies a so-called ring package
implementing the arithmetics of that ring: the package must provide a procedure
which effectively solves the ideal membership problem and another one which
computes a generating set of syzygies for a finite set of relations.
The main facilities of homalg are the following:
- tensor product module of two modules over a commutative ring,
- dual module over a ring with involution,
- module of homomorphisms between two modules over a commutative ring,
- computation of kernels, cokernels, defects of homomorphisms,
pullbacks and pushouts,
- derivation of functors,
- satellites,
- connecting homomorphisms,
- long exact (co)homology sequences,
- composition of functors,
- from n-cocycles to n-extensions and back,
- Yoneda product,
- ...
The following Maple ring packages have successfully been used with homalg.
In each of the following descriptions we append a list of rings which can be dealt
with in homalg using the respective package. Further, and without any extra
help from the ring package, homalg can automatically compute over residue
class rings of any supported ring.
- PIR is a
tiny package, or rather a pseudo package, that makes Maple's built-in facilities
for dealing with integers and some other principal ideal rings available to
homalg.
(Prime subfields Q and Z/pZ and their finite field extensions,
realized as primitive extensions, rational function fields over the previous fields,
the integers Z, the Gaussian integers Z[√-1] and univariate
polynomial rings Z/pZ[x], where p is a prime,
Q[x] and K[x], where K is a rational function
field over a finite extension of Q, realized as a primitive extension.)
- Involutive
implements the involutive basis technique of V. P. Gerdt and
Y. A. Blinkov in Maple. An involutive basis is a special kind of
Gröbner basis for an ideal of a polynomial ring or, more generally, for a submodule of a
free module over a polynomial ring. Involutive bases have nice combinatorial
properties [PR05],
and the algorithms designed by
V. P. Gerdt and Y. A. Blinkov
[Ger05], [GB98a],
[GB98b]
compute them efficiently. In fact, these algorithms provide an efficient
alternative to Buchberger's algorithm [Buc65]
to compute Gröbner bases.
The packages Involutive, Janet, and JanetOre
restricts to particular involutive bases, namely Janet bases. It also
provides an interface to a C++ implementation of the involutive basis
technique which can be used to call the fast routines when needed as well as
to switch to these fast routines for the whole Maple session.
(Commutative polynomial rings: S[x1, ..., xn], where S is either Z or a field existing in Maple.)
- Janet
implements the involutive basis technique for computing
Janet bases of linear systems of partial differential equations.
(Differential algebras over differential fields:
K[∂/∂x1, ..., ∂/∂xn], where K is a
differential field which exists in Maple.)
- JanetOre
generalizes Involutive
from commutative polynomial rings to certain iterated skew polynomial rings. In particular,
it computes Janet bases for left ideals in Ore algebras
[CS98].
(K[∂; σ, δ], where K is a polynomial ring
over a field, ∂ a new indeterminate, σ is a certain automorphism of K
and δ a σ-derivation of K, and iterated extensions of this kind.)
- OreModules
[CQR07]
is a Maple package for the study of structural properties of linear systems over
Ore algebras, i.e. linear equations involving certain linear functional operators which
can be considered as elements of an Ore algebra. By default, it uses the Maple package
Ore_algebra [CS98] to compute Gröbner bases, but
these calls can also be switched to JanetOre.
(Ore algebras [CS98] and the iterated skew polynomial
rings from the previous point.)
homalg is also able to make use of various normal form algorithms for modules
resp. special types of modules over various rings, which are used to provide a standard
form for a presentation of these modules:
- PIR uses
the Smith normal form for (Maple-built-in) principal ideal rings.
- Janet
optionally uses the Jacobson normal form for
univariate differential rings, i.e. rings of the form K[∂],
where K is a differential field with ∂ a derivation of K.
- Involutive
optionally uses the extension package
QuillenSuslin
written by Anna Fabianska
[Fab06] [FQ07]
implementing the Quillen-Suslin theorem to
compute a free basis of a projective module over a polynomial ring (which
is then free by the theorem).
- OreModules
optionally uses the extension package
Stafford [QR07]
which computes a free basis using the Stafford algorithm for a stably free module of rank at least 2 over the Weyl
algebras k[x1,...,xn,∂1,...,
∂n] and
k(x1,...,xn)[∂1,...,∂n],
with k a field of characteristic 0.
Historically, homalg was created due to the repeated need for
implementations of constructions from homological algebra over different rings,
e.g. Involutive, Janet, and JanetOre demanded for such
constructions, and the authors realized that they had to tackle the problem
of finding a way to implement these constructions independently of the ring.