|
D.2.12.12 ringtensor
Procedure from library ring.lib (see ring_lib).
- Usage:
- ringtensor(r1,r2,...); r1,r2,...=rings
- Return:
- ring R whose variables are the variables from all rings r1,r2,...
and whose monomial ordering is the block (product) ordering of the
respective monomial orderings of r1,r2,... . Hence, R
is the tensor product of the rings r1,r2,... with ordering matrix
equal to the direct sum of the ordering matrices of r1,r2,...
- Note:
- The characteristic of the new ring will be p if one ring has
characteristic p. The names of variables in the rings r1,r2,...
must differ.
The procedure works also for quotient rings ri, if the characteristic
of ri is compatible with the characteristic of the result
(i.e. if imap from ri to the result is implemented)
Example:
| LIB "ring.lib";
ring r=32003,(x,y,u,v),dp;
ring s=0,(a,b,c),wp(1,2,3);
ring t=0,x(1..5),(c,ls);
def R=ringtensor(r,s,t);
type R;
==> // R ring
==> // coefficients: ZZ/32003
==> // number of vars : 12
==> // block 1 : ordering dp
==> // : names x y u v
==> // block 2 : ordering wp
==> // : names a b c
==> // : weights 1 2 3
==> // block 3 : ordering ls
==> // : names x(1) x(2) x(3) x(4) x(5)
==> // block 4 : ordering C
setring s;
ideal i = a2+b3+c5;
def S=changevar("x,y,z"); //change vars of s
setring S;
qring qS =std(fetch(s,i)); //create qring of S mod i (mapped to S)
def T=changevar("d,e,f,g,h",t); //change vars of t
setring T;
qring qT=std(d2+e2-f3); //create qring of T mod d2+e2-f3
def Q=ringtensor(s,qS,t,qT);
setring Q; type Q;
==> // Q ring
==> // coefficients: QQ
==> // number of vars : 16
==> // block 1 : ordering wp
==> // : names a b c
==> // : weights 1 2 3
==> // block 2 : ordering wp
==> // : names x y z
==> // : weights 1 2 3
==> // block 3 : ordering ls
==> // : names x(1) x(2) x(3) x(4) x(5)
==> // block 4 : ordering ls
==> // : names d e f g h
==> // block 5 : ordering C
==> // quotient ring from ideal
==> _[1]=z5+y3+x2
==> _[2]=f3-e2-d2
kill R,S,T,Q;
| See also:
ring operations.
|