<?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>methods for normal forms and remainder -- calculate the normal form of ring elements and matrices</title> <link rel="stylesheet" type="text/css" href="../../../../Macaulay2/Style/doc.css"/> </head> <body> <table class="buttons"> <tr> <td><div><a href="_min.html">next</a> | <a href="_methods.html">previous</a> | <a href="_min.html">forward</a> | <a href="_methods.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>methods for normal forms and remainder -- calculate the normal form of ring elements and matrices</h1> <div><div><h2>Synopsis</h2> <ul><li><div class="list"><dl class="element"><dt class="heading">Usage: </dt><dd class="value"><div><tt>f % I</tt></div> </dd></dl> </div> </li> <li>Inputs:<ul><li><span><tt>f</tt>, <span>a <a href="___Ring__Element.html">ring element</a></span>, or <span>a <a href="___Matrix.html">matrix</a></span></span></li> <li><span><tt>I</tt>, <span>an <a href="___Ideal.html">ideal</a></span>, <span>a <a href="___Matrix.html">matrix</a></span>, or <span>a <a href="___Ring__Element.html">ring element</a></span></span></li> </ul> </li> <li>Outputs:<ul><li><span>the normal form of <tt>f</tt> with respect to a Gröbner basis of I</span></li> </ul> </li> </ul> </div> The result has the same type as <tt>f</tt>. The normal form of a matrix is a matrix of the same shape whose columns have been reduced to normal form by the Gröbner basis of <tt>I</tt>.<p/> To reduce <tt>f</tt> with respect to <tt>I</tt>, a (partial) Gröbner basis of <tt>I</tt> is computed, unless it has already been done, or unless <tt>I</tt> is a <a href="___Monomial__Ideal.html" title="the class of all monomial ideals handled by the engine">MonomialIdeal</a>.<table class="examples"><tr><td><pre>i1 : R = ZZ/1277[x,y];</pre> </td></tr> <tr><td><pre>i2 : I = ideal(x^3 - 2*x*y, x^2*y - 2*y^2 + x); o2 : Ideal of R</pre> </td></tr> <tr><td><pre>i3 : (x^3 - 2*x) % I o3 = -2x o3 : R</pre> </td></tr> <tr><td><pre>i4 : (x^3) % I o4 = 0 o4 : R</pre> </td></tr> <tr><td><pre>i5 : S = ZZ[x,y];</pre> </td></tr> <tr><td><pre>i6 : 144*x^2*y^2 % (7*x*y-2) 2 2 o6 = - 3x y + 12 o6 : S</pre> </td></tr> </table> <p/> If <tt>I</tt> is a matrix between free modules, then a Gröbner basis of <tt>I</tt> is a Gröbner basis of the submodule generated by the columns of the matrix.<table class="examples"><tr><td><pre>i7 : S = QQ[a..f] o7 = S o7 : PolynomialRing</pre> </td></tr> <tr><td><pre>i8 : J = ideal(a*b*c-d*e*f,a*b*d-c*e*f, a*c*e-b*d*f) o8 = ideal (a*b*c - d*e*f, a*b*d - c*e*f, a*c*e - b*d*f) o8 : Ideal of S</pre> </td></tr> <tr><td><pre>i9 : C = res J 1 3 6 6 2 o9 = S <-- S <-- S <-- S <-- S <-- 0 0 1 2 3 4 5 o9 : ChainComplex</pre> </td></tr> <tr><td><pre>i10 : F = syz transpose C.dd_4 o10 = {-8} | 0 0 a de ce bd bc 0 0 0 0 | {-8} | 0 b 0 df cf 0 0 ad ac 0 0 | {-8} | c 0 0 -ef 0 -bf 0 -ae 0 ab 0 | {-8} | d 0 0 0 ef 0 bf 0 ae 0 ab | {-8} | 0 e 0 0 0 -df -cf 0 0 ad -ac | {-8} | 0 0 f 0 0 0 0 -de -ce bd -bc | 6 11 o10 : Matrix S <--- S</pre> </td></tr> <tr><td><pre>i11 : G = transpose C.dd_3 o11 = {-8} | bd -ce de a 0 0 | {-8} | -ac -cf df 0 -b 0 | {-8} | -bf -ab -ef 0 0 -c | {-8} | -ae -ef -ab 0 0 -d | {-8} | -df -ad ac 0 -e 0 | {-8} | ce -bd bc f 0 0 | 6 6 o11 : Matrix S <--- S</pre> </td></tr> </table> Since <tt>C</tt> is a complex, we know that the image of <tt>G</tt> is contained in the image of <tt>F</tt>.<table class="examples"><tr><td><pre>i12 : G % F o12 = 0 6 6 o12 : Matrix S <--- S</pre> </td></tr> <tr><td><pre>i13 : F % G o13 = {-8} | 0 0 0 de ce bd bc 0 bd -ce de | {-8} | 0 0 0 df cf 0 0 ad 0 -cf df | {-8} | 0 0 0 -ef 0 -bf 0 -ae -bf 0 -ef | {-8} | 0 0 0 0 ef 0 bf 0 0 -ef 0 | {-8} | 0 0 0 0 0 -df -cf 0 -df 0 0 | {-8} | 0 0 0 0 0 0 0 -de 0 0 0 | 6 11 o13 : Matrix S <--- S</pre> </td></tr> </table> The inclusion is strict since <tt>F % G != 0</tt> shows that the image of <tt>F</tt> is not contained in the image of <tt>G</tt>.<p/> Normal forms work over quotient rings too.<table class="examples"><tr><td><pre>i14 : A = QQ[x,y,z]/(x^3-y^2-3) o14 = A o14 : QuotientRing</pre> </td></tr> <tr><td><pre>i15 : I = ideal(x^4, y^4) 2 4 o15 = ideal (x*y + 3x, y ) o15 : Ideal of A</pre> </td></tr> <tr><td><pre>i16 : J = ideal(x^3*y^2, x^2*y^3) 4 2 2 3 o16 = ideal (y + 3y , x y ) o16 : Ideal of A</pre> </td></tr> <tr><td><pre>i17 : (gens J) % I o17 = 0 1 2 o17 : Matrix A <--- A</pre> </td></tr> </table> <p/> Here is an example involving rational functions.<table class="examples"><tr><td><pre>i18 : kk = frac(ZZ[a,b]) o18 = kk o18 : FractionField</pre> </td></tr> <tr><td><pre>i19 : B = kk[x,y,z] o19 = B o19 : PolynomialRing</pre> </td></tr> <tr><td><pre>i20 : I = ideal(a*x^2-b*x-y-1, 1/b*y^2-z-1) 2 1 2 o20 = ideal (a*x - b*x - y - 1, -y - z - 1) b o20 : Ideal of B</pre> </td></tr> <tr><td><pre>i21 : gens gb I o21 = | y2-bz-b x2-b/ax-1/ay-1/a | 1 2 o21 : Matrix B <--- B</pre> </td></tr> <tr><td><pre>i22 : x^2*y^2 % I 2 2 b b b b b b o22 = --x*z + -y*z + --x + -y + -z + - a a a a a a o22 : B</pre> </td></tr> </table> </div> <div class="single"><h2>See also</h2> <ul><li><span><a href="__pc.html" title="a binary operator, usually used for remainder and reduction">%</a> -- a binary operator, usually used for remainder and reduction</span></li> <li><span><a href="___Gröbner_spbases.html" title="">Gröbner bases</a></span></li> <li><span><a href="_generators.html" title="provide matrix or list of generators">generators</a> -- provide matrix or list of generators</span></li> <li><span><a href="___Matrix_sp_pc_sp__Groebner__Basis.html" title="calculate the normal form of ring elements and matrices using a (partially computed) Gröbner basis">Matrix % GroebnerBasis</a> -- calculate the normal form of ring elements and matrices using a (partially computed) Gröbner basis</span></li> </ul> </div> </div> </body> </html>