Sophie

Sophie

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

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>tensor(Ring,Ring) -- tensor product</title>
<link rel="stylesheet" type="text/css" href="../../../../Macaulay2/Style/doc.css"/>
</head>
<body>
<table class="buttons">
  <tr>
    <td><div><a href="_tensor_lp__Ring_cm__Ring__Map_cm__Matrix_rp.html">next</a> | <a href="_tensor_lp__Module_cm__Module_rp.html">previous</a> | <a href="_tensor_lp__Ring_cm__Ring__Map_cm__Matrix_rp.html">forward</a> | <a href="_tensor_lp__Module_cm__Module_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>tensor(Ring,Ring) -- tensor product</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>tensor(A,B)</tt></div>
</dd></dl>
</div>
</li>
<li><span>Function: <a href="_tensor.html" title="tensor product">tensor</a></span></li>
<li><div class="single">Inputs:<ul><li><span><tt>A</tt>, <span>a <a href="___Ring.html">ring</a></span></span></li>
<li><span><tt>B</tt>, <span>a <a href="___Ring.html">ring</a></span></span></li>
</ul>
</div>
</li>
<li><div class="single">Outputs:<ul><li><span><span>a <a href="___Ring.html">ring</a></span>, the tensor product of A with B</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>, see <a href="_monoid.html" title="make or retrieve a monoid">monoid(..., DegreeRank => ...)</a></span></span></li>
<li><span><tt>Degrees => </tt><span><span>a <a href="___List.html">list</a></span>, <span>default value null</span>, see <a href="_monoid.html" title="make or retrieve a monoid">monoid(..., Degrees => ...)</a></span></span></li>
<li><span><tt>Inverses => </tt><span><span>a <a href="___Boolean.html">Boolean value</a></span>, <span>default value false</span>, see <a href="_monoid.html" title="make or retrieve a monoid">monoid(..., Inverses => ...)</a></span></span></li>
<li><span><tt>Global => </tt><span><span>a <a href="___Boolean.html">Boolean value</a></span>, <span>default value true</span>, see <a href="_monoid.html" title="make or retrieve a monoid">monoid(..., Global => ...)</a></span></span></li>
<li><span><tt>Local => </tt><span><span>a <a href="___Boolean.html">Boolean value</a></span>, <span>default value false</span>, see <a href="_monoid.html" title="make or retrieve a monoid">monoid(..., Local => ...)</a></span></span></li>
<li><span><tt>MonomialOrder => </tt><span><span>a <a href="___List.html">list</a></span>, <span>default value null</span>, see <a href="_monoid.html" title="make or retrieve a monoid">monoid(..., 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>, see <a href="_monoid.html" title="make or retrieve a monoid">monoid(..., MonomialSize => ...)</a></span></span></li>
<li><span><tt>SkewCommutative => </tt><span><span>default value {}</span>, this option is ignored</span></span></li>
<li><span><tt>Variables => </tt><span><span>default value null</span>, see <a href="_monoid.html" title="make or retrieve a monoid">monoid(..., Variables => ...)</a></span></span></li>
<li><span><tt>VariableBaseName => </tt><span><span>a <a href="___Symbol.html">symbol</a></span>, <span>default value null</span>, see <a href="_monoid.html" title="make or retrieve a monoid">monoid(..., VariableBaseName => ...)</a></span></span></li>
<li><span><tt>Weights => </tt><span><span>a <a href="___List.html">list</a></span>, <span>default value {}</span>, ignored by this routine</span></span></li>
<li><span><tt>WeylAlgebra => </tt><span><span>a <a href="___List.html">list</a></span>, <span>default value {}</span>, ignored by this routine</span></span></li>
<li><span><tt>Heft => </tt><span><span>a <a href="___List.html">list</a></span>, <span>default value null</span>, see <a href="_monoid.html" title="make or retrieve a monoid">monoid(..., Heft => ...)</a></span></span></li>
<li><span><tt>Join => </tt><span><span>a <a href="___Boolean.html">Boolean value</a></span>, <span>default value null</span>, overrides the corresponding option in <tt>A</tt>; see <a href="_monoid.html" title="make or retrieve a monoid">monoid(..., Join => ...)</a></span></span></li>
<li><span><tt>DegreeMap => </tt><span><span>a <a href="___Boolean.html">Boolean value</a></span>, <span>default value null</span>, overrides the corresponding option in <tt>A</tt>; see <a href="_monoid.html" title="make or retrieve a monoid">monoid(..., DegreeMap => ...)</a></span></span></li>
<li><span><tt>DegreeLift => </tt><span><span>a <a href="___Boolean.html">Boolean value</a></span>, <span>default value null</span>, overrides the corresponding option in <tt>A</tt>; see <a href="_monoid.html" title="make or retrieve a monoid">monoid(..., DegreeLift => ...)</a></span></span></li>
</ul>
</div>
</li>
</ul>
</div>
<div class="single"><h2>Description</h2>
<div><p>This is the same as <tt>A ** B</tt> except that options are allowed, see <a href="___Monoid_sp_st_st_sp__Monoid.html" title="tensor product of monoids">Monoid ** Monoid</a> and <a href="___Ring_sp_st_st_sp__Ring.html" title="tensor product">Ring ** Ring</a>.  This method allows many of the options available for monoids, see <a href="_monoid.html" title="make or retrieve a monoid">monoid</a> for details.  This method essentially combines the variables of <tt>A</tt> and <tt>B</tt> into one monoid or ring.</p>
<table class="examples"><tr><td><pre>i1 : kk = ZZ/101

o1 = kk

o1 : QuotientRing</pre>
</td></tr>
<tr><td><pre>i2 : A = kk[a,b]

o2 = A

o2 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i3 : B = kk[c,d,e]

o3 = B

o3 : PolynomialRing</pre>
</td></tr>
</table>
<p>The simplest version is to simply use <a href="__st_st.html" title="a binary operator, usually used for tensor product or Cartesian product">**</a>:</p>
<table class="examples"><tr><td><pre>i4 : describe(A**B)

o4 = kk[a..e, Degrees => {2:{1}, 3:{0}}, Heft => {2:1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 2]
                            {0}    {1}                                   {GRevLex => {2:1}  }
                                                                         {Position => Up    }
                                                                         {GRevLex => {3:1}  }</pre>
</td></tr>
</table>
<p/>
If you wish to change the variable names:<table class="examples"><tr><td><pre>i5 : describe tensor(A,B,VariableBaseName=>p)

o5 = kk[p , p , p , p , p , Degrees => {2:{1}, 3:{0}}, Heft => {2:1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 2]
         0   1   2   3   4                {0}    {1}                                   {GRevLex => {2:1}  }
                                                                                       {Position => Up    }
                                                                                       {GRevLex => {3:1}  }</pre>
</td></tr>
<tr><td><pre>i6 : describe tensor(A,B,Variables=>{a1,a2,b1,b2,b3})

o6 = kk[a1, a2, b1, b2, b3, Degrees => {2:{1}, 3:{0}}, Heft => {2:1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 2]
                                          {0}    {1}                                   {GRevLex => {2:1}  }
                                                                                       {Position => Up    }
                                                                                       {GRevLex => {3:1}  }</pre>
</td></tr>
</table>
<p/>
The tensor product of two singly graded rings is bigraded.  Sometimes you want a singly graded ring.  Here is one way to get it:<table class="examples"><tr><td><pre>i7 : describe (C = tensor(A,B,DegreeRank=>1,Degrees=>{5:1}))

o7 = kk[a..e, Degrees => {5:1}, Heft => {1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 1]
                                                              {GRevLex => {2:1}  }
                                                              {Position => Up    }
                                                              {GRevLex => {3:1}  }</pre>
</td></tr>
<tr><td><pre>i8 : degreeLength C

o8 = 1</pre>
</td></tr>
<tr><td><pre>i9 : degreesRing C

o9 = ZZ[T]

o9 : PolynomialRing</pre>
</td></tr>
</table>
<p/>
Packing monomials into smaller space is more efficient, but less flexible.  The default is 32 bits, so if you want to pack them into 8 bit exponents, use:<table class="examples"><tr><td><pre>i10 : describe tensor(A,B,MonomialSize=>8)

o10 = kk[a..e, Degrees => {2:{1}, 3:{0}}, Heft => {2:1}, MonomialOrder => {MonomialSize => 8 }, DegreeRank => 2]
                             {0}    {1}                                   {MonomialSize => 32}
                                                                          {GRevLex => {2:1}  }
                                                                          {Position => Up    }
                                                                          {GRevLex => {3:1}  }</pre>
</td></tr>
</table>
<p/>
The default monomial order for tensor products is a product order.  Sometimes other orders are more desirable, e.g. GRevLex, or an elimination order:<table class="examples"><tr><td><pre>i11 : describe (C = tensor(A,B,MonomialOrder=>Eliminate numgens A))

o11 = kk[a..e, Degrees => {2:{1}, 3:{0}}, Heft => {2:1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 2]
                             {0}    {1}                                   {Weights => {2:1}  }
                                                                          {GRevLex => {5:1}  }
                                                                          {Position => Up    }</pre>
</td></tr>
<tr><td><pre>i12 : describe (C = tensor(A,B,MonomialOrder=>GRevLex)) 

o12 = kk[a..e, Degrees => {2:{1}, 3:{0}}, Heft => {2:1}, MonomialOrder =>
                             {0}    {1}                                  
                                                                         
      -----------------------------------------------------------------------
      {MonomialSize => 32}, DegreeRank => 2]
      {GRevLex => {5:1}  }
      {Position => Up    }</pre>
</td></tr>
</table>
<p>If you tensor two skew-commutative rings, (or one skew commutative ring with a commutative polynomial ring), then all of the skew-commuting variables skew commute with each other:</p>
<table class="examples"><tr><td><pre>i13 : As = kk[a,b,SkewCommutative=>true]

o13 = As

o13 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i14 : D = kk[c,d,e,SkewCommutative=>true]

o14 = D

o14 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i15 : E = tensor(As,D)

o15 = E

o15 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i16 : describe E

o16 = kk[a..e, Degrees => {2:{1}, 3:{0}}, Heft => {2:1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 2, SkewCommutative => {0, 1, 2, 3, 4}]
                             {0}    {1}                                   {GRevLex => {2:1}  }
                                                                          {Position => Up    }
                                                                          {GRevLex => {3:1}  }</pre>
</td></tr>
<tr><td><pre>i17 : c*a

o17 = -a*c

o17 : E</pre>
</td></tr>
</table>
<p>Similarly, tensoring two Weyl algebras (or one and a polynomial ring) produces a Weyl algebra with both sets of non-commuting pairs.</p>
<table class="examples"><tr><td><pre>i18 : E = kk[x,Dx,WeylAlgebra=>{x=>Dx}]

o18 = E

o18 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i19 : tensor(E,E,Variables=>{x,Dx,y,Dy})

o19 = kk[x, Dx, y, Dy]

o19 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i20 : describe oo

o20 = kk[x, Dx, y, Dy, Degrees => {2:{1}, 2:{0}}, Heft => {2:1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 2, WeylAlgebra => {0 => 1, 2 => 3}]
                                     {0}    {1}                                   {GRevLex => {2:1}  }
                                                                                  {Position => Up    }
                                                                                  {GRevLex => {2:1}  }</pre>
</td></tr>
</table>
<p>Two polynomial rings must have the same coefficient ring, otherwise an error is issued.  Currently, there is no way to specify other rings over which to define the tensor product.</p>
<table class="examples"><tr><td><pre>i21 : A = ZZ/101[a,b]

o21 = A

o21 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i22 : B = A[x,y]

o22 = B

o22 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i23 : C = tensor(B,B,Variables=>{x1,y1,x2,y2})

o23 = C

o23 : PolynomialRing</pre>
</td></tr>
<tr><td><pre>i24 : describe C

o24 = A[x1, y1, x2, y2, Degrees => {2:{1}, 2:{0}}, Heft => {2:1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 2]
                                      {0}    {1}                                   {GRevLex => {2:1}  }
                                                                                   {Position => Up    }
                                                                                   {GRevLex => {2:1}  }</pre>
</td></tr>
</table>
The flat monoid with the all variables visible, including those from the base ring, can be obtained as follows.<table class="examples"><tr><td><pre>i25 : C.FlatMonoid

o25 = [x1, y1, x2, y2, a..b, Degrees => {2:{1}, 2:{0}, 2:{0}}, Heft => {3:1}, MonomialOrder => {MonomialSize => 32   }, DegreeRank => 3]
                                           {0}    {1}    {0}                                   {GRevLex => {2:1}     }
                                           {0}    {0}    {1}                                   {Position => Up       }
                                                                                               {2:(GRevLex => {1, 1})}

o25 : GeneralOrderedMonoid</pre>
</td></tr>
</table>
</div>
</div>
<div class="single"><h2>Caveat</h2>
<div>Not all of the options for monoid are useful here.  Some are silently ignored.</div>
</div>
<div class="single"><h2>See also</h2>
<ul><li><span><a href="_describe.html" title="real description">describe</a> -- real description</span></li>
<li><span><a href="_degrees__Ring.html" title="the ring of degrees">degreesRing</a> -- the ring of degrees</span></li>
<li><span><a href="_degree__Length.html" title="the number of degrees">degreeLength</a> -- the number of degrees</span></li>
<li><span><a href="__st_st.html" title="a binary operator, usually used for tensor product or Cartesian product">**</a> -- a binary operator, usually used for tensor product or Cartesian product</span></li>
<li><span><a href="___Flat__Monoid.html" title="">FlatMonoid</a></span></li>
</ul>
</div>
</div>
</body>
</html>