Home Online Manual
Back: CompDecomp
Forward: isTwoSidedGB
FastForward: bfun_lib
Up: bimodules_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document isPureTensor
Procedure from library bimodules.lib (see bimodules_lib).

isPureTensor(g); g poly

This procedure only works if the basering is an enveloping algebra A^{env} of a (non-commutative) ring A. Thus also the polynomial in the argument has to be in A^{env}.

Returns 0 if g is not a pure tensor and if g is a pure tensor then isPureTensor() returns a vector v with v = a*gen(1)+b*gen(2) = (a,b)^T with a (X) b = g.

Checks whether a given polynomial in $\A^{env}$ is a pure tensor. This is also an auxiliary procedure for checking total divisibility.

LIB "bimodules.lib";
ring r = 0,(x,s),dp;
def R = nc_algebra(1,s); setring R; //1st shift algebra
def Re = envelope(R); setring Re; //basering is now R^{env} = R (X) R^{opp}
poly p = x*(x*s)*x + s^2*x; p;
==> x3s+x2s+xs2+2s2
// p is of the form q(X)1, a pure tensor indeed:
==> x3s*gen(1)+x2s*gen(1)+xs2*gen(1)+2s2*gen(1)+gen(2)
// v = transpose( x3s+x2s+xs2+2s2  1 ) i.e. p = x3s+x2s+xs2+2s2 (X) 1
poly g = S*X+ x*s*X+ S^2*x;
==> xsX+xS2+SX
isPureTensor(g); // indeed g is not a pure tensor
==> 0
poly d = x*X+s*X+x*S*X+s*S*X;d;
==> xSX+xX+sSX+sX
isPureTensor(d); // d is a pure tensor indeed
==> x*gen(1)+s*gen(1)+SX*gen(2)+X*gen(2)
// v = transpose( x+s  S*X+X ) i.e. d = x+s (X) s*x+x
// remember that * denotes to the opposite mulitiplication s*x = xs in R.