products/sources/formale Sprachen/C/Firefox/gfx/layers/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 10.2.2025 mit Größe 4 kB image not shown  

Quelle  chap7_mj.html   Sprache: unbekannt

 
<?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>
<script type="text/javascript"
  src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<title>GAP (Modules) - Chapter 7: Modules</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="chap7"  onload="jscontent()">


<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0_mj.html">Top</a>  <a href="chap1_mj.html">1</a>  <a href="chap2_mj.html">2</a>  <a href="chap3_mj.html">3</a>  <a href="chap4_mj.html">4</a>  <a href="chap5_mj.html">5</a>  <a href="chap6_mj.html">6</a>  <a href="chap7_mj.html">7</a>  <a href="chap8_mj.html">8</a>  <a href="chap9_mj.html">9</a>  <a href="chap10_mj.html">10</a>  <a href="chap11_mj.html">11</a>  <a href="chap12_mj.html">12</a>  <a href="chap13_mj.html">13</a>  <a href="chapA_mj.html">A</a>  <a href="chapB_mj.html">B</a>  <a href="chapC_mj.html">C</a>  <a href="chapBib_mj.html">Bib</a>  <a href="chapInd_mj.html">Ind</a>  </div>

<div class="chlinkprevnexttop"> <a href="chap0_mj.html">[Top of Book]</a>   <a href="chap0_mj.html#contents">[Contents]</a>    <a href="chap6_mj.html">[Previous Chapter]</a>    <a href="chap8_mj.html">[Next Chapter]</a>   </div>

<p id="mathjaxlink" class="pcenter"><a href="chap7.html">[MathJax off]</a></p>
<p><a id="X8183A6857B0C3633" name="X8183A6857B0C3633"></a></p>
<div class="ChapSects"><a href="chap7_mj.html#X8183A6857B0C3633">7 <span class="Heading">Modules</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7_mj.html#X7C7EBD2383B99C43">7.1 <span class="Heading">Modules: Category and Representations</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X8429977B7FD30F32">7.1-1 IsHomalgModule</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7FB182707ADDF903">7.1-2 IsFinitelyPresentedModuleOrSubmoduleRep</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X87D53DCC822C8C92">7.1-3 IsFinitelyPresentedModuleRep</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7BFA03B6820E9E55">7.1-4 IsFinitelyPresentedSubmoduleRep</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7_mj.html#X7DB16C4B87DD115F">7.2 <span class="Heading">Modules: Constructors</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7EC09F6B83CA4068">7.2-1 LeftPresentation</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7A0C400A8042C284">7.2-2 RightPresentation</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X8067510285E38110">7.2-3 HomalgFreeLeftModule</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7D9133C6837FDFE7">7.2-4 HomalgFreeRightModule</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X86EA38328275C44E">7.2-5 HomalgZeroLeftModule</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X8796A5957C40155C">7.2-6 HomalgZeroRightModule</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X87BE93798001D733"><code>7.2-7 \*</code></a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X84C6C8227814E2BC">7.2-8 Subobject</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X811E74A98454101E">7.2-9 Subobject</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X8498CB457DD55DF2">7.2-10 LeftSubmodule</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X8383318085374771">7.2-11 RightSubmodule</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7_mj.html#X83CC1D6079AA2286">7.3 <span class="Heading">Modules: Properties</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7DA27D338374FD28">7.3-1 IsCyclic</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7B547E8A7969F772">7.3-2 IsHolonomic</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X8393BC5779647A88">7.3-3 IsReduced</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X78020A71848F9FDD">7.3-4 IsPrimeIdeal</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X86160C4E797D12DD">7.3-5 IsPrimeModule</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7_mj.html#X78A9979B862BD51D">7.4 <span class="Heading">Modules: Attributes</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X791F809B8432847F">7.4-1 ResidueClassRing</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7F30DD127FAC8994">7.4-2 PrimaryDecomposition</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X839DA707838F72DC">7.4-3 RadicalDecomposition</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7D1D919186E5E73A">7.4-4 ModuleOfKaehlerDifferentials</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7F4B638C7D27C7B2">7.4-5 RadicalSubobject</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X829AFC557B7E49AF">7.4-6 SymmetricAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7AC2D54385C15EBD">7.4-7 ExteriorAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7EB20A71864D46BF">7.4-8 ElementaryDivisors</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7B83CC6485B028E1">7.4-9 FittingIdeal</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X8671FA1F820AA86D">7.4-10 NonFlatLocus</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X84FECA07854053BE">7.4-11 LargestMinimalNumberOfLocalGenerators</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7809E0507E882674">7.4-12 CoefficientsOfUnreducedNumeratorOfHilbertPoincareSeries</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7938E13A7EF4ADB1">7.4-13 CoefficientsOfNumeratorOfHilbertPoincareSeries</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X781E2CDB8743B1C6">7.4-14 UnreducedNumeratorOfHilbertPoincareSeries</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7C44039382DD5D91">7.4-15 NumeratorOfHilbertPoincareSeries</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7B93B7D082A50E61">7.4-16 HilbertPoincareSeries</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X87C428A079000336">7.4-17 AffineDegree</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7F8203B47EF626A5">7.4-18 DataOfHilbertFunction</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X81F1F3EB868D2117">7.4-19 HilbertFunction</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7AE7FCEA807D189E">7.4-20 IndexOfRegularity</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7_mj.html#X7DDA6B237C17BDBA">7.5 <span class="Heading">Modules: Operations and Functions</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7DDA4A357F4868A0">7.5-1 HomalgRing</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X840D0B4F8798C370">7.5-2 ByASmallerPresentation</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X7AE6575D81856ECB"><code>7.5-3 \*</code></a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap7_mj.html#X84D89101872CEA2A">7.5-4 SubobjectQuotient</a></span>
</div></div>
</div>

<h3>7 <span class="Heading">Modules</span></h3>

<p>A <strong class="pkg">homalg</strong> module is a data structure for a finitely presented module. A presentation is given by a set of generators and a set of relations among these generators. The data structure for modules in <strong class="pkg">homalg</strong> has two novel features:</p>


<ul>
<li><p>The data structure allows several presentations linked with so-called transition matrices. One of the presentations is marked as the default presentation, which is usually the last added one. A new presentation can always be added provided it is linked to the default presentation by a transition matrix. If needed, the user can reset the default presentation by choosing one of the other presentations saved in the data structure of the <strong class="pkg">homalg</strong> module. Effectively, a module is then given by <q>all</q> its presentations (as <q>coordinates</q>) together with isomorphisms between them (as <q>coordinate changes</q>). Being able to <q>change coordinates</q> makes the realization of a module in <strong class="pkg">homalg</strong> <em>intrinsic</em> (or <q>coordinate free</q>).</p>

</li>
<li><p>To present a left/right module it suffices to take a matrix <var class="Arg">M</var> and interpret its rows/columns as relations among <span class="SimpleMath">\(n\)</span> <em>abstract</em> generators, where <span class="SimpleMath">\(n\)</span> is the number of columns/rows of <var class="Arg">M</var>. Only that these abstract generators are useless when it comes to specific modules like modules of homomorphisms, where one expects the generators to be maps between modules. For this reason a presentation of a module in <strong class="pkg">homalg</strong> is not merely a matrix of relations, but together with a set of generators.</p>

</li>
</ul>
<p><a id="X7C7EBD2383B99C43" name="X7C7EBD2383B99C43"></a></p>

<h4>7.1 <span class="Heading">Modules: Category and Representations</span></h4>

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

<h5>7.1-1 IsHomalgModule</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsHomalgModule</code>( <var class="Arg">M</var> )</td><td class="tdright">( category )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>

<p>The <strong class="pkg">GAP</strong> category of <strong class="pkg">homalg</strong> modules.</p>

<p>(It is a subcategory of the <strong class="pkg">GAP</strong> categories <code class="code">IsHomalgRingOrModule</code> and <code class="code">IsHomalgStaticObject</code>.)</p>


<div class="example"><pre>
DeclareCategory( "IsHomalgModule",
        IsHomalgRingOrModule and
        IsHomalgModuleOrMap and
        IsHomalgStaticObject );
</pre></div>

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

<h5>7.1-2 IsFinitelyPresentedModuleOrSubmoduleRep</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsFinitelyPresentedModuleOrSubmoduleRep</code>( <var class="Arg">M</var> )</td><td class="tdright">( representation )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>

<p>The <strong class="pkg">GAP</strong> representation of finitley presented <strong class="pkg">homalg</strong> modules or submodules.</p>

<p>(It is a representation of the <strong class="pkg">GAP</strong> category <code class="func">IsHomalgModule</code> (<a href="chap7_mj.html#X8429977B7FD30F32"><span class="RefLink">7.1-1</span></a>), which is a subrepresentation of the <strong class="pkg">GAP</strong> representations <code class="code">IsStaticFinitelyPresentedObjectOrSubobjectRep</code>.)</p>


<div class="example"><pre>
DeclareRepresentation( "IsFinitelyPresentedModuleOrSubmoduleRep",
        IsHomalgModule and
        IsStaticFinitelyPresentedObjectOrSubobjectRep,
        [ ] );
</pre></div>

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

<h5>7.1-3 IsFinitelyPresentedModuleRep</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsFinitelyPresentedModuleRep</code>( <var class="Arg">M</var> )</td><td class="tdright">( representation )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>

<p>The <strong class="pkg">GAP</strong> representation of finitley presented <strong class="pkg">homalg</strong> modules.</p>

<p>(It is a representation of the <strong class="pkg">GAP</strong> category <code class="func">IsHomalgModule</code> (<a href="chap7_mj.html#X8429977B7FD30F32"><span class="RefLink">7.1-1</span></a>), which is a subrepresentation of the <strong class="pkg">GAP</strong> representations <code class="code">IsFinitelyPresentedModuleOrSubmoduleRep</code>, <code class="code">IsStaticFinitelyPresentedObjectRep</code>, and <code class="code">IsHomalgRingOrFinitelyPresentedModuleRep</code>.)</p>


<div class="example"><pre>
DeclareRepresentation( "IsFinitelyPresentedModuleRep",
        IsFinitelyPresentedModuleOrSubmoduleRep and
        IsStaticFinitelyPresentedObjectRep and
        IsHomalgRingOrFinitelyPresentedModuleRep,
        [ "SetsOfGenerators""SetsOfRelations",
          "PresentationMorphisms",
          "Resolutions",
          "TransitionMatrices",
          "PositionOfTheDefaultPresentation" ] );
</pre></div>

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

<h5>7.1-4 IsFinitelyPresentedSubmoduleRep</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsFinitelyPresentedSubmoduleRep</code>( <var class="Arg">M</var> )</td><td class="tdright">( representation )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>

<p>The <strong class="pkg">GAP</strong> representation of finitley generated <strong class="pkg">homalg</strong> submodules.</p>

<p>(It is a representation of the <strong class="pkg">GAP</strong> category <code class="func">IsHomalgModule</code> (<a href="chap7_mj.html#X8429977B7FD30F32"><span class="RefLink">7.1-1</span></a>), which is a subrepresentation of the <strong class="pkg">GAP</strong> representations <code class="code">IsFinitelyPresentedModuleOrSubmoduleRep</code>, <code class="code">IsStaticFinitelyPresentedSubobjectRep</code>, and <code class="code">IsHomalgRingOrFinitelyPresentedModuleRep</code>.)</p>


<div class="example"><pre>
DeclareRepresentation( "IsFinitelyPresentedSubmoduleRep",
        IsFinitelyPresentedModuleOrSubmoduleRep and
        IsStaticFinitelyPresentedSubobjectRep and
        IsHomalgRingOrFinitelyPresentedModuleRep,
        [ "map_having_subobject_as_its_image" ] );
</pre></div>

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

<h4>7.2 <span class="Heading">Modules: Constructors</span></h4>

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

<h5>7.2-1 LeftPresentation</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ LeftPresentation</code>( <var class="Arg">mat</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> module</p>

<p>This constructor returns the finitely presented left module with relations given by the rows of the <strong class="pkg">homalg</strong> matrix <var class="Arg">mat</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz := HomalgRingOfIntegers( );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">M := HomalgMatrix( "[ \

<span class="GAPprompt">></span> <span class="GAPinput">2, 3, 4, \</span>
<span class="GAPprompt">></span> <span class="GAPinput">5, 6, 7  \</span>
<span class="GAPprompt">></span> <span class="GAPinput">]", 2, 3, zz );
<A 2 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">M := LeftPresentation( M );</span>
<A non-torsion left module presented by 2 relations for 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( M );</span>
[ [  2,  3,  4 ],
  [  5,  6,  7 ] ]

Cokernel of the map

Z^(1x2) --> Z^(1x3),

currently represented by the above matrix
<span class="GAPprompt">gap></span> <span class="GAPinput">ByASmallerPresentation( M );</span>
<A rank 1 left module presented by 1 relation for 2 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( last );</span>
Z/< 3 > + Z^(1 x 1)
</pre></div>

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

<h5>7.2-2 RightPresentation</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RightPresentation</code>( <var class="Arg">mat</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> module</p>

<p>This constructor returns the finitely presented right module with relations given by the columns of the <strong class="pkg">homalg</strong> matrix <var class="Arg">mat</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz := HomalgRingOfIntegers( );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">M := HomalgMatrix( "[ \
<span class="GAPprompt">></span> <span class="GAPinput">2, 3, 4, \</span>
<span class="GAPprompt">></span> <span class="GAPinput">5, 6, 7  \</span>
<span class="GAPprompt">></span> <span class="GAPinput">]", 2, 3, zz );
<A 2 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">M := RightPresentation( M );</span>
<A right module on 2 generators satisfying 3 relations>
<span class="GAPprompt">gap></span> <span class="GAPinput">ByASmallerPresentation( M );</span>
<A cyclic torsion right module on a cyclic generator satisfying 1 relation>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( last );</span>
Z/< 3 >
</pre></div>

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

<h5>7.2-3 HomalgFreeLeftModule</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HomalgFreeLeftModule</code>( <var class="Arg">r</var>, <var class="Arg">R</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> module</p>

<p>This constructor returns a free left module of rank <var class="Arg">r</var> over the <strong class="pkg">homalg</strong> ring <var class="Arg">R</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz := HomalgRingOfIntegers( );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">F := HomalgFreeLeftModule( 1, zz );</span>
<A free left module of rank 1 on a free generator>
<span class="GAPprompt">gap></span> <span class="GAPinput">1 * zz;</span>
<The free left module of rank 1 on a free generator>
<span class="GAPprompt">gap></span> <span class="GAPinput">F := HomalgFreeLeftModule( 2, zz );</span>
<A free left module of rank 2 on free generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">2 * zz;</span>
<A free left module of rank 2 on free generators>
</pre></div>

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

<h5>7.2-4 HomalgFreeRightModule</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HomalgFreeRightModule</code>( <var class="Arg">r</var>, <var class="Arg">R</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> module</p>

<p>This constructor returns a free right module of rank <var class="Arg">r</var> over the <strong class="pkg">homalg</strong> ring <var class="Arg">R</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz := HomalgRingOfIntegers( );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">F := HomalgFreeRightModule( 1, zz );</span>
<A free right module of rank 1 on a free generator>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz * 1;</span>
<The free right module of rank 1 on a free generator>
<span class="GAPprompt">gap></span> <span class="GAPinput">F := HomalgFreeRightModule( 2, zz );</span>
<A free right module of rank 2 on free generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz * 2;</span>
<A free right module of rank 2 on free generators>
</pre></div>

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

<h5>7.2-5 HomalgZeroLeftModule</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HomalgZeroLeftModule</code>( <var class="Arg">r</var>, <var class="Arg">R</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> module</p>

<p>This constructor returns a zero left module of rank <var class="Arg">r</var> over the <strong class="pkg">homalg</strong> ring <var class="Arg">R</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz := HomalgRingOfIntegers( );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">F := HomalgZeroLeftModule( zz );</span>
<A zero left module>
<span class="GAPprompt">gap></span> <span class="GAPinput">0 * zz;</span>
<The zero left module>
</pre></div>

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

<h5>7.2-6 HomalgZeroRightModule</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HomalgZeroRightModule</code>( <var class="Arg">r</var>, <var class="Arg">R</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> module</p>

<p>This constructor returns a zero right module of rank <var class="Arg">r</var> over the <strong class="pkg">homalg</strong> ring <var class="Arg">R</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz := HomalgRingOfIntegers( );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">F := HomalgZeroRightModule( zz );</span>
<A zero right module>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz * 0;</span>
<The zero right module>
</pre></div>

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

<h5><code>7.2-7 \*</code></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ \*</code>( <var class="Arg">R</var>, <var class="Arg">M</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ \*</code>( <var class="Arg">M</var>, <var class="Arg">R</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> module</p>

<p>Transfers the <span class="SimpleMath">\(S\)</span>-module <var class="Arg">M</var> over the <strong class="pkg">homalg</strong> ring <var class="Arg">R</var>. This works only in three cases:</p>

<ol>
<li><p><span class="SimpleMath">\(S\)</span> is a subring of <var class="Arg">R</var>.</p>

</li>
<li><p><var class="Arg">R</var> is a residue class ring of <span class="SimpleMath">\(S\)</span> constructed using <code class="code">/</code>.</p>

</li>
<li><p><var class="Arg">R</var> is a subring of <span class="SimpleMath">\(S\)</span> and the entries of the current matrix of <span class="SimpleMath">\(S\)</span>-relations of <var class="Arg">M</var> lie in <var class="Arg">R</var>.</p>

</li>
</ol>
<p>CAUTION: So it is not suited for general base change.</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">Z4 := zz / 4;</span>
Z/( 4 )
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( Z4 );</span>
<A residue class ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">M := HomalgDiagonalMatrix( [ 2 .. 4 ], zz );</span>
<An unevaluated diagonal 3 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">M := LeftPresentation( M );</span>
<A torsion left module presented by 3 relations for 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( M );</span>
Z/< 2 > + Z/< 3 > + Z/< 4 >
<span class="GAPprompt">gap></span> <span class="GAPinput">M;</span>
<A torsion left module presented by 3 relations for 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">N := Z4 * M; ## or N := M * Z4;</span>
<A non-torsion left module presented by 2 relations for 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">ByASmallerPresentation( N );</span>
<A non-torsion left module presented by 1 relation for 2 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( N );</span>
Z/( 4 )/< |[ 2 ]| > + Z/( 4 )^(1 x 1)
<span class="GAPprompt">gap></span> <span class="GAPinput">N;</span>
<A non-torsion left module presented by 1 relation for 2 generators>
</pre></div>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz := HomalgRingOfIntegers( );</span>
Z
<span class="GAPprompt">gap></span> <span class="GAPinput">M := HomalgMatrix( "[ \</span>
<span class="GAPprompt">></span> <span class="GAPinput">2, 3, 4, \</span>
<span class="GAPprompt">></span> <span class="GAPinput">5, 6, 7  \</span>
<span class="GAPprompt">></span> <span class="GAPinput">]", 2, 3, zz );</span>
<A 2 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">M := LeftPresentation( M );</span>
<A non-torsion left module presented by 2 relations for 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">Z4 := zz / 4;</span>
Z/( 4 )
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( Z4 );</span>
<A residue class ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">M4 := Z4 * M;</span>
<A non-torsion left module presented by 2 relations for 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( M4 );</span>
[ [  2,  3,  4 ],
  [  5,  6,  7 ] ]

modulo [ 4 ]

Cokernel of the map

Z/( 4 )^(1x2) --> Z/( 4 )^(1x3),

currently represented by the above matrix
<span class="GAPprompt">gap></span> <span class="GAPinput">d := Resolution( 2, M4 );</span>
<A right acyclic complex containing 2 morphisms of left modules at degrees 
[ 0 .. 2 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">dd := Hom( d, Z4 );</span>
<A cocomplex containing 2 morphisms of right modules at degrees [ 0 .. 2 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">DD := Resolution( 2, dd );</span>
<A cocomplex containing 2 morphisms of right complexes at degrees [ 0 .. 2 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">D := Hom( DD, Z4 );</span>
<A complex containing 2 morphisms of left cocomplexes at degrees [ 0 .. 2 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">C := zz * D;</span>
<A "complex" containing 2 morphisms of left cocomplexes at degrees [ 0 .. 2 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">LowestDegreeObject( C );</span>
<A "cocomplex" containing 2 morphisms of left modules at degrees [ 0 .. 2 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( last );</span>
-------------------------
at cohomology degree: 2
0
------------^------------
(an empty 1 x 0 matrix)

the map is currently represented by the above 1 x 0 matrix
-------------------------
at cohomology degree: 1
Z/< 4 > 
------------^------------
[ [  0 ],
  [  1 ],
  [  2 ],
  [  1 ] ]

the map is currently represented by the above 4 x 1 matrix
-------------------------
at cohomology degree: 0
Z/< 4 > + Z/< 4 > + Z/< 4 > + Z/< 4 > 
-------------------------
</pre></div>

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

<h5>7.2-8 Subobject</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Subobject</code>( <var class="Arg">mat</var>, <var class="Arg">M</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> submodule</p>

<p>This constructor returns the finitely generated left/right submodule of the <strong class="pkg">homalg</strong> module <var class="Arg">M</var> with generators given by the rows/columns of the <strong class="pkg">homalg</strong> matrix <var class="Arg">mat</var>.</p>

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

<h5>7.2-9 Subobject</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Subobject</code>( <var class="Arg">gens</var>, <var class="Arg">M</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> submodule</p>

<p>This constructor returns the finitely generated left/right submodule of the <strong class="pkg">homalg</strong> cyclic left/right module <var class="Arg">M</var> with generators given by the entries of the list <var class="Arg">gens</var>.</p>

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

<h5>7.2-10 LeftSubmodule</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ LeftSubmodule</code>( <var class="Arg">mat</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> submodule</p>

<p>This constructor returns the finitely generated left submodule with generators given by the rows of the <strong class="pkg">homalg</strong> matrix <var class="Arg">mat</var>.</p>


<div class="example"><pre>
InstallMethod( LeftSubmodule,
        "constructor for homalg submodules",
        [ IsHomalgMatrix ],
        
  function( gen )
    local R;
    
    R := HomalgRing( gen );
    
    return Subobject( gen, NumberColumns( gen ) * R );
    
end );
</pre></div>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Z4 := HomalgRingOfIntegers( ) / 4;</span>
Z/( 4 )
<span class="GAPprompt">gap></span> <span class="GAPinput">I := HomalgMatrix( "[ 2 ]", 1, 1, Z4 );</span>
<A 1 x 1 matrix over a residue class ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">I := LeftSubmodule( I );</span>
<A principal torsion-free (left) ideal given by a cyclic generator>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsFree( I );</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">I;</span>
<A principal reflexive non-projective (left) ideal given by a cyclic generator\
>
</pre></div>

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

<h5>7.2-11 RightSubmodule</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RightSubmodule</code>( <var class="Arg">mat</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> submodule</p>

<p>This constructor returns the finitely generated right submodule with generators given by the columns of the <strong class="pkg">homalg</strong> matrix <var class="Arg">mat</var>.</p>


<div class="example"><pre>
InstallMethod( RightSubmodule,
        "constructor for homalg submodules",
        [ IsHomalgMatrix ],
        
  function( gen )
    local R;
    
    R := HomalgRing( gen );
    
    return Subobject( gen, R * NumberRows( gen ) );
    
end );
</pre></div>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Z4 := HomalgRingOfIntegers( ) / 4;</span>
Z/( 4 )
<span class="GAPprompt">gap></span> <span class="GAPinput">I := HomalgMatrix( "[ 2 ]", 1, 1, Z4 );</span>
<A 1 x 1 matrix over a residue class ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">I := RightSubmodule( I );</span>
<A principal torsion-free (right) ideal given by a cyclic generator>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsFree( I );</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">I;</span>
<A principal reflexive non-projective (right) ideal given by a cyclic generato\
r>
</pre></div>

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

<h4>7.3 <span class="Heading">Modules: Properties</span></h4>

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

<h5>7.3-1 IsCyclic</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsCyclic</code>( <var class="Arg">M</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>

<p>Check if the <strong class="pkg">homalg</strong> module <var class="Arg">M</var> is cyclic.</p>

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

<h5>7.3-2 IsHolonomic</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsHolonomic</code>( <var class="Arg">M</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>

<p>Check if the <strong class="pkg">homalg</strong> module <var class="Arg">M</var> is holonomic.</p>

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

<h5>7.3-3 IsReduced</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsReduced</code>( <var class="Arg">M</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>

<p>Check if the <strong class="pkg">homalg</strong> module <var class="Arg">M</var> is reduced.</p>

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

<h5>7.3-4 IsPrimeIdeal</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsPrimeIdeal</code>( <var class="Arg">J</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>

<p>Check if the <strong class="pkg">homalg</strong> submodule <var class="Arg">J</var> is a prime ideal. The ring has to be commutative. <br /> (no method installed)</p>

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

<h5>7.3-5 IsPrimeModule</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsPrimeModule</code>( <var class="Arg">M</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>

<p>Check if the <strong class="pkg">homalg</strong> module <var class="Arg">M</var> is prime.</p>

<p>For more properties see the corresponding section <a href="https://homalg-project.github.io/homalg_project/homalg/doc/chap3_mj.html#X7B3E8C797D15F0B7"><span class="RefLink">homalg: Objects: Properties</span></a>) in the documentation of the <strong class="pkg">homalg</strong> package.</p>

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

<h4>7.4 <span class="Heading">Modules: Attributes</span></h4>

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

<h5>7.4-1 ResidueClassRing</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ResidueClassRing</code>( <var class="Arg">J</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> ring</p>

<p>In case <var class="Arg">J</var> was defined as a (left/right) ideal of the ring <span class="SimpleMath">\(R\)</span> the residue class ring <span class="SimpleMath">\(R/\)</span><var class="Arg">J</var> is returned.</p>

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

<h5>7.4-2 PrimaryDecomposition</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ PrimaryDecomposition</code>( <var class="Arg">J</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a list</p>

<p>The primary decomposition of the ideal <var class="Arg">J</var>. The ring has to be commutative. <br /> (no method installed)</p>

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

<h5>7.4-3 RadicalDecomposition</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RadicalDecomposition</code>( <var class="Arg">J</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a list</p>

<p>The prime decomposition of the radical of the ideal <var class="Arg">J</var>. The ring has to be commutative. <br /> (no method installed)</p>

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

<h5>7.4-4 ModuleOfKaehlerDifferentials</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ModuleOfKaehlerDifferentials</code>( <var class="Arg">R</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> module</p>

<p>The module of Kaehler differentials of the (residue class ring) <var class="Arg">R</var>. <br /> (method installed in package <strong class="pkg">GradedModules</strong>)</p>

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

<h5>7.4-5 RadicalSubobject</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RadicalSubobject</code>( <var class="Arg">M</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: a function</p>

<p><var class="Arg">M</var> is a <strong class="pkg">homalg</strong> module.</p>

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

<h5>7.4-6 SymmetricAlgebra</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SymmetricAlgebra</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> ring</p>

<p>The symmetric algebra of the module <var class="Arg">M</var>.</p>

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

<h5>7.4-7 ExteriorAlgebra</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ExteriorAlgebra</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> ring</p>

<p>The exterior algebra of the module <var class="Arg">M</var>.</p>

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

<h5>7.4-8 ElementaryDivisors</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ElementaryDivisors</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a list of ring elements</p>

<p>The list of elementary divisors of the <strong class="pkg">homalg</strong> module <var class="Arg">M</var>, in case they exist. <br /> (no method installed)</p>

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

<h5>7.4-9 FittingIdeal</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FittingIdeal</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a list</p>

<p>The Fitting ideal of <var class="Arg">M</var>.</p>

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

<h5>7.4-10 NonFlatLocus</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NonFlatLocus</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a list</p>

<p>The non flat locus of <var class="Arg">M</var>.</p>

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

<h5>7.4-11 LargestMinimalNumberOfLocalGenerators</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ LargestMinimalNumberOfLocalGenerators</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a nonnegative integer</p>

<p>The minimal number of <em>local</em> generators of the module <var class="Arg">M</var>.</p>

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

<h5>7.4-12 CoefficientsOfUnreducedNumeratorOfHilbertPoincareSeries</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CoefficientsOfUnreducedNumeratorOfHilbertPoincareSeries</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a list of integers</p>

<p><var class="Arg">M</var> is a <strong class="pkg">homalg</strong> module.</p>

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

<h5>7.4-13 CoefficientsOfNumeratorOfHilbertPoincareSeries</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CoefficientsOfNumeratorOfHilbertPoincareSeries</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a list of integers</p>

<p><var class="Arg">M</var> is a <strong class="pkg">homalg</strong> module.</p>

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

<h5>7.4-14 UnreducedNumeratorOfHilbertPoincareSeries</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ UnreducedNumeratorOfHilbertPoincareSeries</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a univariate polynomial with rational coefficients</p>

<p><var class="Arg">M</var> is a <strong class="pkg">homalg</strong> module.</p>

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

<h5>7.4-15 NumeratorOfHilbertPoincareSeries</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NumeratorOfHilbertPoincareSeries</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a univariate polynomial with rational coefficients</p>

<p><var class="Arg">M</var> is a <strong class="pkg">homalg</strong> module.</p>

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

<h5>7.4-16 HilbertPoincareSeries</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HilbertPoincareSeries</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a univariate rational function with rational coefficients</p>

<p><var class="Arg">M</var> is a <strong class="pkg">homalg</strong> module.</p>

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

<h5>7.4-17 AffineDegree</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AffineDegree</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a nonnegative integer</p>

<p><var class="Arg">M</var> is a <strong class="pkg">homalg</strong> module.</p>

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

<h5>7.4-18 DataOfHilbertFunction</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DataOfHilbertFunction</code>( <var class="Arg">M</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: a function</p>

<p><var class="Arg">M</var> is a <strong class="pkg">homalg</strong> module.</p>

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

<h5>7.4-19 HilbertFunction</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HilbertFunction</code>( <var class="Arg">M</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: a function</p>

<p><var class="Arg">M</var> is a <strong class="pkg">homalg</strong> module.</p>

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

<h5>7.4-20 IndexOfRegularity</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IndexOfRegularity</code>( <var class="Arg">M</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: a function</p>

<p><var class="Arg">M</var> is a <strong class="pkg">homalg</strong> module.</p>

<p>For more attributes see the corresponding section <a href="https://homalg-project.github.io/homalg_project/homalg/doc/chap3_mj.html#X805B06828294072C"><span class="RefLink">homalg: Objects: Attributes</span></a>) in the documentation of the <strong class="pkg">homalg</strong> package.</p>

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

<h4>7.5 <span class="Heading">Modules: Operations and Functions</span></h4>

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

<h5>7.5-1 HomalgRing</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HomalgRing</code>( <var class="Arg">M</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> ring</p>

<p>The <strong class="pkg">homalg</strong> ring of the <strong class="pkg">homalg</strong> module <var class="Arg">M</var>.</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">M := zz * 4;</span>
<A free right module of rank 4 on free generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">R := HomalgRing( M );</span>
Z
<span class="GAPprompt">gap></span> <span class="GAPinput">IsIdenticalObj( R, zz );</span>
true
</pre></div>

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

<h5>7.5-2 ByASmallerPresentation</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ByASmallerPresentation</code>( <var class="Arg">M</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> module</p>

<p>Use different strategies to reduce the presentation of the given <strong class="pkg">homalg</strong> module <var class="Arg">M</var>. This method performs side effects on its argument <var class="Arg">M</var> and returns it.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz := HomalgRingOfIntegers( );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">M := HomalgMatrix( "[ \</span>
<span class="GAPprompt">></span> <span class="GAPinput">2, 3, 4, \</span>
<span class="GAPprompt">></span> <span class="GAPinput">5, 6, 7  \</span>
<span class="GAPprompt">></span> <span class="GAPinput">]", 2, 3, zz );</span>
<A 2 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">M := LeftPresentation( M );</span>
<A non-torsion left module presented by 2 relations for 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( M );</span>
[ [  2,  3,  4 ],
  [  5,  6,  7 ] ]

Cokernel of the map

Z^(1x2) --> Z^(1x3),

currently represented by the above matrix
<span class="GAPprompt">gap></span> <span class="GAPinput">ByASmallerPresentation( M );</span>
<A rank 1 left module presented by 1 relation for 2 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( last );</span>
Z/< 3 > + Z^(1 x 1)
<span class="GAPprompt">gap></span> <span class="GAPinput">SetsOfGenerators( M );</span>
<A set containing 2 sets of generators of a homalg module>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetsOfRelations( M );</span>
<A set containing 2 sets of relations of a homalg module>
<span class="GAPprompt">gap></span> <span class="GAPinput">M;</span>
<A rank 1 left module presented by 1 relation for 2 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetPositionOfTheDefaultPresentation( M, 1 );</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">M;</span>
<A rank 1 left module presented by 2 relations for 3 generators>
</pre></div>

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

<h5><code>7.5-3 \*</code></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ \*</code>( <var class="Arg">J</var>, <var class="Arg">M</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> submodule</p>

<p>Compute the submodule <var class="Arg">J</var><var class="Arg">M</var> (resp. <var class="Arg">M</var><var class="Arg">J</var>) of the given left (resp. right) <span class="SimpleMath">\(R\)</span>-module <var class="Arg">M</var>, where <var class="Arg">J</var> is a left (resp. right) ideal in <span class="SimpleMath">\(R\)</span>.</p>

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

<h5>7.5-4 SubobjectQuotient</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SubobjectQuotient</code>( <var class="Arg">K</var>, <var class="Arg">J</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> ideal</p>

<p>Compute the submodule quotient ideal <span class="SimpleMath">\(\textit{K}:\textit{J}\)</span> of the submodules <var class="Arg">K</var> and <var class="Arg">J</var> of a common <span class="SimpleMath">\(R\)</span>-module <span class="SimpleMath">\(M\)</span>.</p>


<div class="chlinkprevnextbot"> <a href="chap0_mj.html">[Top of Book]</a>   <a href="chap0_mj.html#contents">[Contents]</a>    <a href="chap6_mj.html">[Previous Chapter]</a>    <a href="chap8_mj.html">[Next Chapter]</a>   </div>


<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0_mj.html">Top</a>  <a href="chap1_mj.html">1</a>  <a href="chap2_mj.html">2</a>  <a href="chap3_mj.html">3</a>  <a href="chap4_mj.html">4</a>  <a href="chap5_mj.html">5</a>  <a href="chap6_mj.html">6</a>  <a href="chap7_mj.html">7</a>  <a href="chap8_mj.html">8</a>  <a href="chap9_mj.html">9</a>  <a href="chap10_mj.html">10</a>  <a href="chap11_mj.html">11</a>  <a href="chap12_mj.html">12</a>  <a href="chap13_mj.html">13</a>  <a href="chapA_mj.html">A</a>  <a href="chapB_mj.html">B</a>  <a href="chapC_mj.html">C</a>  <a href="chapBib_mj.html">Bib</a>  <a href="chapInd_mj.html">Ind</a>  </div>

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

98%


[ zur Elbe Produktseite wechseln0.33Quellennavigators  Analyse erneut starten  ]