CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.

| Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

Views: 418346
1
2
1 Introduction
3
4
5
1.1 What is the role of the Modules package in the homalg project?
6
7
8
1.1-1 Modules provides ...
9
10
It provides procedures to construct basic objects in homological algebra:
11
12
 modules (generators, relations)
13
14
 submodules (as images of maps)
15
16
 maps
17
18
Beside these so-called constructors Modules provides operations to perform
19
computations with these objects. The list of operations includes:
20
21
 resolution of modules
22
23
 images of maps
24
25
 the functors Hom and TensorProduct (Ext and Tor are then provided by
26
homalg)
27
28
 test if a module is torsion-free, reflexive, projective, stably free,
29
free, pure
30
31
 determine the rank, grade, projective dimension, degree of
32
torsion-freeness, and codegree of purity of a module
33
34
Using the philosophy of GAP4, one or more methods are installed for each
35
operation, depending on properties and attributes of these objects. These
36
properties and attributes can themselves be computed by methods installed
37
for this purpose.
38
39
40
1.1-2 Rings supported in a sufficient way
41
42
Through out this manual the following terminology is used. We say that a
43
computer algebra system sufficiently supports a ring R, if it contains
44
procedures to effectively solve one-sided inhomogeneous linear systems XA=B
45
and AX=B with coefficients over R (--> 1.1-3).
46
47
48
1.1-3 Principal limitation
49
50
Note that the solution space of the one-sided finite dimensional system YA=0
51
(resp. AY=0) over a left (resp. right) noetherian ring R is a finitely
52
generated left (resp. right) R-module, even if R is not commutative. The
53
solution space of the linear system X_1 A_1 + A_2 X_2 + A_3 X_3 A_4=0 is in
54
general not an R-module, and worse, in general not finitely generated over
55
the center of R. Modules can only handle homological problems that lead to
56
one sided finite dimensional homogeneous or inhomogeneous systems over the
57
underlying ring R. Such problems are called problems of finite type over R.
58
Typically, the computation of Hom(M,N) of two (even) finitely generated
59
modules over a noncommutative ring R is generally not of finite type over R,
60
unless at least one of the two modules is an R-bimodule. Also note that over
61
a commutative ring any linear system can be easily brought to a one-sided
62
form. For more details see [BR08].
63
64
65
1.1-4 Ring dictionaries (technical)
66
67
Modules uses the so-called homalgTable, which is stored in the ring, to know
68
how to delegate the necessary matrix operations. I.e. the homalgTable serves
69
as a small dictionary that enables Modules to speak (as much as needed of)
70
the language of the computer algebra system which hosts the ring and the
71
matrices. The GAP internal ring of integers is the only ring which Modules
72
endows with a homalgTable. Other packages like GaussForHomalg and
73
RingsForHomalg provide dictionaries for further rings. While GaussForHomalg
74
defines internal rings and matrices, the package RingsForHomalg enables
75
defining external rings and matrices in a wide range of (external) computer
76
algebra systems (Singular, Sage, Macaulay2, MAGMA, Maple) by providing
77
appropriate dictionaries.
78
79
Since these dictionaries are all what is needed to handle matrix operations,
80
Modules does not distinguish between handling internal and handling external
81
matrices. Even the physical communication with the external systems is not
82
at all a concern of Modules. This is the job of the package IO_ForHomalg,
83
which is based on the powerful IO package of Max Neunhöffer. Furthermore,
84
for all structures beyond matrices (from relations, generators, and modules,
85
to functors and spectral sequences) Modules no longer distinguishes between
86
internal and external.
87
88
89
1.1-5 The advantages of the outsourcing concept
90
91
Linking different systems to achieve one task is a highly attractive idea,
92
especially if it helps to avoid reinventing wheels over and over again. This
93
was essential for homalg, since Singular and MAGMA provide the fastest and
94
most advanced Gröbner basis algorithms, while GAP4 is by far the most
95
convenient programming language to realize complex mathematical structures
96
(--> Appendix 'homalg: Why GAP4?'). Second, the implementation of the
97
homological constructions is automatically universal, since it is
98
independent of where the matrices reside and how the several matrix
99
operations are realized. In particular, homalg will always be able to use
100
the system with the fastest Gröbner basis implementation. In this respect is
101
homalg and all packages that build upon it future proof.
102
103
104
1.1-6 Does this mean that homalg has only algorithms for the generic case?
105
106
No, on the contrary. There are a lot of specialized algorithms installed in
107
homalg. These algorithms are based on properties and attributes that --
108
thanks to GAP4 -- homalg objects can carry (--> Appendix 'homalg: GAP4 is a
109
mathematical object-oriented programming language'): Not only can homalg
110
take the special nature of the underlying ring into account, it also deals
111
with modules, complexes, ... depending on their special properties. Still,
112
these special algorithms, like all algorithms in homalg, are independent of
113
the computer algebra system which hosts the matrices and which will perform
114
the several matrix operations.
115
116
117
1.1-7 The principle of least communication (technical)
118
119
Linking different systems can also be highly problematic. The following two
120
points are often among the major sources of difficulties:
121
122
 Different systems use different languages:
123
It takes a huge amount of time and effort to teach systems the
124
dialects of each others. These dialects are also rarely fixed forever,
125
and might very well be subject to slight modifications. So the larger
126
the dictionary, the more difficult is its maintenance.
127
128
 Data has to be transferred from one system to another:
129
Even if there is a unified data format, transferring data between
130
systems can lead to performance losses, especially when a big amount
131
of data has to be transferred.
132
133
Solving these two difficulties is an important part of Modules's design.
134
Modules splits homological computations into two parts. The matrices reside
135
in a system which provides fast matrix operations (addition, multiplication,
136
bases and normal form computations), while the higher structures (modules,
137
maps, complexes, chain morphisms, spectral sequences, functors, ...) with
138
their properties, attributes, and algorithms live in GAP4, as the system
139
where one can easily create such complex structures and handle all their
140
logical dependencies. With this split there is no need to transfer each sort
141
of data outside of its system. The remaining communication between GAP4 and
142
the system hosting the matrices gets along with a tiny dictionary. Moreover,
143
GAP4, as it manages and delegates all computations, also manages the whole
144
data flow, while the other system does not even recognize that it is part of
145
a bidirectional communication.
146
147
The existence of such a clear cut is certainly to some extent due to the
148
special nature of homological computations.
149
150
151
1.1-8 Frequently asked questions
152
153
 Q: Does outsourcing the matrices mean that Modules is able to compute
154
spectral sequences, for example, without ever seeing the matrices
155
involved in the computation?
156
A: Yes.
157
158
 Q: Can Modules profit from the implementation of homological
159
constructions like Hom, Ext, ... in Singular?
160
A: No. This is for a lot of reasons incompatible with the idea and
161
design (--> 1) of Modules.
162
163
 Q: Are the external systems involved in the higher algorithms?
164
A: No. They host all the matrices and do all matrix operations
165
delegated to them without knowing what for. The meaning of the
166
matrices and their logical interrelation is only known to GAP4.
167
168
 Q: Do developers of packages building upon Modules need to know
169
anything about the communication with the external systems?
170
A: No, unless they want to use more features of the external systems
171
than those reflected by Modules. For this purpose, developers can use
172
the unified communication interface provideb by HomalgToCAS. This is
173
the interface used by Modules.
174
175
176
1.2 This manual
177
178
Chapter 2 describes the installation of this package, while Chapter 3
179
provides a short quick guide to build your first own example, using the
180
package ExamplesForHomalg. The remaining chapters are each devoted to one of
181
the homalg objects (--> 1.1-1) with its constructors, properties,
182
attributes, and operations.
183
184
185