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

User manual for Singular version 4.4.1, 2025, generated by texi2html.