Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 7ebd25ac536d248d499a3ce2acda963a > files > 5162

Macaulay2-1.3.1-8.fc15.i686.rpm

<?xml version="1.0" encoding="utf-8" ?>  <!-- for emacs: -*- coding: utf-8 -*- -->
<!-- Apache may like this line in the file .htaccess: AddCharset utf-8 .html -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN"	 "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg-flat.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head><title>subquotient modules -- the way Macaulay2 represents modules</title>
<link rel="stylesheet" type="text/css" href="../../../../Macaulay2/Style/doc.css"/>
</head>
<body>
<table class="buttons">
  <tr>
    <td><div><a href="_module_sphomomorphisms.html">next</a> | <a href="_submodules_spand_spquotients.html">previous</a> | <a href="_module_sphomomorphisms.html">forward</a> | <a href="_submodules_spand_spquotients.html">backward</a> | <a href="_modules.html">up</a> | <a href="index.html">top</a> | <a href="master.html">index</a> | <a href="toc.html">toc</a> | <a href="http://www.math.uiuc.edu/Macaulay2/">Macaulay2 web site</a></div>

    </td>
  </tr>
</table>
<div><a href="index.html" title="">Macaulay2Doc</a> > <a href="_modules.html" title="">modules</a> > <a href="_subquotient_spmodules.html" title="the way Macaulay2 represents modules">subquotient modules</a></div>
<hr/>
<div><h1>subquotient modules -- the way Macaulay2 represents modules</h1>
<div>Not all modules arise naturally as submodules or quotients of free modules.  As an example, consider the module <i>M = I/I<sup>2</sup></i> in the example below.<table class="examples"><tr><td><pre>i1 : R = QQ[x,y,z];</pre>
</td></tr>
<tr><td><pre>i2 : I = ideal(x*y,x*z,y*z)

o2 = ideal (x*y, x*z, y*z)

o2 : Ideal of R</pre>
</td></tr>
<tr><td><pre>i3 : M = I/I^2

o3 = subquotient (| xy xz yz |, | x2y2 x2yz xy2z x2z2 xyz2 y2z2 |)

                               1
o3 : R-module, subquotient of R</pre>
</td></tr>
</table>
Macaulay2 represents each module (at least conceptually) as a subquotient module, that is, a submodule of a quotient of an ambient free module.  A subquotient module is determined by two matrices <i>f : R<sup>m</sup> &rarr; R<sup>n</sup></i> and <i>g : R<sup>p</sup> &rarr; R<sup>n</sup></i>.  The <em>subquotient module</em> with generators <i>f</i> and relations <i>g</i> is by definition the module <i>M = ((image f) + (image g))/(image g)</i>.<p/>
If <i>f</i> is the identity map, <i>M = coker g</i>, and if <i>g = 0</i>, then <i>M = image f</i>.  The class of subquotient modules is the smallest class containing free modules, which is closed under taking submodules and quotients.<p/>
One may create a subquotient module directly from matrices f and g having the same target free module.<table class="examples"><tr><td><pre>i4 : f = matrix{{x,y}}

o4 = | x y |

             1       2
o4 : Matrix R  &lt;--- R</pre>
</td></tr>
<tr><td><pre>i5 : g = matrix{{x^2,x*y,y^2,z^4}}

o5 = | x2 xy y2 z4 |

             1       4
o5 : Matrix R  &lt;--- R</pre>
</td></tr>
<tr><td><pre>i6 : M = subquotient(f,g)

o6 = subquotient (| x y |, | x2 xy y2 z4 |)

                               1
o6 : R-module, subquotient of R</pre>
</td></tr>
</table>
The same module can be constructed in the following manner.<table class="examples"><tr><td><pre>i7 : N = (image f)/(image g)

o7 = subquotient (| x y |, | x2 xy y2 z4 |)

                               1
o7 : R-module, subquotient of R</pre>
</td></tr>
<tr><td><pre>i8 : N1 = (image f + image g)/(image g)

o8 = subquotient (| x y x2 xy y2 z4 |, | x2 xy y2 z4 |)

                               1
o8 : R-module, subquotient of R</pre>
</td></tr>
<tr><td><pre>i9 : M === N

o9 = true</pre>
</td></tr>
</table>
Notice that Macaulay2 allows one to write (image f)/(image g), even though mathematically this really means: (image f + image g)/(image g).  There is an important difference however.  Modules in Macaulay2 always come with an ordered set of generators, and N1 has 4 more generators (all zero in the module!) than N.  The modules M and N though are identical.<p/>
The two matrices f and g mentioned above are recovered using the routines <a href="_generators_lp__Module_rp.html" title="the generator matrix of a module">generators(Module)</a> and <a href="_relations.html" title="the defining relations">relations(Module)</a>.<table class="examples"><tr><td><pre>i10 : generators M

o10 = | x y |

              1       2
o10 : Matrix R  &lt;--- R</pre>
</td></tr>
<tr><td><pre>i11 : relations M

o11 = | x2 xy y2 z4 |

              1       4
o11 : Matrix R  &lt;--- R</pre>
</td></tr>
</table>
<p/>
Submodules and quotients of free modules work as one would imagine.<table class="examples"><tr><td><pre>i12 : N2 = R*M_0 + I*M

o12 = subquotient (| x x2y xy2 x2z xyz xyz y2z |, | x2 xy y2 z4 |)

                                1
o12 : R-module, subquotient of R</pre>
</td></tr>
<tr><td><pre>i13 : M/N2

o13 = subquotient (| x y |, | x x2y xy2 x2z xyz xyz y2z x2 xy y2 z4 |)

                                1
o13 : R-module, subquotient of R</pre>
</td></tr>
<tr><td><pre>i14 : prune(M/N2)

o14 = cokernel {1} | y x z4 |

                             1
o14 : R-module, quotient of R</pre>
</td></tr>
</table>
<p/>
Given a subquotient module M, there are several useful modules associated to M.The free module of which M is a subquotient is obtained using <a href="_ambient_lp__Module_rp.html" title="ambient free module">ambient(Module)</a>.<table class="examples"><tr><td><pre>i15 : ambient M

       1
o15 = R

o15 : R-module, free</pre>
</td></tr>
</table>
This is the same as the common target of the matrices of generators and relations.<table class="examples"><tr><td><pre>i16 : ambient M === target relations M

o16 = true</pre>
</td></tr>
<tr><td><pre>i17 : ambient M === target generators M

o17 = true</pre>
</td></tr>
</table>
M is a submodule of the module R^n/(image g).  The routine <a href="_super.html" title="get the ambient module">super(Module)</a> returns this quotient module.<table class="examples"><tr><td><pre>i18 : super M

o18 = cokernel | x2 xy y2 z4 |

                             1
o18 : R-module, quotient of R</pre>
</td></tr>
</table>
This may be obtained directly as the cokernel of the matrix of relations.<table class="examples"><tr><td><pre>i19 : super M === cokernel relations M

o19 = true</pre>
</td></tr>
</table>
Often the given representation of a module is not very efficient.  Use <a href="_trim_lp__Module_rp.html" title="">trim(Module)</a> to keep the module as a subquotient of the same ambient free module, but change the generators and relations to be minimal, or in the nonlocal or non-graded case, at least more efficient.<table class="examples"><tr><td><pre>i20 : M + M

o20 = subquotient (| x y x y |, | x2 xy y2 z4 |)

                                1
o20 : R-module, subquotient of R</pre>
</td></tr>
<tr><td><pre>i21 : trim (M+M)

o21 = subquotient (| y x |, | y2 xy x2 z4 |)

                                1
o21 : R-module, subquotient of R</pre>
</td></tr>
</table>
Use <a href="_minimal__Presentation_lp__Module_rp.html" title="minimal presentation of a module">minimalPresentation(Module)</a> to also allow the ambient free module to be improved.  This currently returns a quotient of a free module, but in the future it might not.<table class="examples"><tr><td><pre>i22 : minimalPresentation M

o22 = cokernel {1} | y x 0 0 z4 0  |
               {1} | 0 0 y x 0  z4 |

                             2
o22 : R-module, quotient of R</pre>
</td></tr>
</table>
<tt>prune</tt> is a synonym for <tt>minimalPresentation</tt>.<table class="examples"><tr><td><pre>i23 : prune M

o23 = cokernel {1} | y x 0 0 z4 0  |
               {1} | 0 0 y x 0  z4 |

                             2
o23 : R-module, quotient of R</pre>
</td></tr>
</table>
For maps between modules, including between subquotient modules, see <a href="_homomorphisms_sp_lpmaps_rp_spbetween_spmodules.html" title="including elements of modules">homomorphisms (maps) between modules</a>.</div>
<div class="single"><h2>See also</h2>
<ul><li><span><a href="_ambient_lp__Module_rp.html" title="ambient free module">ambient(Module)</a> -- ambient free module</span></li>
<li><span><a href="_super.html" title="get the ambient module">super(Module)</a> -- get the ambient module</span></li>
<li><span><a href="_generators_lp__Module_rp.html" title="the generator matrix of a module">generators(Module)</a> -- the generator matrix of a module</span></li>
<li><span><a href="_relations.html" title="the defining relations">relations(Module)</a> -- the defining relations</span></li>
<li><span><a href="_subquotient.html" title="make a subquotient module">subquotient</a> -- make a subquotient module</span></li>
<li><span><a href="_trim_lp__Module_rp.html" title="">trim(Module)</a></span></li>
<li><span><a href="_minimal__Presentation_lp__Module_rp.html" title="minimal presentation of a module">minimalPresentation(Module)</a> -- minimal presentation of a module</span></li>
</ul>
</div>
</div>
</body>
</html>