|
|
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.
|