|
D.2.6.4 defring
Procedure from library ring.lib (see ring_lib).
- Usage:
- defring(s1,s2,n,s3,s4); s1..s4=strings, n=integer
- Create:
- Define a ring with name 's1', characteristic 's2', ordering 's4' and
n variables with names derived from s3 and make it the basering.
If s3 is a single letter, say s3="a", and if n<=26 then a and the
following n-1 letters from the alphabet (cyclic order) are taken as
variables. If n>26 or if s3 is a single letter followed by (, say
s3="T(", the variables are T(1),...,T(n).
- Return:
- No return value
- Note:
- This proc is useful for defining a ring in a procedure.
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 @.
Example:
| LIB "ring.lib";
defring("r","0",5,"u","ls"); r; "";
==> // basering is now: r
==> // characteristic : 0
==> // number of vars : 5
==> // block 1 : ordering ls
==> // : names u v w x y
==> // block 2 : ordering C
==>
defring("R","2,A",10,"x(","dp(3),ws(1,2,3),ds"); R;
==> // basering is now: R
==> // characteristic : 2
==> // 1 parameter : A
==> // minpoly : 0
==> // number of vars : 10
==> // block 1 : ordering dp
==> // : names x(1) x(2) x(3)
==> // block 2 : ordering ws
==> // : names x(4) x(5) x(6)
==> // : weights 1 2 3
==> // block 3 : ordering ds
==> // : names x(7) x(8) x(9) x(10)
==> // block 4 : ordering C
kill r,R;
if(system("with","Namespaces")) {
if( nameof(Current) == "Ring" ) {
kill Top::r,Top::R;
} else {
kill Ring::r,Ring::R;
}
}
|
|