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