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