|
7.8.4 imap (letterplace)
Syntax:
imap ( ring_name, name )
Type:
- number, poly, vector, ideal, module, matrix or list
(the same type as the second argument)
Purpose:
- identity map on common subrings.
imap is the map between rings
and qrings with compatible ground fields which is the identity on
variables and parameters of the same name and 0 otherwise.
(See map for a description of possible mappings between
different ground fields).
Useful for embeddings as well as for mappings from/to rings with/without parameters.
Compared with fetch , imap uses the names of variables and parameters.
Unlike map and fetch , imap can map parameters to variables,
by forgetting the commutativity of parameters with each other and with variables.
Mapping rational functions which are not polynomials to polynomials is undefined.
Example:
| ring r = (0,a),(x,y,z),dp;
LIB "freegb.lib";
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);
imap(R,p); // correctly processes incorrect input
==> // ** Not defined: Cannot map a rational fraction and make a polynomial o\
ut of it! Ignoring the denominator.
==> z*z-a*y
imap(R,I);
==> _[1]=x
==> _[2]=y
==> _[3]=z
==> _[4]=a*z*y*x-x*y+7
imap(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)
|
See
fetch (letterplace);
map;
qring;
ring.
|