|
7.8.2 fetch (letterplace)
Syntax:
fetch ( ring_name, name )
fetch ( ring_name, name, intvec_expression )
Type:
- number, poly, vector, ideal, module, matrix or list
(the same type as the second argument)
Purpose:
- maps objects between rings.
fetch is the identity map between rings and qrings,
in the first case the i-th variable of the source ring is mapped to the i-th
variable of the basering.
If the basering has less variables than the source ring these variables are mapped to zero.
The intvec in the 3rd argument describes the permutation of the variables:
an i at position j maps the variable var(j) of the source to the variable
var(i) of the destination.
A zero means that that variable/parameter is mapped to 0.
The coefficient fields must be compatible.
(See map for a description of possible mappings between
different ground fields).
fetch offers a convenient way to change
variable names or orderings, or to map objects from a ring to a factor ring of
that ring or vice versa.
option(Imap); reports the mapping.
Note:
- Compared with
imap , fetch uses the position of the ring
variables, not their names.
Example:
| LIB "freegb.lib";
ring r = (0,a),(x,y,z),dp;
ring R = freeAlgebra(r,4,2); // free bimodule of rank 2
poly p = z^2/a - a*y;
ideal I = x,y,z,a*z*y*x - x*y + 7;
module M = (x*y*a +3)*ncgen(1)*gen(1), ncgen(2)*gen(2)*z, ncgen(2)*gen(2)*(x*y*a - 7);
M; // note that a stands on the left
==> M[1]=(a)*x*y*ncgen(1)*gen(1)+3*ncgen(1)*gen(1)
==> M[2]=ncgen(2)*z*gen(2)
==> M[3]=(a)*ncgen(2)*x*y*gen(2)-7*ncgen(2)*gen(2)
ring r2 = 0,(a,z,y,x),dp; // note: a is a variable in r2
ring R2 = freeAlgebra(r2,6,2);
fetch(R,p); // correctly processes incorrect input
==> // ** Not defined: Cannot map a rational fraction and make a polynomial o\
ut of it! Ignoring the denominator.
==> y*y
fetch(R,I);
==> _[1]=a
==> _[2]=z
==> _[3]=y
==> _[4]=-a*z+7
fetch(R,M);
==> _[1]=3*ncgen(1)*gen(1)
==> _[2]=ncgen(2)*y*gen(2)
==> _[3]=-7*ncgen(2)*gen(2)
setring R; // now we show the factor ring behavior
ideal J = y*x-x*y,z; J = twostd(J); J;
==> J[1]=z
==> J[2]=y*x-x*y
qring Q = J;
fetch(R,p);
==> 1/(a)*z*z+(-a)*y
NF(_, twostd(0)); // the canonical representative in Q
==> (-a)*y
fetch(R,I);
==> _[1]=x
==> _[2]=y
==> _[3]=z
==> _[4]=(a)*z*y*x-x*y+7
NF(_, twostd(0)); // the canonical representative in Q
==> _[1]=x
==> _[2]=y
==> _[3]=0
==> _[4]=-x*y+7
fetch(R,M);
==> _[1]=(a)*x*y*ncgen(1)*gen(1)+3*ncgen(1)*gen(1)
==> _[2]=ncgen(2)*z*gen(2)
==> _[3]=(a)*ncgen(2)*x*y*gen(2)-7*ncgen(2)*gen(2)
NF(_, twostd(0)); // the canonical representative in Q
==> _[1]=(a)*x*y*ncgen(1)*gen(1)+3*ncgen(1)*gen(1)
==> _[2]=0
==> _[3]=(a)*ncgen(2)*x*y*gen(2)-7*ncgen(2)*gen(2)
|
See
imap (letterplace);
map;
qring;
ring.
|