Top
Back: D.2.6.11 ord_test
Forward: D.2.6.13 ringweights
FastBack: D. SINGULAR libraries
FastForward: E. Release Notes
Up: D.2.6 ring_lib
Top: Singular 2-0-4 Manual
Contents: Table of Contents
Index: F. Index
About: About This Document

D.2.6.12 ringtensor

Procedure from library ring.lib (see ring_lib).

Usage:

ringtensor(s,r1,r2,...); s=string, r1,r2,...=rings

Create:

A new base ring with name ‘s‘ if r1,r2,... are existing rings. If, say, s = "R" and the rings r1,r2,... exist, the new ring will have name R, variables from all rings r1,r2,... and as monomial ordering the block (product) ordering 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,...

Return:

no return value

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’. If you use it in your own proc, let the local names of your proc start with @ (see the file HelpForProc)

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);
ringtensor("R",r,s,t);
→ // basering is now R
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;
changevar("S","x,y,z");       //change vars of sand make S the basering
→ // basering is now S
qring qS =std(fetch(s,i));    //create qring of S mod i (mapped to S)
changevar("T","d,e,f,g,h",t); //change vars of t and make T the basering
→ // basering is now T
qring qT=std(d2+e2-f3);       //create qring of T mod d2+e2-f3
ringtensor("Q",s,qS,t,qT);
→ // basering is now 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,Q,S,T;
if(system("with","Namespaces")) {
if( nameof(Current) == "Ring" ) {
kill Top::R,Top::Q,Top::S,Top::T;
} else {
kill Ring::R,Ring::Q,Ring::S,Ring::T;
}
}

Top Back: D.2.6.11 ord_test Forward: D.2.6.13 ringweights FastBack: D. SINGULAR libraries FastForward: E. Release Notes Up: D.2.6 ring_lib Top: Singular 2-0-4 Manual Contents: Table of Contents Index: F. Index About: About This Document
            User manual for Singular version 2-0-4, October 2002, generated by texi2html.