# Singular

##### 7.7.14.0. extendedTensor
Procedure from library ncpreim.lib (see ncpreim_lib).

Usage:
extendedTensor(A,I); A ring, I ideal

Return:
ring, A+B (where B denotes the basering) extended with non- commutative relations between the vars of A and B, which arise from the homomorphism A -> B induced by I in the usual sense, i.e. if the vars of A are named x(i) and the vars of B y(j), then putting q(i)(j) = leadcoef(y(j)*I[i])/leadcoef(I[i]*y(j)) and r(i)(j) = y(j)*I[i] - q(i)(j)*I[i]*y(j) yields the relation y(j)*x(i) = q(i)(j)*x(i)*y(j)+r(i)(j).

Remark:
Reference: (Lev)

Example:
 LIB "ncpreim.lib"; def A = makeWeyl(2); setring A; A; ==> // characteristic : 0 ==> // number of vars : 4 ==> // block 1 : ordering dp ==> // : names x(1) x(2) D(1) D(2) ==> // block 2 : ordering C ==> // noncommutative relations: ==> // D(1)x(1)=x(1)*D(1)+1 ==> // D(2)x(2)=x(2)*D(2)+1 def B = makeUgl(2); setring B; B; ==> // characteristic : 0 ==> // number of vars : 4 ==> // block 1 : ordering dp ==> // : names e_1_1 e_1_2 e_2_1 e_2_2 ==> // block 2 : ordering C ==> // noncommutative relations: ==> // e_1_2e_1_1=e_1_1*e_1_2-e_1_2 ==> // e_2_1e_1_1=e_1_1*e_2_1+e_2_1 ==> // e_2_1e_1_2=e_1_2*e_2_1-e_1_1+e_2_2 ==> // e_2_2e_1_2=e_1_2*e_2_2-e_1_2 ==> // e_2_2e_2_1=e_2_1*e_2_2+e_2_1 ideal I = var(1)*var(3), var(1)*var(4), var(2)*var(3), var(2)*var(4); I; ==> I[1]=e_1_1*e_2_1 ==> I[2]=e_1_1*e_2_2 ==> I[3]=e_1_2*e_2_1 ==> I[4]=e_1_2*e_2_2 def C = extendedTensor(A,I); setring C; C; ==> // characteristic : 0 ==> // number of vars : 8 ==> // block 1 : ordering dp ==> // : names x(1) x(2) D(1) D(2) ==> // block 2 : ordering dp ==> // : names e_1_1 e_1_2 e_2_1 e_2_2 ==> // block 3 : ordering C ==> // noncommutative relations: ==> // D(1)x(1)=x(1)*D(1)+1 ==> // e_1_1x(1)=x(1)*e_1_1-e_1_1*e_2_1 ==> // e_1_2x(1)=x(1)*e_1_2+e_1_1^2-e_1_2*e_2_1-e_1_1*e_2_2 ==> // e_2_1x(1)=x(1)*e_2_1+e_2_1^2 ==> // e_2_2x(1)=x(1)*e_2_2+e_1_1*e_2_1 ==> // D(2)x(2)=x(2)*D(2)+1 ==> // e_1_2x(2)=x(2)*e_1_2+e_1_1*e_1_2-e_1_2*e_2_2 ==> // e_2_1x(2)=x(2)*e_2_1-e_1_1*e_2_1+e_2_1*e_2_2 ==> // e_1_2D(1)=D(1)*e_1_2+e_1_1*e_1_2-e_1_2*e_2_2-e_1_2 ==> // e_2_1D(1)=D(1)*e_2_1-e_1_1*e_2_1+e_2_1*e_2_2+e_2_1 ==> // e_1_1D(2)=D(2)*e_1_1+e_1_2*e_2_2 ==> // e_1_2D(2)=D(2)*e_1_2+e_1_2^2 ==> // e_2_1D(2)=D(2)*e_2_1-e_1_2*e_2_1-e_1_1*e_2_2+e_2_2^2 ==> // e_2_2D(2)=D(2)*e_2_2-e_1_2*e_2_2 ==> // e_1_2e_1_1=e_1_1*e_1_2-e_1_2 ==> // e_2_1e_1_1=e_1_1*e_2_1+e_2_1 ==> // e_2_1e_1_2=e_1_2*e_2_1-e_1_1+e_2_2 ==> // e_2_2e_1_2=e_1_2*e_2_2-e_1_2 ==> // e_2_2e_2_1=e_2_1*e_2_2+e_2_1