<h4>3.1 <span class="Heading">Why are all examples in this manual over ℤ or <span class="SimpleMath">ℤ/mℤ</span>?</span></h4>
<p>As the reader might notice, all examples in this manual will be either over ℤ or over one of its residue class rings <span class="SimpleMath">ℤ/mℤ</span>. There are two reasons for this. The first reason is that <strong class="pkg">GAP</strong> does not natively support rings other than ℤ in a <em>sufficient</em> way (--> <a href="chap1.html#X84913827857A1F7B"><span class="RefLink">Rings supported in a sufficient way</span></a>).</p>
<p>The second and more important reason is to underline the fact the all effective homological constructions that are relevant for <strong class="pkg">Modules</strong> have only as much to do with the Gröbnerbasis algorithm as they do with the Hermite algorithm for the ring ℤ; both algorithms are used to effectively solve inhomogeneous linear systems over the respective ring. And <strongclass="pkg">Modules</strong> is designed to use rings and matrices over these rings together with all their operations as a black box. In other words: Because <strong class="pkg">Modules</strong> works for <span class="SimpleMath">ℤ</span>, it works by its design for all other computable rings.</p>
<p>To quickly create a ring for use with <strong class="pkg">Modules</strong> enter<br /> <br /> <code class="code">ExamplesForHomalg();</code><br /> <br /> which will load the package <strong class="pkg">ExamplesForHomalg</strong> (if installed) and provide a step by step guide to create the ring. For the full core functionality you need to install the packages <strong class="pkg">homalg</strong>, <strong class="pkg">HomalgToCAS</strong>, <strong class="pkg">IO_ForHomalg</strong>, <strong class="pkg">RingsForHomalg</strong>, <strong class="pkg">Gauss</strong>, and <strong class="pkg">GaussForHomalg</strong>. They are part of the <strong class="pkg">homalg</strong> project.</p>
<p>The following example is taken from Section 2 of <a href="chapBib.html#biBBREACA">[BR06]</a>. <br /> <br /> The computation takes place over the residue class ring <span class="SimpleMath">R=ℤ/2^8ℤ</span> using the generic support for residue class rings provided by the subpackage <strong class="pkg">ResidueClassRingForHomalg</strong> of the <strong class="pkg">MatricesForHomalg</strong> package. For a native support of the rings <span class="SimpleMath">R=ℤ/p^nℤ</span> use the <strong class="pkg">GaussForHomalg</strong> package.</p>
<p>Here we compute the (infinite) long exact homology sequence of the covariant functor <span class="SimpleMath">Hom(Hom(-,ℤ/2^7ℤ),ℤ/2^4ℤ)</span> (and its left derived functors) applied to the short exact sequence<br /> <br /> <span class="SimpleMath">0 -> M_=ℤ/2^2ℤ --alpha_1--> M=ℤ/2^5ℤ --alpha_2--> _M=ℤ/2^3ℤ -> 0</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz := HomalgRingOfIntegers( );</span>
Z
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( zz );</span>
<An internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">R := zz / 2^8;</span>
Z/( 256 )
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( R );</span>
<A residue class ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">M := LeftPresentation( [ 2^5 ], R );</span>
<A cyclic left module presented by 1 relation for a cyclic generator>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( M );</span>
Z/( 256 )/< |[ 32 ]| >
<span class="GAPprompt">gap></span> <span class="GAPinput">_M := LeftPresentation( [ 2^3 ], R );</span>
<A cyclic left module presented by 1 relation for a cyclic generator>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( _M );</span>
Z/( 256 )/< |[ 8 ]| >
<span class="GAPprompt">gap></span> <span class="GAPinput">alpha2 := HomalgMap( [ 1 ], M, _M );</span>
<A "homomorphism" of left modules>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsMorphism( alpha2 );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">alpha2;</span>
<A homomorphism of left modules>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( alpha2 );</span>
[ [ 1 ] ]
modulo [ 256 ]
the map is currently represented by the above 1 x 1 matrix
<span class="GAPprompt">gap></span> <span class="GAPinput">M_ := Kernel( alpha2 );</span>
<A cyclic left module presented by yet unknown relations for a cyclic generato\
r>
<span class="GAPprompt">gap></span> <span class="GAPinput">alpha1 := KernelEmb( alpha2 );</span>
<A monomorphism of left modules>
<span class="GAPprompt">gap></span> <span class="GAPinput">seq := HomalgComplex( alpha2 );</span>
<An acyclic complex containing a single morphism of left modules at degrees
[ 0 .. 1 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">Add( seq, alpha1 );</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">seq;</span>
<A sequence containing 2 morphisms of left modules at degrees [ 0 .. 2 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsShortExactSequence( seq );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">seq;</span>
<A short exact sequence containing 2 morphisms of left modules at degrees
[ 0 .. 2 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( seq );</span>
-------------------------
at homology degree: 2
Z/( 256 )/< |[ 4 ]| >
-------------------------
[ [ 8 ] ]
modulo [ 256 ]
the map is currently represented by the above 1 x 1 matrix
------------v------------
at homology degree: 1
Z/( 256 )/< |[ 32 ]| >
-------------------------
[ [ 1 ] ]
modulo [ 256 ]
the map is currently represented by the above 1 x 1 matrix
------------v------------
at homology degree: 0
Z/( 256 )/< |[ 8 ]| >
-------------------------
<span class="GAPprompt">gap></span> <span class="GAPinput">K := LeftPresentation( [ 2^7 ], R );</span>
<A cyclic left module presented by 1 relation for a cyclic generator>
<span class="GAPprompt">gap></span> <span class="GAPinput">L := RightPresentation( [ 2^4 ], R );</span>
<A cyclic right module on a cyclic generator satisfying 1 relation>
<span class="GAPprompt">gap></span> <span class="GAPinput">triangle := LHomHom( 4, seq, K, L, "t");</span>
<An exact triangle containing 3 morphisms of left complexes at degrees
[ 1, 2, 3, 1 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">lehs := LongSequence( triangle );</span>
<A sequence containing 14 morphisms of left modules at degrees [ 0 .. 14 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">ByASmallerPresentation( lehs );</span>
<A non-zero sequence containing 14 morphisms of left modules at degrees
[ 0 .. 14 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsExactSequence( lehs );</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">lehs;</span>
<A non-zero left acyclic complex containing
14 morphisms of left modules at degrees [ 0 .. 14 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">Assert( 0, IsLeftAcyclic( lehs ) );</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( lehs );</span>
-------------------------
at homology degree: 14
Z/( 256 )/< |[ 4 ]| >
-------------------------
[ [ 4 ] ]
modulo [ 256 ]
the map is currently represented by the above 1 x 1 matrix
------------v------------
at homology degree: 13
Z/( 256 )/< |[ 8 ]| >
-------------------------
[ [ 2 ] ]
modulo [ 256 ]
the map is currently represented by the above 1 x 1 matrix
------------v------------
at homology degree: 12
Z/( 256 )/< |[ 8 ]| >
-------------------------
[ [ 2 ] ]
modulo [ 256 ]
the map is currently represented by the above 1 x 1 matrix
------------v------------
at homology degree: 11
Z/( 256 )/< |[ 4 ]| >
-------------------------
[ [ 4 ] ]
modulo [ 256 ]
the map is currently represented by the above 1 x 1 matrix
------------v------------
at homology degree: 10
Z/( 256 )/< |[ 8 ]| >
-------------------------
[ [ 2 ] ]
modulo [ 256 ]
the map is currently represented by the above 1 x 1 matrix
------------v------------
at homology degree: 9
Z/( 256 )/< |[ 8 ]| >
-------------------------
[ [ 2 ] ]
modulo [ 256 ]
the map is currently represented by the above 1 x 1 matrix
------------v------------
at homology degree: 8
Z/( 256 )/< |[ 4 ]| >
-------------------------
[ [ 4 ] ]
modulo [ 256 ]
the map is currently represented by the above 1 x 1 matrix
------------v------------
at homology degree: 7
Z/( 256 )/< |[ 8 ]| >
-------------------------
[ [ 2 ] ]
modulo [ 256 ]
the map is currently represented by the above 1 x 1 matrix
------------v------------
at homology degree: 6
Z/( 256 )/< |[ 8 ]| >
-------------------------
[ [ 2 ] ]
modulo [ 256 ]
the map is currently represented by the above 1 x 1 matrix
------------v------------
at homology degree: 5
Z/( 256 )/< |[ 4 ]| >
-------------------------
[ [ 4 ] ]
modulo [ 256 ]
the map is currently represented by the above 1 x 1 matrix
------------v------------
at homology degree: 4
Z/( 256 )/< |[ 8 ]| >
-------------------------
[ [ 2 ] ]
modulo [ 256 ]
the map is currently represented by the above 1 x 1 matrix
------------v------------
at homology degree: 3
Z/( 256 )/< |[ 8 ]| >
-------------------------
[ [ 2 ] ]
modulo [ 256 ]
the map is currently represented by the above 1 x 1 matrix
------------v------------
at homology degree: 2
Z/( 256 )/< |[ 4 ]| >
-------------------------
[ [ 8 ] ]
modulo [ 256 ]
the map is currently represented by the above 1 x 1 matrix
------------v------------
at homology degree: 1
Z/( 256 )/< |[ 16 ]| >
-------------------------
[ [ 1 ] ]
modulo [ 256 ]
the map is currently represented by the above 1 x 1 matrix
------------v------------
at homology degree: 0
Z/( 256 )/< |[ 8 ]| >
-------------------------
</pre></div>
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.