<?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>reesIdeal -- compute the defining ideal of the Rees Algebra</title> <link rel="stylesheet" type="text/css" href="../../../../Macaulay2/Style/doc.css"/> </head> <body> <table class="buttons"> <tr> <td><div><a href="_special__Fiber.html">next</a> | <a href="_rees__Algebra.html">previous</a> | <a href="_special__Fiber.html">forward</a> | <a href="_rees__Algebra.html">backward</a> | up | <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> <hr/> <div><h1>reesIdeal -- compute the defining ideal of the Rees Algebra</h1> <div class="single"><h2>Synopsis</h2> <ul><li><div class="list"><dl class="element"><dt class="heading">Usage: </dt><dd class="value"><div><tt>reesIdeal M</tt><br/><tt>reesIdeal(M,f)</tt></div> </dd></dl> </div> </li> <li><div class="single">Inputs:<ul><li><span><tt>M</tt>, <span>a <a href="../../Macaulay2Doc/html/___Module.html">module</a></span>, or <span>an <a href="../../Macaulay2Doc/html/___Ideal.html">ideal</a></span> of a quotient polynomial ring <i>R</i></span></li> <li><span><tt>f</tt>, <span>a <a href="../../Macaulay2Doc/html/___Ring__Element.html">ring element</a></span>, any non-zero divisor modulo the ideal or module. Optional</span></li> </ul> </div> </li> <li><div class="single">Outputs:<ul><li><span><span>an <a href="../../Macaulay2Doc/html/___Ideal.html">ideal</a></span>, defining the Rees algebra of M</span></li> </ul> </div> </li> <li><div class="single"><a href="../../Macaulay2Doc/html/_using_spfunctions_spwith_spoptional_spinputs.html">Optional inputs</a>:<ul><li><span><a href="_symmetric__Kernel_lp..._cm_sp__Variable_sp_eq_gt_sp..._rp.html">Variable => ...</a>, -- Choose name for variables in the created ring</span></li> </ul> </div> </li> </ul> </div> <div class="single"><h2>Description</h2> <div><p>The Rees algebra of a module <i>M</i> over a ring <i>R</i> is here defined, following the paper What is the Rees algebra of a module? David Eisenbud, Craig Huneke and Bernd Ulrich, Proc. Amer. Math. Soc. 131 (2003) 701--708, as follows: If <i>h:F→M</i> is a surjection from a free module, and <i>g: M→G</i> is the universal map to a free module, then the Rees algebra of <i>M</i> is the image of the induced map of <i>Sym(gh): Sym(F)→Sym(G)</i>, and thus can be computed with symmetricKernel(gh). The paper above proves that if <i>M</i> is isomorphic to an ideal with inclusion <i>g: M→R</i> (or, in characteristic zero but not in characteristic <i>>0</i> if <i>M</i> is a submodule of a free module and <i>g’: M→G</i>) is any injection), then the Rees algebra is equal to the image of <i>g’h</i>, so it is unnecessary to compute the universal embedding.</p> <p>This package gives the user a choice between two methods for finding the defining ideal of the Rees algebra of an ideal or module <i>M</i> over a ring <i>R</i>: The call</p> <p><tt>reesIdeal(M)</tt></p> <p>computes the universal embedding <i>g: M→G</i> and a surjection <i>f: F→M</i> and returns the result of symmetricKernel(gf). On the other hand, if the user knows an non-zerodivisor <i>a∈R</i> such that <i>M[a<sup>-1</sup></i> is a free module (this is the case, for example, if <i>a ∈M⊂R</i> and <i>a</i> is a non-zerodivisor), then it is often much faster to call</p> <p><tt>reesIdeal(M,a)</tt></p> <p>which finds a surjection <i>f: F→M</i> and returns <i>(J:a<sup>∞</sup>) ⊂Sym(F)</i>, the saturation of the ideal <i>J:=(ker f)Sym(F)</i>. Note that this gives the correct answer even under the slightly weaker hypothesis that <i>M[a<sup>-1</sup>]</i> is “of linear type”. (See also <a href="_is__Linear__Type.html" title="is a module of linear type">isLinearType</a>.)</p> <div><b>Historical Background</b>: The Rees Algebra of an ideal is the basic commutative algebra analogue of the blow up operation in algebraic geometry. It has many applications, and a great deal of modern work in commutative algebra has been devoted to it. The term "Rees Algebra" (of an ideal <i>I</i> in a ring <i>R</i>, say) is used here to refer to the ring <i>R[It]⊂R[t]</i> which is sometimes called the "blowup algebra" instead. (The origin of the name may be traced to a paper by David Rees, (On a problem of Zariski. Illinois J. Math. (1958)145âÂÂ149) where Rees used the ring <i>R[It,t<sup>-1</sup></i>, now also called the “extended Rees Algebra.”)</div> <table class="examples"><tr><td><pre>i1 : kk = ZZ/101;</pre> </td></tr> <tr><td><pre>i2 : S=kk[x_0..x_4];</pre> </td></tr> <tr><td><pre>i3 : i=monomialCurveIdeal(S,{2,3,5,6}) 2 3 2 2 2 2 o3 = ideal (x x - x x , x - x x , x x - x x , x - x x , x x - x x , x x 2 3 1 4 2 0 4 1 2 0 3 3 2 4 1 3 0 4 0 3 ------------------------------------------------------------------------ 2 2 3 2 - x x , x x - x x x , x - x x ) 1 4 1 3 0 2 4 1 0 4 o3 : Ideal of S</pre> </td></tr> <tr><td><pre>i4 : time V1 = reesIdeal i; -- used 0.076989 seconds o4 : Ideal of S[w , w , w , w , w , w , w , w ] 0 1 2 3 4 5 6 7</pre> </td></tr> <tr><td><pre>i5 : time V2 = reesIdeal(i,i_0); -- used 0.183972 seconds o5 : Ideal of S[w , w , w , w , w , w , w , w ] 0 1 2 3 4 5 6 7</pre> </td></tr> </table> <div>This example is particularly interesting upon a bit more exploration.</div> <table class="examples"><tr><td><pre>i6 : numgens V1 o6 = 15</pre> </td></tr> <tr><td><pre>i7 : numgens V2 o7 = 15</pre> </td></tr> </table> <div>The difference is striking and, at least in part, explains the difference in computing time. Furthermore, if we compute a Grobner basis for both and compare the two matrices, we see that we indeed got the same ideal.</div> <table class="examples"><tr><td><pre>i8 : M1 = gens gb V1; 1 84 o8 : Matrix (S[w , w , w , w , w , w , w , w ]) <--- (S[w , w , w , w , w , w , w , w ]) 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7</pre> </td></tr> <tr><td><pre>i9 : M2 = gens gb V2; 1 84 o9 : Matrix (S[w , w , w , w , w , w , w , w ]) <--- (S[w , w , w , w , w , w , w , w ]) 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7</pre> </td></tr> <tr><td><pre>i10 : use ring M2 o10 = S[w , w , w , w , w , w , w , w ] 0 1 2 3 4 5 6 7 o10 : PolynomialRing</pre> </td></tr> <tr><td><pre>i11 : M1 = substitute(M1, ring M2); 1 84 o11 : Matrix (S[w , w , w , w , w , w , w , w ]) <--- (S[w , w , w , w , w , w , w , w ]) 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7</pre> </td></tr> <tr><td><pre>i12 : M1 == M2 o12 = true</pre> </td></tr> <tr><td><pre>i13 : numgens source M2 o13 = 84</pre> </td></tr> </table> <div>Another example illustrates the power and usage of the code. We also show the output in this example. While a bit messy, the user can see how we handle the degrees in both cases.</div> <table class="examples"><tr><td><pre>i14 : S=kk[a,b,c] o14 = S o14 : PolynomialRing</pre> </td></tr> <tr><td><pre>i15 : m=matrix{{a,0},{b,a},{0,b}} o15 = | a 0 | | b a | | 0 b | 3 2 o15 : Matrix S <--- S</pre> </td></tr> <tr><td><pre>i16 : i=minors(2,m) 2 2 o16 = ideal (a , a*b, b ) o16 : Ideal of S</pre> </td></tr> <tr><td><pre>i17 : time reesIdeal i -- used 0.027996 seconds 2 o17 = ideal (b*w - a*w , b*w - a*w , w - w w ) 1 2 0 1 1 0 2 o17 : Ideal of S[w , w , w ] 0 1 2</pre> </td></tr> <tr><td><pre>i18 : res i 1 3 2 o18 = S <-- S <-- S <-- 0 0 1 2 3 o18 : ChainComplex</pre> </td></tr> <tr><td><pre>i19 : m=random(S^3,S^{4:-1}) o19 = | -10a-10b+17c -40a-5b+31c -29a+28b-18c -31a-20b+48c | | -20a+2b-c -37a+11b+40c 20a+25b-40c 26a+14b+22c | | -47a+36b+12c -8a-15b-2c -3a+4b+9c -2a-49b-48c | 3 4 o19 : Matrix S <--- S</pre> </td></tr> <tr><td><pre>i20 : i=minors(3,m) 3 2 2 3 2 2 2 o20 = ideal (- 42a + 4a b - 43a*b + 26b - 11a c - 21a*b*c + 42b c - 3a*c ----------------------------------------------------------------------- 2 3 3 2 2 3 2 2 + 10b*c - 25c , - 48a - 5a b + 6a*b + 13b + 10a c - 22a*b*c + 9b c ----------------------------------------------------------------------- 2 2 3 3 2 2 3 2 + 17a*c + 41b*c + 37c , - 34a - 37a b + 31a*b + 36b - 14a c + ----------------------------------------------------------------------- 2 2 3 3 2 2 3 2 33a*b*c - 23b c - b*c + 19c , - 26a + 23a b + 47a*b - 35b + 18a c + ----------------------------------------------------------------------- 2 2 2 3 23a*b*c + 41b c + 30a*c + 7b*c + 27c ) o20 : Ideal of S</pre> </td></tr> <tr><td><pre>i21 : time I=reesIdeal (i,i_0); -- used 0.011998 seconds o21 : Ideal of S[w , w , w , w ] 0 1 2 3</pre> </td></tr> <tr><td><pre>i22 : transpose gens I o22 = {-1, -4} | w_0c+39w_1a+26w_1b+45w_1c-45w_2a-31w_2b+10w_2c+49w_3a-28w_ {-1, -4} | w_0b+14w_1a-25w_1b+27w_1c-32w_2a-44w_2b-46w_2c+16w_3a+27w_ {-1, -4} | w_0a-18w_1a+41w_1b-20w_1c+50w_2a-39w_2b-21w_2c-26w_3a-22w_ {-3, -9} | w_0^3+2w_0^2w_1+39w_0w_1^2+17w_1^3+16w_0^2w_2-40w_0w_1w_2- ----------------------------------------------------------------------- 3b+22w_3c 3b+44w_3c 3b+16w_3c 18w_1^2w_2-2w_0w_2^2+13w_1w_2^2-21w_2^3+23w_0^2w_3-6w_0w_1w_3+47w_1^2w_ ----------------------------------------------------------------------- 3+38w_0w_2w_3+9w_1w_2w_3+11w_2^2w_3+19w_0w_3^2+29w_1w_3^2-14w_2w_3^2+ ----------------------------------------------------------------------- | | | 44w_3^3 | 4 1 o22 : Matrix (S[w , w , w , w ]) <--- (S[w , w , w , w ]) 0 1 2 3 0 1 2 3</pre> </td></tr> <tr><td><pre>i23 : i=minors(2,m); o23 : Ideal of S</pre> </td></tr> <tr><td><pre>i24 : time I=reesIdeal (i,i_0); -- used 0.075989 seconds o24 : Ideal of S[w , w , w , w , w , w , w , w , w , w , w , w , w , w , w , w , w , w ] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17</pre> </td></tr> </table> <div><b>Investigating plane curve singularities</b></div> <table class="examples"><tr><td><pre>i25 : R = ZZ/32003[x,y,z] o25 = R o25 : PolynomialRing</pre> </td></tr> <tr><td><pre>i26 : I = ideal(x,y) o26 = ideal (x, y) o26 : Ideal of R</pre> </td></tr> <tr><td><pre>i27 : cusp = ideal(x^2*z-y^3) 3 2 o27 = ideal(- y + x z) o27 : Ideal of R</pre> </td></tr> <tr><td><pre>i28 : RI = reesIdeal(I) o28 = ideal(y*w - x*w ) 0 1 o28 : Ideal of R[w , w ] 0 1</pre> </td></tr> <tr><td><pre>i29 : S = ring RI o29 = S o29 : PolynomialRing</pre> </td></tr> <tr><td><pre>i30 : totalTransform = substitute(cusp, S) + RI 3 2 o30 = ideal (- y + x z, y*w - x*w ) 0 1 o30 : Ideal of S</pre> </td></tr> <tr><td><pre>i31 : D = decompose totalTransform -- the components are the proper transform of the cuspidal curve and the exceptional curve 3 2 2 2 2 o31 = {ideal (y*w - x*w , y - x z, x*z*w - y w , z*w - y*w ), ideal (y, 0 1 0 1 0 1 ----------------------------------------------------------------------- x)} o31 : List</pre> </td></tr> <tr><td><pre>i32 : totalTransform = first flattenRing totalTransform 3 2 o32 = ideal (- y + x z, w y - w x) 0 1 ZZ o32 : Ideal of -----[w , w , x, y, z] 32003 0 1</pre> </td></tr> <tr><td><pre>i33 : L = primaryDecomposition totalTransform 3 2 2 2 2 2 o33 = {ideal (w y - w x, y - x z, w x*z - w y , w z - w y), ideal (y , x*y, 0 1 0 1 0 1 ----------------------------------------------------------------------- 2 x , w y - w x)} 0 1 o33 : List</pre> </td></tr> <tr><td><pre>i34 : apply(L, i -> (degree i)/(degree radical i)) o34 = {1, 2} o34 : List</pre> </td></tr> </table> <div>The total transform of the cusp contains the exceptional with multiplicity two. The proper transform of the cusp is a smooth curve but is tangent to the exceptional curve.</div> <table class="examples"><tr><td><pre>i35 : use ring L_0 ZZ o35 = -----[w , w , x, y, z] 32003 0 1 o35 : PolynomialRing</pre> </td></tr> <tr><td><pre>i36 : singular = ideal(singularLocus(L_0)); ZZ o36 : Ideal of -----[w , w , x, y, z] 32003 0 1</pre> </td></tr> <tr><td><pre>i37 : SL = saturate(singular, ideal(x,y,z)); ZZ o37 : Ideal of -----[w , w , x, y, z] 32003 0 1</pre> </td></tr> <tr><td><pre>i38 : saturate(SL, ideal(w_0,w_1)) -- we get 1 so it is smooth. o38 = ideal 1 ZZ o38 : Ideal of -----[w , w , x, y, z] 32003 0 1</pre> </td></tr> </table> </div> </div> <div class="single"><h2>Caveat</h2> <div><div/> </div> </div> <div class="single"><h2>See also</h2> <ul><li><span><a href="_symmetric__Kernel.html" title="Compute the Rees ring of the image of a matrix">symmetricKernel</a> -- Compute the Rees ring of the image of a matrix</span></li> <li><span><a href="_rees__Algebra.html" title="compute the defining ideal of the Rees Algebra">reesAlgebra</a> -- compute the defining ideal of the Rees Algebra</span></li> </ul> </div> <div class="waystouse"><h2>Ways to use <tt>reesIdeal</tt> :</h2> <ul><li>reesIdeal(Ideal)</li> <li>reesIdeal(Ideal,RingElement)</li> <li>reesIdeal(Module)</li> <li>reesIdeal(Module,RingElement)</li> </ul> </div> </div> </body> </html>