Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/homalg/doc/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 10.0.2024 mit Größe 15 kB image not shown  

Quelle  chapE.html   Sprache: HTML

 
 products/Sources/formale Sprachen/GAP/pkg/homalg/doc/chapE.html


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>GAP (homalg) - Appendix E: The Core Packages and the Idea behind their Splitting</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="generator" content="GAPDoc2HTML" />
<link rel="stylesheet" type="text/css" href="manual.css" />
<script src="manual.js" type="text/javascript"></script>
<script type="text/javascript">overwriteStyle();</script>
</head>
<body class="chapE"  onload="jscontent()">


<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chap6.html">6</a>  <a href="chap7.html">7</a>  <a href="chap8.html">8</a>  <a href="chap9.html">9</a>  <a href="chap10.html">10</a>  <a href="chap11.html">11</a>  <a href="chap12.html">12</a>  <a href="chapA.html">A</a>  <a href="chapB.html">B</a>  <a href="chapC.html">C</a>  <a href="chapD.html">D</a>  <a href="chapE.html">E</a>  <a href="chapF.html">F</a>  <a href="chapBib.html">Bib</a>  <a href="chapInd.html">Ind</a>  </div>

<div class="chlinkprevnexttop"> <a href="chap0.html">[Top of Book]</a>   <a href="chap0.html#contents">[Contents]</a>    <a href="chapD.html">[Previous Chapter]</a>    <a href="chapF.html">[Next Chapter]</a>   </div>

<p id="mathjaxlink" class="pcenter"><a href="chapE_mj.html">[MathJax on]</a></p>
<p><a id="X849691F37C7AC1B4" name="X849691F37C7AC1B4"></a></p>
<div class="ChapSects"><a href="chapE.html#X849691F37C7AC1B4">E <span class="Heading">The Core Packages and the Idea behind their Splitting</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chapE.html#X7DCE809486D10888">E.1 <span class="Heading">The 6=2+4 split</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chapE.html#X818F306582DFF370">E.1-1 <span class="Heading">Logically independent</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chapE.html#X7EE794358500309A">E.1-2 <span class="Heading">Black boxes</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chapE.html#X786DDEFD85AD19F4">E.1-3 <span class="Heading">Summing up</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chapE.html#X865D30A382B80584">E.2 <span class="Heading">The 4=1+1+1+1 split</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chapE.html#X80FB5BB57BBE5B17">E.2-1 <span class="Heading"><strong class="pkg">HomalgToCAS</strong></span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chapE.html#X86F316DA837A4FE4">E.2-2 <span class="Heading"><strong class="pkg">IO_ForHomalg</strong> and Alternatives</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chapE.html#X78E3E28C81E8DC12">E.2-3 <span class="Heading"><strong class="pkg">RingsForHomalg</strong></span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chapE.html#X7AD8DBE280C58EE9">E.2-4 <span class="Heading">Your own <strong class="pkg">RingsForHomalg</strong></span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chapE.html#X7A0A10B585C49632">E.2-5 <span class="Heading"><strong class="pkg">ExamplesForHomalg</strong></span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chapE.html#X7F4F8D6F7CD6B765">E.2-6 <span class="Heading">Documentation</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chapE.html#X814A1DC581E36F66">E.2-7 <span class="Heading">Crediting</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chapE.html#X78397E8681145827">E.2-8 <span class="Heading">Stability</span></a>
</span>
</div></div>
</div>

<h3>E <span class="Heading">The Core Packages and the Idea behind their Splitting</span></h3>

<p>I will try to explain the idea behind splitting the 6 <em>core packages</em>:</p>

<ol>
<li><p><strong class="pkg">homalg</strong></p>

</li>
<li><p><strong class="pkg">Modules</strong></p>

</li>
<li><p><strong class="pkg">HomalgToCAS</strong></p>

</li>
<li><p><strong class="pkg">IO_ForHomalg</strong></p>

</li>
<li><p><strong class="pkg">RingsForHomalg</strong></p>

</li>
<li><p><strong class="pkg">ExamplesForHomalg</strong></p>

</li>
</ol>
<p><a id="X7DCE809486D10888" name="X7DCE809486D10888"></a></p>

<h4>E.1 <span class="Heading">The 6=2+4 split</span></h4>

<p>The following is an attempt to explain the 6=2+4 split.</p>

<p><a id="X818F306582DFF370" name="X818F306582DFF370"></a></p>

<h5>E.1-1 <span class="Heading">Logically independent</span></h5>

<p>The package <strong class="pkg">homalg</strong> is logically independent from all other packages in the project. And among the six core packages it is together with <strong class="pkg">Modules</strong> the only package that has to do with mathematics. The remaining four packages are of technical nature. More precisely, <strong class="pkg">homalg</strong> is a stand alone package, that offers abstract homological constructions for computable Abelian categories. But since the ring of integers (at least up till now) is the only ring which for the purposes of homological algebra is <em>sufficiently supported</em> in <strong class="pkg">GAP</strong> (--> <a href="https://homalg-project.github.io/homalg_project/Modules/doc/chap1.html#X84913827857A1F7B"><span class="RefLink">Modules: Rings supported in a sufficient way</span></a>), <strong class="pkg">Modules</strong> can put the above mentioned abstract constructions into action only for the ring of integers and by generic (but of course non-efficient) methods for any of its residue class rings (Simon Görtzen's package Gauss adds the missing sufficient support for ℤ/p^n and to GAP and his other package GaussForHomalg makes this support visible to Modules).



<p><a id="X7EE794358500309A" name="X7EE794358500309A"></a></p>

<h5>E.1-2 <span class="Heading">Black boxes</span></h5>

<p>The package <strong class="pkg">Modules</strong> uses rings and matrices over these rings as a black box, enabling other packages to "abuse" <strong class="pkg">homalg</strong> to compute over rings other than the ring of integers by simply providing the appropriate black boxes. And whether these rings and matrices are inside or outside <strong class="pkg">GAP</strong> is not at all the concern of <strong class="pkg">homalg</strong>. Even the <strong class="pkg">GAP</strong> representation for external rings, external ring elements, and external matrices are declared in the package <strong class="pkg">HomalgToCAS</strong> and not in homalg.</p>

<p><a id="X786DDEFD85AD19F4" name="X786DDEFD85AD19F4"></a></p>

<h5>E.1-3 <span class="Heading">Summing up</span></h5>

<p>One of the main concepts of the <strong class="pkg">homalg</strong> project is that high level and low level computations in homological algebra can and <em>should</em> be separated. So splitting <strong class="pkg">homalg</strong> from the remaining 4 core packages is just emphasizing this concept. Moreover, <strong class="pkg">homalg</strong> is up till now by far the biggest package in the project and will probably keep growing by supporting more basic homological constructions, whereas the other 4 packages will remain stable over longer time intervals.</p>

<p><a id="X865D30A382B80584" name="X865D30A382B80584"></a></p>

<h4>E.2 <span class="Heading">The 4=1+1+1+1 split</span></h4>

<p>The following is meant to justify the remaining 4=1+1+1+1 split.</p>

<p><a id="X80FB5BB57BBE5B17" name="X80FB5BB57BBE5B17"></a></p>

<h5>E.2-1 <span class="Heading"><strong class="pkg">HomalgToCAS</strong></span></h5>

<p>The package <strong class="pkg">HomalgToCAS</strong> (which needs the <strong class="pkg">homalg</strong> package) includes all what is needed to let the black boxes used by <strong class="pkg">homalg</strong> reside in external computer algebra systems. So as mentioned above, <strong class="pkg">HomalgToCAS</strong> is the right place to declare the three <strong class="pkg">GAP</strong> representations external rings, external ring elements, and external matrices. Still, <strong class="pkg">HomalgToCAS</strong> is independent from the external computer algebra system with which <strong class="pkg">GAP</strong> will communicate <em>and</em> independent of how this communication physically looks like.</p>

<p><a id="X86F316DA837A4FE4" name="X86F316DA837A4FE4"></a></p>

<h5>E.2-2 <span class="Heading"><strong class="pkg">IO_ForHomalg</strong> and Alternatives</span></h5>

<p>The package <strong class="pkg">IO_ForHomalg</strong> (which needs <strong class="pkg">HomalgToCAS</strong>) allows <strong class="pkg">GAP</strong> to communicate via I/O-streams with computer algebra systems that come with a terminal interface. <strong class="pkg">IO_ForHomalg</strong> uses Max Neunhöffer's IO package, yet it is independent from the specific computer algebra system, as long as the latter provides a terminal interface. Splitting IO_ForHomalg from HomalgToCAS gives the freedom to replace the former by another package that lets GAP communicate with an external system using a different technology. So making IO_ForHomalg a package of its own makes it clear for developers of a new communication method which package of the homalg project has to be imitated/replaced. To be concrete, Thomas Bächler wrote a package called MapleForHomalg that enables GAP to communicate with Maple without the need for a terminal interface.



<p><a id="X78E3E28C81E8DC12" name="X78E3E28C81E8DC12"></a></p>

<h5>E.2-3 <span class="Heading"><strong class="pkg">RingsForHomalg</strong></span></h5>

<p>The package <strong class="pkg">RingsForHomalg</strong> (which needs <strong class="pkg">HomalgToCAS</strong>) provides the details of the black boxes <strong class="pkg">homalg</strong> relies on. The details of the black boxes of course depend on the external computer algebra system (<strong class="pkg">Singular</strong>, <strong class="pkg">MAGMA</strong>, <strong class="pkg">Macaulay2</strong>, <strong class="pkg">Maple</strong>, <strong class="pkg">Sage</strong>, ...), but are independent from the way the communication takes place. So it can be used either with <strong class="pkg">IO_ForHomalg</strong>, with <strong class="pkg">MapleForHomalg</strong>, or with any future communication package.</p>

<p><a id="X7AD8DBE280C58EE9" name="X7AD8DBE280C58EE9"></a></p>

<h5>E.2-4 <span class="Heading">Your own <strong class="pkg">RingsForHomalg</strong></span></h5>

<p>If someone needs to support a ring in some computer algebra system that <strong class="pkg">GAP</strong> can already communicate with, but where the ring is not supported by <strong class="pkg">RingsForHomalg</strong> yet, she or he needs to imitate/replace <strong class="pkg">RingsForHomalg</strong> (as Simon Görtzen did with his <strong class="pkg">GaussForHomalg</strong>, where the computer algebra system was <strong class="pkg">GAP</strong> itself, extended by his package <strong class="pkg">Gauss</strong>). Any substitute for <strong class="pkg">RingsForHomalg</strong> -- as it only needs <strong class="pkg">HomalgToCAS</strong> -- will again be independent from the way how <strong class="pkg">GAP</strong> communicates with the computer algebra system that hosts the ring. This should encourage people to link more external systems to <strong class="pkg">homalg</strong> without being forced to join the development of the package <strong class="pkg">RingsForHomalg</strong>. They can simply write their own package and get the full credit for it.</p>

<p><a id="X7A0A10B585C49632" name="X7A0A10B585C49632"></a></p>

<h5>E.2-5 <span class="Heading"><strong class="pkg">ExamplesForHomalg</strong></span></h5>

<p>The package <strong class="pkg">ExamplesForHomalg</strong> (which needs <strong class="pkg">RingsForHomalg</strong>) contains example scripts over various rings that are written in a universal way, i.e. independent from the system that hosts the rings. These examples cannot be part of the <strong class="pkg">homalg</strong> package as they are defined over rings that <strong class="pkg">GAP</strong> does not support. The package <strong class="pkg">ExamplesForHomalg</strong> is meant to be the package where anyone can contribute interesting examples using <strong class="pkg">homalg</strong> without necessarily contributing to the code of any of the remaining core packages.</p>

<p><a id="X7F4F8D6F7CD6B765" name="X7F4F8D6F7CD6B765"></a></p>

<h5>E.2-6 <span class="Heading">Documentation</span></h5>

<p>Splitting the core packages is part of documenting the project. The complete manuals of the <strong class="pkg">homalg</strong> and <strong class="pkg">ExamplesForHomalg</strong> packages (maybe apart from the appendices) can then be free from any non-mathematical technicalities the average user is not interested in. A documentation of the three packages <strong class="pkg">HomalgToCAS</strong>, <strong class="pkg">IO_ForHomalg</strong>, and <strong class="pkg">RingsForHomalg</strong> will be rather technical and of interest mainly for developers.</p>

<p><a id="X814A1DC581E36F66" name="X814A1DC581E36F66"></a></p>

<h5>E.2-7 <span class="Heading">Crediting</span></h5>

<p>Everyone is encouraged to contribute to the <strong class="pkg">homalg</strong> project. The project follows the philosophy of avoiding huge monolithic packages and splitting unrelated tasks. This should enable contributers to write their own packages (building on other existing packages) and getting the full credit for their work, which can then be easily distinguished from the work of others.</p>

<p><a id="X78397E8681145827" name="X78397E8681145827"></a></p>

<h5>E.2-8 <span class="Heading">Stability</span></h5>

<p>A huge monolithic package can never stabilize, even though parts of it will stay frozen for a long period of time. The splitting makes it likely that parts of the project together with their documentation quickly reach a stable state.</p>


<div class="chlinkprevnextbot"> <a href="chap0.html">[Top of Book]</a>   <a href="chap0.html#contents">[Contents]</a>    <a href="chapD.html">[Previous Chapter]</a>    <a href="chapF.html">[Next Chapter]</a>   </div>


<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chap6.html">6</a>  <a href="chap7.html">7</a>  <a href="chap8.html">8</a>  <a href="chap9.html">9</a>  <a href="chap10.html">10</a>  <a href="chap11.html">11</a>  <a href="chap12.html">12</a>  <a href="chapA.html">A</a>  <a href="chapB.html">B</a>  <a href="chapC.html">C</a>  <a href="chapD.html">D</a>  <a href="chapE.html">E</a>  <a href="chapF.html">F</a>  <a href="chapBib.html">Bib</a>  <a href="chapInd.html">Ind</a>  </div>

<hr />
<p class="foot">generated by <a href="http://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc">GAPDoc2HTML</a></p>
</body>
</html>

100%


¤ Dauer der Verarbeitung: 0.13 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.