# Singular          ##### 7.5.1.0. isPureTensor
Procedure from library `bimodules.lib` (see bimodules_lib).

Usage:
isPureTensor(g); g poly

Note:
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}.

Return:
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.

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

Example:
 ```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: isPureTensor(p); ==> 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; g; ==> 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. ```

### Misc 