Sophie

Sophie

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

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>quotient(..., Strategy => ...) -- Possible strategies are: Iterate, Linear, and Quotient</title>
<link rel="stylesheet" type="text/css" href="../../../../Macaulay2/Style/doc.css"/>
</head>
<body>
<table class="buttons">
  <tr>
    <td><div><a href="_quotient_lp__Ideal_cm__Ideal_rp.html">next</a> | <a href="_quotient_lp..._cm_sp__Pair__Limit_sp_eq_gt_sp..._rp.html">previous</a> | <a href="_quotient_lp__Ideal_cm__Ideal_rp.html">forward</a> | <a href="_quotient_lp..._cm_sp__Pair__Limit_sp_eq_gt_sp..._rp.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>quotient(..., Strategy => ...) -- Possible strategies are: Iterate, Linear, and Quotient</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>quotient(I,J,Strategy=>b)</tt></div>
</dd></dl>
</div>
</li>
<li><div class="single">Inputs:<ul><li><span><tt>b</tt>, <span>a <a href="___Symbol.html">symbol</a></span>, one of<tt> Iterate, Linear, Quotient</tt></span></li>
</ul>
</div>
</li>
</ul>
</div>
<div class="single"><h2>Description</h2>
<div>Suppose that <tt>I</tt> is the image of a free module <tt>FI</tt> in a quotient module <tt>G</tt>, and <tt>J</tt> is the image of the free module <tt>FJ</tt> in <tt>G</tt>.<p/>
<p/>
The default is <tt>Strategy=>Quotient</tt>, which works as follows:<p/>
compute the first components of the syzygies of <pre>map R++((dual FJ)**FI --> (dual FJ) ** G.</pre>
<p/>
If <tt>Strategy=>Iterate</tt> then quotient first computes the quotient <tt>I1</tt> by the first generator of <tt>J</tt>.  It then checks whether this quotient already annihilates the second generator of <tt>J</tt> mod <tt>I</tt>.  If so, it goes on to the third generator; else it intersects <tt>I1</tt> with the quotient of <tt>I</tt> by the second generator to produce a new <tt>I1</tt>.  It then iterates this process, working through the generators one at a time.<p/>
To use <tt>Strategy=>Linear</tt> the argument <tt>J</tt> must be a principal ideal, generated by a linear form. A change of variables is made so that this linear form becomes the last variable. Then a reverse lex Gröbner basis is used, and the quotient of the initial ideal by the last variable is computed combinatorially. This set of monomial is then lifted back to a set of generators for the quotient.<p/>
For further information see for example Exercise 15.41 in Eisenbud's Commutative Algebra with a View Towards Algebraic Geometry.<p/>
The following examples show timings for the different strategies.<p/>
<tt>Strategy=>Iterate</tt> is sometimes faster for ideals with a small number of generators:<table class="examples"><tr><td><pre>i1 : n = 6

o1 = 6</pre>
</td></tr>
<tr><td><pre>i2 : S = ZZ/101[vars(0..n-1)];</pre>
</td></tr>
<tr><td><pre>i3 : i1 = monomialCurveIdeal(S, 1..n-1)

             2                                          2                  
o3 = ideal (e  - d*f, d*e - c*f, c*e - b*f, b*e - a*f, d  - b*f, c*d - a*f,
     ------------------------------------------------------------------------
                 2                    2
     b*d - a*e, c  - a*e, b*c - a*d, b  - a*c)

o3 : Ideal of S</pre>
</td></tr>
<tr><td><pre>i4 : i2 = monomialCurveIdeal(S, 1..n-1)

             2                                          2                  
o4 = ideal (e  - d*f, d*e - c*f, c*e - b*f, b*e - a*f, d  - b*f, c*d - a*f,
     ------------------------------------------------------------------------
                 2                    2
     b*d - a*e, c  - a*e, b*c - a*d, b  - a*c)

o4 : Ideal of S</pre>
</td></tr>
<tr><td><pre>i5 : j1 = ideal(map(S^1,S^n, (p,q)->S_q^5))

             5   5   5   5   5   5
o5 = ideal (a , b , c , d , e , f )

o5 : Ideal of S</pre>
</td></tr>
<tr><td><pre>i6 : j2 = ideal(map(S^1,S^n, (p,q)->S_q^5))

             5   5   5   5   5   5
o6 = ideal (a , b , c , d , e , f )

o6 : Ideal of S</pre>
</td></tr>
<tr><td><pre>i7 : time quotient(i1^3,j1^2,Strategy=>Iterate);
     -- used 0.470928 seconds

o7 : Ideal of S</pre>
</td></tr>
<tr><td><pre>i8 : time quotient(i2^3,j2^2,Strategy=>Quotient);
     -- used 0.834873 seconds

o8 : Ideal of S</pre>
</td></tr>
</table>
<tt>Strategy=>Quotient</tt> is faster in other cases:<table class="examples"><tr><td><pre>i9 : S =ZZ/101[vars(0..4)];</pre>
</td></tr>
<tr><td><pre>i10 : i =ideal vars S;

o10 : Ideal of S</pre>
</td></tr>
<tr><td><pre>i11 : j =ideal vars S;

o11 : Ideal of S</pre>
</td></tr>
<tr><td><pre>i12 : i3 = i^3; i5 = i^5;

o12 : Ideal of S

o13 : Ideal of S</pre>
</td></tr>
<tr><td><pre>i14 : j3 = j^3; j5 = j^5;

o14 : Ideal of S

o15 : Ideal of S</pre>
</td></tr>
<tr><td><pre>i16 : time quotient(i5,i3,Strategy=>Iterate);
     -- used 0.018997 seconds

o16 : Ideal of S</pre>
</td></tr>
<tr><td><pre>i17 : time quotient(j5,j3,Strategy=>Quotient);
     -- used 0.006999 seconds

o17 : Ideal of S</pre>
</td></tr>
</table>
</div>
</div>
<h2>Further information</h2>
<ul><li><span>Default value: <a href="___Iterate.html" title="a Strategy option value for saturate">Iterate</a></span></li>
<li><span>Function: <span><a href="_quotient.html" title="quotient or division">quotient</a> -- quotient or division</span></span></li>
<li><span>Option name: <span><a href="___Strategy.html" title="name for an optional argument">Strategy</a> -- name for an optional argument</span></span></li>
</ul>
</div>
</body>
</html>