|
5.1.138 ring_list
Syntax:
ring_list ( ring_expression )
ring_list ( cring_expression )
Type:
- list
Purpose:
- decomposes a ring/qring/coefficient ring into a list of 4 (or 6 in the non-commutative case,
see ringlist (plural)) or 1/4 (for
cring ) components.
It is identical to ringlist with the exception of the first list entry.
-
the field description as
cring
-
the names of the variables (a list L of strings: L[i] is the name of the i-th
variable)
-
the monomial ordering (a list L of lists): each block L[i] consists of
-
the name of the ordering ( string )
-
parameters specifying the ordering and the size of the block ( intvec : typically the weights for the variables [default: 1] )
-
the quotient ideal.
From a list of such structure, a new ring may be defined by the command ring
( see the following example ).
Note: All data which depends on a ring belong to the current ring,
- not to a ring which can be constructed from a modified list.
These data will be mapped via fetch to the ring to be constructed.
Example:
| ring r = 0,(x(1..3)),dp;
list l = ring_list(r);
ring_list(l[1]);
==> 0
l;
==> [1]:
==> QQ
==> [2]:
==> [1]:
==> x(1)
==> [2]:
==> x(2)
==> [3]:
==> x(3)
==> [3]:
==> [1]:
==> [1]:
==> dp
==> [2]:
==> 1,1,1
==> [2]:
==> [1]:
==> C
==> [2]:
==> 0
==> [4]:
==> _[1]=0
// Now change l and create a new ring, by
//- changing the base field to ZZ/32003
//- introducing one extra variable y,
//- defining the block ordering (dp(2),wp(3,4)).
//- define the minpoly after creating the function field
l[1]=ZZ/32003;
l[2][size(l[2])+1]="y";
l[3][3]=l[3][2]; // save the module ordering
l[3][1]=list("dp",intvec(1,1));
l[3][2]=list("wp",intvec(3,4));
def ra = ring(l); //creates the newring
ra; setring ra;
==> // coefficients: ZZ/32003
==> // number of vars : 4
==> // block 1 : ordering dp
==> // : names x(1) x(2)
==> // block 2 : ordering wp
==> // : names x(3) y
==> // : weights 3 4
==> // block 3 : ordering C
|
See
qring;
ring;
ringlist.
|