|
D.2.6.12 ringtensor
Procedure from library ring.lib (see ring_lib).
- Usage:
- ringtensor(r1,r2,...); s=string, 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 that of r1. The names of
variables in the rings r1,r2,... should differ (if a name, say x,
occurs in r1 and r2, then, in the new ring r, x always refers to the
variable with name x in r1, there is no access to x in r2).
The procedure works also for quotient rings ri, if the characteristic
of ri is compatible with the characteristic of r1 (i.e. if imap from
ri to r1 is implemented)
This proc uses 'execute' or calls a procedure using 'execute'.
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 [0] ring
==> // characteristic : 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 (maped 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 [0] *qring
==> // characteristic : 0
==> // 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]=f3-e2-d2
==> _[2]=z5+y3+x2
kill R,S,T,Q;
|
|