Sophie

Sophie

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

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>monoid -- make or retrieve a monoid</title>
<link rel="stylesheet" type="text/css" href="../../../../Macaulay2/Style/doc.css"/>
</head>
<body>
<table class="buttons">
  <tr>
    <td><div><a href="_monomial_sporderings.html">next</a> | <a href="_polynomial_springs.html">previous</a> | <a href="_monomial_sporderings.html">forward</a> | <a href="_polynomial_springs.html">backward</a> | <a href="_rings.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="_rings.html" title="">rings</a> > <a href="_monoid.html" title="make or retrieve a monoid">monoid</a></div>
<hr/>
<div><h1>monoid -- make or retrieve a monoid</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>monoid [a,b,c,...]</tt></div>
</dd></dl>
</div>
</li>
<li><div class="single">Inputs:<ul><li><span><tt>[a,b,c,...]</tt>, an array of variables, as well as optional arguments.  Alternatively, specifying a list {a,b,c,...} produces a monoid with a local ordering, by inserting the option <tt>Local => true</tt></span></li>
</ul>
</div>
</li>
<li><div class="single">Outputs:<ul><li><span><span>a <a href="___General__Ordered__Monoid.html">general ordered monoid</a></span>, a new monoid</span></li>
</ul>
</div>
</li>
<li><div class="single"><a href="_using_spfunctions_spwith_spoptional_spinputs.html">Optional inputs</a>:<ul><li><span><tt>DegreeRank => </tt><span><span>an <a href="___Z__Z.html">integer</a></span>, <span>default value null</span>, the length of each multidegree</span></span></li>
<li><span><tt>Degrees => </tt><span><span>a <a href="___List.html">list</a></span>, <span>default value null</span>, a list of degrees or multidegrees of the variables.  Each degree is an integers, and each multidegree is a list of integers.  Degrees will be converted into multidegrees of length 1.</span></span></li>
<li><span><tt>Inverses => </tt><span><span>a <a href="___Boolean.html">Boolean value</a></span>, <span>default value false</span>, whether negative exponents will be allowed, making the monoid into a group</span></span></li>
<li><span><tt>Global => </tt><span><span>a <a href="___Boolean.html">Boolean value</a></span>, <span>default value true</span>, whether monoid rings based on this monoid are to be global rings.  If set to <a href="_true.html" title="">true</a>, and the option <tt>Inverses=>true</tt> is not specified, then an error is signalled if any of the variables are not greater than 1 in the monomial ordering, as required by the standard theory of Gröbner bases.</span></span></li>
<li><span><tt>Local => </tt><span><span>a <a href="___Boolean.html">Boolean value</a></span>, <span>default value false</span>, whether this ring is to be a local ring; implies <tt>Global => false</tt></span></span></li>
<li><span><tt>MonomialOrder => </tt><span><span>a <a href="___List.html">list</a></span>, <span>default value {GRevLex, Position => Up}</span>, an option for specifying the monomial ordering, see <a href="___Monomial__Order.html" title="monomial ordering">MonomialOrder</a></span></span></li>
<li><span><tt>MonomialSize => </tt><span><span>an <a href="___Z__Z.html">integer</a></span>, <span>default value 32</span>, the minimum number of bits to be used for storing each exponent in a monomial.  The exponents are stored as signed binary numbers, so <tt>n</tt> bits allows an exponent as large as 2<sup>n-1</sup>-1.  Useful values are 8, 16, and 32.</span></span></li>
<li><span><tt>SkewCommutative => </tt><span><span>default value {}</span>, specifies whether some of the variables skew-commute with each other.  The value <tt>true</tt> indicates that all of the variables skew-commute.  Otherwise, the value of the option should be a list of variables, variables names, or integers that will be interpreted as indices of the variables.</span></span></li>
<li><span><tt>Variables => </tt><span><span>default value null</span>, a list of variables names, or the number of variables to be made.  This option is useful for those situations when one doesn't care about the names of the variables in a ring or monoid, or when one is creating a tensor product ring, symmetric algebra, or other ring, and one wants control over the names of the ring variables.</span></span></li>
<li><span><tt>VariableBaseName => </tt><span><span>a <a href="___Symbol.html">symbol</a></span>, <span>default value p</span>, a symbol <tt>x</tt> to be used as the base for constructing a list of subscripted variable names of class <a href="___Indexed__Variable.html" title="the class of all indexed variables">IndexedVariable</a>, of the form <tt>x_0, ..., x_(n-1)</tt>.</span></span></li>
<li><span><tt>Weights => </tt><span><span>a <a href="___List.html">list</a></span>, <span>default value {}</span>, a list of integers, or a list of lists of integers, that specify weights for the variables.  The orderings by these weight vectors is prepended to the list of orderings provided by the <a href="___Monomial__Order.html" title="monomial ordering">MonomialOrder</a> option.</span></span></li>
<li><span><tt>WeylAlgebra => </tt><span><span>a <a href="___List.html">list</a></span>, <span>default value {}</span>, a list of options of the form <tt>x=>dx</tt>, which specifies that <tt>dx</tt> plays the role of the derivative with respect to <tt>x</tt> in the resulting Weyl algebra when this monoid is made into a polynomial ring.</span></span></li>
<li><span><tt>Heft => </tt><span><span>a <a href="___List.html">list</a></span>, <span>default value null</span>, a list of integers (called a heft vector): its dot product (presumably positive) with the degrees of the variables will be used as a computational aid in certain routines.  If no value for this option is specified, one will be computed for you, and thus there is no need to provide one unless the time spent computing one is onerous; if no heft vector exists, certain computations will not be supported, and others may run more slowly.</span></span></li>
<li><span><tt>Join => </tt><span><span>a <a href="___Boolean.html">Boolean value</a></span>, <span>default value null</span>, whether the degrees in a new monoid ring based on this monoid will be obtained by joining the degrees in the monoid with the degrees in the coefficient ring; default: <a href="_true.html" title="">true</a></span></span></li>
<li><span><tt>DegreeMap => </tt><span><span>a <a href="___Function.html">function</a></span>, <span>default value null</span>, the degree map, to be used if <tt>Join => false</tt> is given: a (linear) function from the multidegrees of the (future) coefficient ring to the multidegrees of the monoid ring (polynomial ring) made from it with the monoid created here, to be used in determining homogeneity and in determining degrees in tensor products.  The default is the <a href="_identity.html" title="the identity function">identity</a>.</span></span></li>
<li><span><tt>DegreeLift => </tt><span><span>a <a href="___Function.html">function</a></span>, <span>default value null</span>, the degree lift function: a (partial) inverse of the degree map, giving an error when lifting is not possible.  If the degree map is the identity, then by default the identity map will be provided.</span></span></li>
</ul>
</div>
</li>
</ul>
</div>
<div class="single"><h2>Description</h2>
<div><p>The function <a href="_monoid.html" title="make or retrieve a monoid">monoid</a> is called whenever a polynomial ring is created, see <a href="___Ring_sp__Array.html" title="the standard way to make a polynomial ring">Ring Array</a>, or when a local polynomial ring is made, see <a href="___Ring_sp__List.html" title="make a local polynomial ring">Ring List</a>.  Some of the options provided when making a monoid don't take effect until the monoid is made into a polynomial ring.</p>
Let's make a free ordered commutative monoid on the variables <tt>a,b,c</tt>, with degrees 2, 3, and 4, respectively.<table class="examples"><tr><td><pre>i1 : M = monoid [a,b,c,Degrees=>{2,3,4}]

o1 = M

o1 : GeneralOrderedMonoid</pre>
</td></tr>
<tr><td><pre>i2 : degrees M

o2 = {{2}, {3}, {4}}

o2 : List</pre>
</td></tr>
<tr><td><pre>i3 : M_0 * M_1^6

        6
o3 = a*b

o3 : M</pre>
</td></tr>
</table>
Use <a href="_use.html" title="install or activate object">use</a> to arrange for the variables to be assigned their values in the monoid.<table class="examples"><tr><td><pre>i4 : a

o4 = a

o4 : M</pre>
</td></tr>
<tr><td><pre>i5 : use M

o5 = M

o5 : GeneralOrderedMonoid</pre>
</td></tr>
<tr><td><pre>i6 : a * b^6

        6
o6 = a*b

o6 : M</pre>
</td></tr>
</table>
The options used when the monoid was created can be recovered with <a href="_options.html" title="get options">options</a>.<table class="examples"><tr><td><pre>i7 : options M

o7 = OptionTable{DegreeLift => null                     }
                 DegreeMap => null
                 DegreeRank => 1
                 Degrees => {{2}, {3}, {4}}
                 Global => true
                 Heft => {1}
                 Inverses => false
                 Join => null
                 Local => false
                 MonomialOrder => {MonomialSize => 32  }
                                  {GRevLex => {2, 3, 4}}
                                  {Position => Up      }
                 SkewCommutative => {}
                 Variables => {a, b, c}
                 WeylAlgebra => {}

o7 : OptionTable</pre>
</td></tr>
</table>
The variables listed may be symbols or indexed variables. The values assigned to these variables are the corresponding monoid generators.  The function <a href="_base__Name.html" title="the base name of a generator">baseName</a> may be used to recover the original symbol or indexed variable.<p>The <a href="___Heft.html" title="name for an optional argument">Heft</a> option is used in particular by <a href="___Ext_lp__Module_cm__Module_rp.html" title="total Ext module">Ext(Module,Module)</a>.</p>
<table class="examples"><tr><td><pre>i8 : R = ZZ[x,y, Degrees => {-1,-2}, Heft => {-1}]

o8 = R

o8 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i9 : degree \ gens R

o9 = {{-1}, {-2}}

o9 : List</pre>
</td></tr>
<tr><td><pre>i10 : transpose vars R

o10 = {1} | x |
      {2} | y |

              2       1
o10 : Matrix R  &lt;--- R</pre>
</td></tr>
</table>
In this example we make a Weyl algebra.<table class="examples"><tr><td><pre>i11 : R = ZZ/101[x,dx,y,dy,WeylAlgebra => {x=>dx, y=>dy}]

o11 = R

o11 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i12 : dx*x

o12 = x*dx + 1

o12 : R</pre>
</td></tr>
<tr><td><pre>i13 : dx*x^10

       10        9
o13 = x  dx + 10x

o13 : R</pre>
</td></tr>
<tr><td><pre>i14 : dx*y^10

          10
o14 = dx*y

o14 : R</pre>
</td></tr>
</table>
In this example we make a skew commutative ring.<table class="examples"><tr><td><pre>i15 : R = ZZ[x,y,z,SkewCommutative=>{x,y}]

o15 = R

o15 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i16 : x*y

o16 = x*y

o16 : R</pre>
</td></tr>
<tr><td><pre>i17 : y*x

o17 = -x*y

o17 : R</pre>
</td></tr>
<tr><td><pre>i18 : x*z-z*x

o18 = 0

o18 : R</pre>
</td></tr>
</table>
By default, (multi)degrees are concatenated when forming polynomial rings over polynomial rings, as can be seen by examining the corresponding flattened monoid, which displays information about all of the variables.<table class="examples"><tr><td><pre>i19 : QQ[x][y]

o19 = QQ[x][y]

o19 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i20 : oo.FlatMonoid

o20 = [y, x, Degrees => {{1}, {0}}, Heft => {2:1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 2]
                         {0}  {1}                                   {GRevLex => {1}    }
                                                                    {Position => Up    }
                                                                    {GRevLex => {1}    }

o20 : GeneralOrderedMonoid</pre>
</td></tr>
<tr><td><pre>i21 : QQ[x][y][z]

o21 = QQ[x][y][z]

o21 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i22 : oo.FlatMonoid

o22 = [z, y, x, Degrees => {{1}, {0}, {0}}, Heft => {3:1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 3]
                            {0}  {1}  {0}                                   {GRevLex => {1}    }
                            {0}  {0}  {1}                                   {Position => Up    }
                                                                            {2:(GRevLex => {1})}

o22 : GeneralOrderedMonoid</pre>
</td></tr>
</table>
That behavior can be overridden with the <a href="___Join.html" title="name for an optional argument">Join</a> option.<table class="examples"><tr><td><pre>i23 : QQ[x][y,Join => false]

o23 = QQ[x][y]

o23 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i24 : oo.FlatMonoid

o24 = [y, x, Degrees => {2:1}, Heft => {1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 1]
                                                             {GRevLex => {1}    }
                                                             {Position => Up    }
                                                             {GRevLex => {1}    }

o24 : GeneralOrderedMonoid</pre>
</td></tr>
</table>
A degree map may be provided, and it will be used in computing tensor products.<table class="examples"><tr><td><pre>i25 : A = QQ[x];</pre>
</td></tr>
<tr><td><pre>i26 : B = A[y,Join => false,DegreeMap => x -> 7*x]

o26 = B

o26 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i27 : B.FlatMonoid

o27 = [y, x, Degrees => {1, 7}, Heft => {1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 1]
                                                              {GRevLex => {1}    }
                                                              {Position => Up    }
                                                              {GRevLex => {1}    }

o27 : GeneralOrderedMonoid</pre>
</td></tr>
<tr><td><pre>i28 : degrees A^{-1,-2}

o28 = {{1}, {2}}

o28 : List</pre>
</td></tr>
<tr><td><pre>i29 : degrees (B**A^{-1,-2})

o29 = {{7}, {14}}

o29 : List</pre>
</td></tr>
</table>
For certain applications, such as lifting matrices, a degree lift function can be provided.<table class="examples"><tr><td><pre>i30 : B = A[y,Join => false,DegreeMap => x -> 7*x,
           DegreeLift => x -> apply(x, d -> lift(d/7,ZZ))]

o30 = B

o30 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i31 : matrix {{x_B}}

o31 = | x |

              1       1
o31 : Matrix B  &lt;--- B</pre>
</td></tr>
<tr><td><pre>i32 : degrees oo

o32 = {{{0}}, {{7}}}

o32 : List</pre>
</td></tr>
<tr><td><pre>i33 : lift(matrix {{x_B}},A)

o33 = | x |

              1       1
o33 : Matrix A  &lt;--- A</pre>
</td></tr>
<tr><td><pre>i34 : degrees oo

o34 = {{{0}}, {{1}}}

o34 : List</pre>
</td></tr>
</table>
<div><h2>Synopsis</h2>
<ul><li><div class="list"><dl class="element"><dt class="heading">Usage: </dt><dd class="value"><div><tt>monoid R</tt></div>
</dd></dl>
</div>
</li>
<li>Inputs:<ul><li><span><tt>R</tt>, <span>a <a href="___Ring.html">ring</a></span></span></li>
</ul>
</li>
<li>Outputs:<ul><li><span>the monoid of monomials in the polynomial ring <tt>R</tt></span></li>
</ul>
</li>
</ul>
<p>If <tt>R</tt> is a quotient ring of a polynomial ring <tt>S</tt>, then the monoid of <tt>S</tt> is returned.</p>
<table class="examples"><tr><td><pre>i35 : R = QQ[a..d, Weights=>{1,2,3,4}]

o35 = R

o35 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i36 : monoid R

o36 = [a..d, Degrees => {4:1}, Heft => {1}, MonomialOrder => {Weights => {1..4} }, DegreeRank => 1]
                                                             {MonomialSize => 32}
                                                             {GRevLex => {4:1}  }
                                                             {Position => Up    }

o36 : GeneralOrderedMonoid</pre>
</td></tr>
</table>
</div>
</div>
</div>
<div class="waystouse"><h2>Ways to use <tt>monoid</tt> :</h2>
<ul><li>monoid(Array)</li>
<li>monoid(List)</li>
<li>monoid(PolynomialRing)</li>
<li>monoid(QuotientRing)</li>
<li><span>monoid(SchurRing), see <span><a href="../../SchurRings/html/___Schur__Ring.html" title="the class of all Schur rings">SchurRing</a> -- the class of all Schur rings</span></span></li>
</ul>
</div>
</div>
</body>
</html>