A and B may be monoids too, in which case the result is too.
This is the same as A ** B except that options are allowed. This method allows many of the options available for monoids. See monoid for details. This method essentially combines the variables of A and B into one monoid or ring.
i1 : kk = ZZ/101 o1 = kk o1 : QuotientRing |
i2 : A = kk[a,b] o2 = A o2 : PolynomialRing |
i3 : B = kk[c,d,e] o3 = B o3 : PolynomialRing |
The simplest version is to simply use tensor or **:
i4 : describe(A**B) o4 = kk [a, b, c, d, e, Degrees => {{1, 0}, {1, 0}, {0, 1}, {0, 1}, {0, 1}}, ------------------------------------------------------------------------ Heft => {1, 1}, MonomialOrder => {GRevLex => {1, 1}, Position => Up, ------------------------------------------------------------------------ GRevLex => {1, 1, 1}}] |
i5 : describe tensor(A,B,VariableBaseName=>p) o5 = kk [p , p , p , p , p , Degrees => {{1, 0}, {1, 0}, {0, 1}, {0, 1}, {0, 0 1 2 3 4 ------------------------------------------------------------------------ 1}}, Heft => {1, 1}, MonomialOrder => {GRevLex => {1, 1}, Position => ------------------------------------------------------------------------ Up, GRevLex => {1, 1, 1}}] |
i6 : describe tensor(A,B,Variables=>{a1,a2,b1,b2,b3}) o6 = kk [a1, a2, b1, b2, b3, Degrees => {{1, 0}, {1, 0}, {0, 1}, {0, 1}, {0, ------------------------------------------------------------------------ 1}}, Heft => {1, 1}, MonomialOrder => {GRevLex => {1, 1}, Position => ------------------------------------------------------------------------ Up, GRevLex => {1, 1, 1}}] |
i7 : describe (C = tensor(A,B,DegreeRank=>1,Degrees=>{5:1})) o7 = kk [a, b, c, d, e, MonomialOrder => {GRevLex => {1, 1}, Position => Up, ------------------------------------------------------------------------ GRevLex => {1, 1, 1}}] |
i8 : degreeLength C o8 = 1 |
i9 : degreesRing C o9 = ZZ [T] o9 : PolynomialRing |
i10 : describe tensor(A,B,MonomialSize=>8) o10 = kk [a, b, c, d, e, Degrees => {{1, 0}, {1, 0}, {0, 1}, {0, 1}, {0, 1}}, ----------------------------------------------------------------------- Heft => {1, 1}, MonomialOrder => {GRevLex => {1, 1}, Position => Up, ----------------------------------------------------------------------- GRevLex => {1, 1, 1}}, MonomialSize => 8] |
i11 : describe (C = tensor(A,B,MonomialOrder=>Eliminate numgens A)) o11 = kk [a, b, c, d, e, Degrees => {{1, 0}, {1, 0}, {0, 1}, {0, 1}, {0, 1}}, ----------------------------------------------------------------------- Heft => {1, 1}, MonomialOrder => Eliminate{2}] |
i12 : describe (C = tensor(A,B,MonomialOrder=>GRevLex)) o12 = kk [a, b, c, d, e, Degrees => {{1, 0}, {1, 0}, {0, 1}, {0, 1}, {0, 1}}, ----------------------------------------------------------------------- Heft => {1, 1}, MonomialOrder => GRevLex] |
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:
i13 : As = kk[a,b,SkewCommutative=>true] o13 = As o13 : PolynomialRing |
i14 : D = kk[c,d,e,SkewCommutative=>true] o14 = D o14 : PolynomialRing |
i15 : E = tensor(As,D) o15 = E o15 : PolynomialRing |
i16 : describe E o16 = kk [a, b, c, d, e, Degrees => {{1, 0}, {1, 0}, {0, 1}, {0, 1}, {0, 1}}, ----------------------------------------------------------------------- Heft => {1, 1}, MonomialOrder => {GRevLex => {1, 1}, Position => Up, ----------------------------------------------------------------------- GRevLex => {1, 1, 1}}, SkewCommutative => {0, 1, 2, 3, 4}] |
i17 : c*a o17 = -a*c o17 : E |
Similarly, tensoring two Weyl algebras (or one and a polynomial ring) produces a Weyl algebra with both sets of non-commuting pairs.
i18 : E = kk[x,Dx,WeylAlgebra=>{x=>Dx}] o18 = E o18 : PolynomialRing |
i19 : tensor(E,E,Variables=>{x,Dx,y,Dy}) o19 = kk [x, Dx, y, Dy] o19 : PolynomialRing |
i20 : describe oo o20 = kk [x, Dx, y, Dy, Degrees => {{1, 0}, {1, 0}, {0, 1}, {0, 1}}, Heft => ----------------------------------------------------------------------- {1, 1}, MonomialOrder => {GRevLex => {1, 1}, Position => Up, GRevLex => ----------------------------------------------------------------------- {1, 1}}, WeylAlgebra => {0 => 1, 2 => 3}] |
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.
i21 : A = ZZ/101[a,b] o21 = A o21 : PolynomialRing |
i22 : B = A[x,y] o22 = B o22 : PolynomialRing |
i23 : tensor(B,B,Variables=>{x1,y1,x2,y2}) o23 = A [x1, y1, x2, y2] o23 : PolynomialRing |
i24 : describe oo o24 = A [x1, y1, x2, y2, Degrees => {{1, 0}, {1, 0}, {0, 1}, {0, 1}}, Heft => ----------------------------------------------------------------------- {1, 1}, MonomialOrder => {GRevLex => {1, 1}, Position => Up, GRevLex => ----------------------------------------------------------------------- {1, 1}}] |