<?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>ideal quotients and saturation</title> <link rel="stylesheet" type="text/css" href="../../../../Macaulay2/Style/doc.css"/> </head> <body> <table class="buttons"> <tr> <td><div><a href="_radical_spof_span_spideal.html">next</a> | <a href="_intersection_spof_spideals.html">previous</a> | <a href="_radical_spof_span_spideal.html">forward</a> | <a href="_intersection_spof_spideals.html">backward</a> | <a href="_ideals.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="_ideals.html" title="">ideals</a> > <a href="_ideal_spquotients_spand_spsaturation.html" title="">ideal quotients and saturation</a></div> <hr/> <div><h1>ideal quotients and saturation</h1> <div><h2>colon and quotient</h2> The <a href="_quotient.html" title="quotient or division">quotient</a> of two ideals <tt>I</tt> and <tt>J</tt> is the same as <tt>I:J</tt> and is the ideal of elements <tt>f</tt> such that <tt>f*J</tt> is contained in <tt>I</tt>.<table class="examples"><tr><td><pre>i1 : R = QQ[a..d];</pre> </td></tr> <tr><td><pre>i2 : I = ideal (a^2*b-c^2, a*b^2-d^3, c^5-d); o2 : Ideal of R</pre> </td></tr> <tr><td><pre>i3 : J = ideal (a^2,b^2,c^2,d^2); o3 : Ideal of R</pre> </td></tr> <tr><td><pre>i4 : I:J 2 3 2 2 5 o4 = ideal (a*b - d , a b - c , c - d) o4 : Ideal of R</pre> </td></tr> <tr><td><pre>i5 : P = quotient(I,J) 2 3 2 2 5 o5 = ideal (a*b - d , a b - c , c - d) o5 : Ideal of R</pre> </td></tr> </table> The functions <a href="__co.html" title="a binary operator, uses include repetition; ideal quotients">:</a> and <a href="_quotient.html" title="quotient or division">quotient</a> perform the same basic operation, however <tt>quotient</tt> takes two options. The first is <tt>MinimalGenerators</tt> which has default value <tt>true</tt> meaning the computation is done computing a minimal generating set. You may want to see all of the generators found, setting <tt>MinimalGenerators</tt> to <tt>false</tt> accomplishes this.<table class="examples"><tr><td><pre>i6 : Q = quotient(I,J,MinimalGenerators => false) 2 3 2 2 5 4 3 4 3 o6 = ideal (- a*b + d , - a b + c , - c + d, a c*d - a*d, a b*c*d - ------------------------------------------------------------------------ 4 2 2 2 4 3 2 2 6 2 4 3 2 3 a*b*d, a b c*d - a*b , a b*c d - a*b*c , a b*c*d - a c d - a b + ------------------------------------------------------------------------ 2 a*c ) o6 : Ideal of R</pre> </td></tr> <tr><td><pre>i7 : Q == P o7 = true</pre> </td></tr> </table> The second option is <tt>Strategy</tt>. The default is to use <tt>Iterate</tt> which computes successive ideal quotients. Currently (16 May 2001) the other possible options do not work.<h2>saturation</h2> The saturation of an ideal <tt>I</tt> with respect to another ideal <tt>J</tt> is the ideal <tt>(I : J^*)</tt> defined to be the set of elements <tt>f</tt> in the ring such that J^N*f is contained in I for some N large enough. Use the function <a href="_saturate.html" title="saturation of ideal or submodule">saturate</a> to compute this ideal. If the ideal <tt>J</tt> is not given, the ideal <tt>J</tt> is taken to be the ideal generated by the variables of the ring <tt>R</tt> of <tt>I</tt>.<p/> For example, one way to homogenize an ideal is to homogenize the generators and then saturate with respect to the homogenizing variable.<table class="examples"><tr><td><pre>i8 : R = ZZ/32003[a..d];</pre> </td></tr> <tr><td><pre>i9 : I = ideal(a^3-b, a^4-c) 3 4 o9 = ideal (a - b, a - c) o9 : Ideal of R</pre> </td></tr> <tr><td><pre>i10 : Ih = homogenize(I,d) 3 2 4 3 o10 = ideal (a - b*d , a - c*d ) o10 : Ideal of R</pre> </td></tr> <tr><td><pre>i11 : saturate(Ih,d) 2 2 3 2 3 2 o11 = ideal (a*b - c*d, a c - b d, b - a*c , a - b*d ) o11 : Ideal of R</pre> </td></tr> </table> The function <tt>saturate</tt> has three optional arguments. First a strategy for computation can be chosen. The options are , <a href="___Linear.html" title="a Strategy option value for saturate">Linear</a>, <a href="___Iterate.html" title="a Strategy option value for saturate">Iterate</a>, <a href="___Bayer.html" title="a Strategy option value for saturate">Bayer</a>, and <a href="___Eliminate.html" title="elimination order">Eliminate</a>. We leave descriptions of the options to their links, but give an example of the syntax for optional arguments.<table class="examples"><tr><td><pre>i12 : saturate(Ih,d,Strategy => Bayer) 2 2 3 2 3 2 o12 = ideal (a*b - c*d, a c - b d, b - a*c , a - b*d ) o12 : Ideal of R</pre> </td></tr> </table> The second option is <tt>DegreeLimit => n</tt> which specifies that the computation should halt after dealing with degree n. The third option is <tt>MinimalGenerators => true</tt> which specifies that the computation should not only compute the saturation, but a minimal generating set for that ideal.</div> </div> </body> </html>