<?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>noetherNormalization -- data for Noether normalization</title> <link rel="stylesheet" type="text/css" href="../../../../Macaulay2/Style/doc.css"/> </head> <body> <table class="buttons"> <tr> <td><div>next | <a href="index.html">previous</a> | forward | <a href="index.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>noetherNormalization -- data for Noether normalization</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>(f,J,X) = noetherNormalization C</tt></div> </dd></dl> </div> </li> <li><div class="single">Inputs:<ul><li><span><tt>C</tt>, which is either <span>an <a href="../../Macaulay2Doc/html/___Ideal.html">ideal</a></span> <tt>I</tt>, or <span>a <a href="../../Macaulay2Doc/html/___Quotient__Ring.html">quotient ring</a></span> <tt>R/I</tt> where <tt>R</tt> is <span>a <a href="../../Macaulay2Doc/html/___Polynomial__Ring.html">polynomial ring</a></span></span></li> <li><span><a href="../../Macaulay2Doc/html/___Basis__Element__Limit.html" title="name for an optional argument">BasisElementLimit</a></span></li> <li><span>will take</span></li> </ul> </div> </li> <li><div class="single">Outputs:<ul><li><span><tt>f</tt>, <span>a <a href="../../Macaulay2Doc/html/___Ring__Map.html">ring map</a></span>, an automorphism of <tt>R</tt></span></li> <li><span><tt>J</tt>, <span>an <a href="../../Macaulay2Doc/html/___Ideal.html">ideal</a></span>, the image of <tt>I</tt> under <tt>f</tt></span></li> <li><span><tt>X</tt>, <span>a <a href="../../Macaulay2Doc/html/___List.html">list</a></span>, a list of variables which are algebraically independent in <tt>R/J</tt></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><tt>LimitList => </tt><span><span>a <a href="../../Macaulay2Doc/html/___List.html">list</a></span>, <span>default value {5, 20, 40, 60, 80, infinity}</span>, gives the value which </span></span></li> <li><span><tt>RandomRange => </tt><span><span>an <a href="../../Macaulay2Doc/html/___Z__Z.html">integer</a></span>, <span>default value 0</span>, if not 0, gives a integer bound for the random coefficients. If 0, then chooses random elements from the coefficient field.</span></span></li> <li><span><a href="_noether__Normalization.html">Verbose => ...</a>, -- data for Noether normalization</span></li> </ul> </div> </li> </ul> </div> <div class="single"><h2>Description</h2> <div>The computations performed in the routine <tt>noetherNormalization</tt> use a random linear change of coordinates, hence one should expect the output to change each time the routine is executed.<table class="examples"><tr><td><pre>i1 : R = QQ[x_1..x_4];</pre> </td></tr> <tr><td><pre>i2 : I = ideal(x_2^2+x_1*x_2+1, x_1*x_2*x_3*x_4+1); o2 : Ideal of R</pre> </td></tr> <tr><td><pre>i3 : (f,J,X) = noetherNormalization I 1 2 1 o3 = (map(R,R,{x + --x + x , x , 8x + 3x + x , x }), ideal (2x + --x x 1 10 2 4 1 1 2 3 2 1 10 1 2 ------------------------------------------------------------------------ 3 19 2 2 3 3 2 1 2 2 + x x + 1, 8x x + --x x + --x x + x x x + --x x x + 8x x x + 1 4 1 2 5 1 2 10 1 2 1 2 3 10 1 2 3 1 2 4 ------------------------------------------------------------------------ 2 3x x x + x x x x + 1), {x , x }) 1 2 4 1 2 3 4 4 3 o3 : Sequence</pre> </td></tr> </table> The next example shows how when we use the lexicographical ordering, we can see the integrality of <tt>R/ f I</tt> over the polynomial ring in <tt>dim(R/I)</tt> variables:<table class="examples"><tr><td><pre>i4 : R = QQ[x_1..x_5, MonomialOrder => Lex];</pre> </td></tr> <tr><td><pre>i5 : I = ideal(x_2*x_1-x_5^3, x_5*x_1^3); o5 : Ideal of R</pre> </td></tr> <tr><td><pre>i6 : (f,J,X) = noetherNormalization I 9 7 o6 = (map(R,R,{-x + 9x + x , x , x + x + x , -x + 9x + x , x }), ideal 5 1 2 5 1 1 2 4 8 1 2 3 2 ------------------------------------------------------------------------ 9 2 3 729 3 2187 2 2 243 2 2187 3 (-x + 9x x + x x - x , ---x x + ----x x + ---x x x + ----x x + 5 1 1 2 1 5 2 125 1 2 25 1 2 25 1 2 5 5 1 2 ------------------------------------------------------------------------ 486 2 27 2 4 3 2 2 3 ---x x x + --x x x + 729x + 243x x + 27x x + x x ), {x , x , x }) 5 1 2 5 5 1 2 5 2 2 5 2 5 2 5 5 4 3 o6 : Sequence</pre> </td></tr> <tr><td><pre>i7 : transpose gens gb J o7 = {-10} | x_2^10 {-10} | 45x_1x_2x_5^6-39366x_2^9x_5-2657205x_2^9+2187x_2^8x_5^2+ {-9} | 54675x_1x_2^2x_5^3-45x_1x_2x_5^5+6075x_1x_2x_5^4+39366x_ {-9} | 26904200625x_1x_2^3+22143375x_1x_2^2x_5^2+5978711250x_1x {-3} | 9x_1^2+45x_1x_2+5x_1x_5-5x_2^3 ------------------------------------------------------------------------ 295245x_2^8x_5-81x_2^7x_5^3-32805x_2^7x_5^2+3645x_2^6x_5^3-405x_2^5x_5 2^9-2187x_2^8x_5-98415x_2^8+81x_2^7x_5^2+21870x_2^7x_5-3645x_2^6x_5^2+ _2^2x_5+90x_1x_2x_5^5-6075x_1x_2x_5^4+1640250x_1x_2x_5^3+332150625x_1x ------------------------------------------------------------------------ ^4+45x_2^4x_5^5+225x_2^2x_5^6+25x_2x_5^7 405x_2^5x_5^3-45x_2^4x_5^4+6075x_2^4x_5^3+273375x_2^3x_5^3-225x_2^2x_5^5 _2x_5^2-78732x_2^9+4374x_2^8x_5+295245x_2^8-162x_2^7x_5^2-54675x_2^7x_5+ ------------------------------------------------------------------------ +60750x_2^2x_5^4-25x_2x_5^6+3375x_2x_5^5 1476225x_2^7+7290x_2^6x_5^2-492075x_2^6x_5-66430125x_2^6-810x_2^5x_5^3+ ------------------------------------------------------------------------ 54675x_2^5x_5^2+7381125x_2^5x_5+2989355625x_2^5+90x_2^4x_5^4-6075x_2^4x_ ------------------------------------------------------------------------ 5^3+1640250x_2^4x_5^2+332150625x_2^4x_5+134521003125x_2^4+110716875x_2^ ------------------------------------------------------------------------ 3x_5^2+44840334375x_2^3x_5+450x_2^2x_5^5-30375x_2^2x_5^4+20503125x_2^2x_ ------------------------------------------------------------------------ 5^3+4982259375x_2^2x_5^2+50x_2x_5^6-3375x_2x_5^5+911250x_2x_5^4+ ------------------------------------------------------------------------ | | | 184528125x_2x_5^3 | | 5 1 o7 : Matrix R <--- R</pre> </td></tr> </table> If <tt>noetherNormalization</tt> is unable to place the ideal into the desired position after a few tries, the following warning is given:<table class="examples"><tr><td><pre>i8 : R = ZZ/2[a,b];</pre> </td></tr> <tr><td><pre>i9 : I = ideal(a^2*b+a*b^2+1); o9 : Ideal of R</pre> </td></tr> <tr><td><pre>i10 : (f,J,X) = noetherNormalization I --warning: no good linear transformation found by noetherNormalization 2 2 o10 = (map(R,R,{a + b, a}), ideal(a b + a*b + 1), {b}) o10 : Sequence</pre> </td></tr> </table> Here is an example with the option <tt>Verbose => true</tt>:<table class="examples"><tr><td><pre>i11 : R = QQ[x_1..x_4];</pre> </td></tr> <tr><td><pre>i12 : I = ideal(x_2^2+x_1*x_2+1, x_1*x_2*x_3*x_4+1); o12 : Ideal of R</pre> </td></tr> <tr><td><pre>i13 : (f,J,X) = noetherNormalization(I,Verbose => true) --trying random transformation: 1 --trying with basis element limit: 5 --trying with basis element limit: 20 1 3 5 6 11 2 o13 = (map(R,R,{--x + -x + x , x , -x + -x + x , x }), ideal (--x + 10 1 2 2 4 1 3 1 7 2 3 2 10 1 ----------------------------------------------------------------------- 3 1 3 181 2 2 9 3 1 2 3 2 -x x + x x + 1, -x x + ---x x + -x x + --x x x + -x x x + 2 1 2 1 4 6 1 2 70 1 2 7 1 2 10 1 2 3 2 1 2 3 ----------------------------------------------------------------------- 5 2 6 2 -x x x + -x x x + x x x x + 1), {x , x }) 3 1 2 4 7 1 2 4 1 2 3 4 4 3 o13 : Sequence</pre> </td></tr> </table> The first number in the output above gives the number of linear transformations performed by the routine while attempting to place <tt>I</tt> into the desired position. The second number tells which <a href="../../Macaulay2Doc/html/___Basis__Element__Limit.html" title="name for an optional argument">BasisElementLimit</a> was used when computing the (partial) Groebner basis. By default, <tt>noetherNormalization</tt> tries to use a partial Groebner basis. It does this by sequentially computing a Groebner basis with the option <a href="../../Macaulay2Doc/html/___Basis__Element__Limit.html" title="name for an optional argument">BasisElementLimit</a> set to predetermined values. The default values come from the following list:<tt>{5,20,40,60,80,infinity}</tt>. To set the values manually, use the option <tt>LimitList</tt>:<table class="examples"><tr><td><pre>i14 : R = QQ[x_1..x_4]; </pre> </td></tr> <tr><td><pre>i15 : I = ideal(x_2^2+x_1*x_2+1, x_1*x_2*x_3*x_4+1); o15 : Ideal of R</pre> </td></tr> <tr><td><pre>i16 : (f,J,X) = noetherNormalization(I,Verbose => true,LimitList => {5,10}) --trying random transformation: 1 --trying with basis element limit: 5 --trying with basis element limit: 10 7 10 4 16 2 o16 = (map(R,R,{-x + --x + x , x , 4x + -x + x , x }), ideal (--x + 9 1 3 2 4 1 1 3 2 3 2 9 1 ----------------------------------------------------------------------- 10 28 3 388 2 2 40 3 7 2 10 2 --x x + x x + 1, --x x + ---x x + --x x + -x x x + --x x x + 3 1 2 1 4 9 1 2 27 1 2 9 1 2 9 1 2 3 3 1 2 3 ----------------------------------------------------------------------- 2 4 2 4x x x + -x x x + x x x x + 1), {x , x }) 1 2 4 3 1 2 4 1 2 3 4 4 3 o16 : Sequence</pre> </td></tr> </table> To limit the randomness of the coefficients, use the option <tt>RandomRange</tt>. Here is an example where the coefficients of the linear transformation are random integers from <tt>-2</tt> to <tt>2</tt>:<table class="examples"><tr><td><pre>i17 : R = QQ[x_1..x_4];</pre> </td></tr> <tr><td><pre>i18 : I = ideal(x_2^2+x_1*x_2+1, x_1*x_2*x_3*x_4+1); o18 : Ideal of R</pre> </td></tr> <tr><td><pre>i19 : (f,J,X) = noetherNormalization(I,Verbose => true,RandomRange => 2) --trying random transformation: 1 --trying with basis element limit: 5 --trying with basis element limit: 20 --trying with basis element limit: 40 --trying with basis element limit: 60 --trying with basis element limit: 80 --trying with basis element limit: infinity --trying random transformation: 2 --trying with basis element limit: 5 --trying with basis element limit: 20 --trying with basis element limit: 40 --trying with basis element limit: 60 --trying with basis element limit: 80 --trying with basis element limit: infinity --trying random transformation: 3 --trying with basis element limit: 5 --trying with basis element limit: 20 2 o19 = (map(R,R,{6x + 3x + x , x , 3x + x + x , x }), ideal (7x + 3x x + 1 2 4 1 1 2 3 2 1 1 2 ----------------------------------------------------------------------- 3 2 2 3 2 2 2 x x + 1, 18x x + 15x x + 3x x + 6x x x + 3x x x + 3x x x + 1 4 1 2 1 2 1 2 1 2 3 1 2 3 1 2 4 ----------------------------------------------------------------------- 2 x x x + x x x x + 1), {x , x }) 1 2 4 1 2 3 4 4 3 o19 : Sequence</pre> </td></tr> </table> <p>This symbol is provided by the package <a href="index.html" title="routines related to Noether normalization">NoetherNormalization</a>.</p> </div> </div> <div class="waystouse"><h2>Ways to use <tt>noetherNormalization</tt> :</h2> <ul><li>noetherNormalization(Ideal)</li> <li>noetherNormalization(PolynomialRing)</li> <li>noetherNormalization(QuotientRing)</li> </ul> </div> </div> </body> </html>