# Singular          ### 7.3.8 imap (plural)

`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 (plural) for a description of possible mappings between different ground fields). Useful for mappings from a homogenized ring to the original ring or 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.
`Example:`
 ```LIB "ncalg.lib"; ring ABP=0,(p4,p5,a,b),dp; // a commutative ring def Usl3 = makeUsl(3); def BIG = Usl3+ABP; setring BIG; poly P4 = 3*x(1)*y(1)+3*x(2)*y(2)+3*x(3)*y(3); P4 = P4 +h(1)^2+h(1)*h(2)+h(2)^2-3*h(1)-3*h(2); // P4 is a central element of Usl3 of degree 2 poly P5 = 4*x(1)*y(1) + h(1)^2 - 2*h(1); // P5 is a central element of the subalgebra of U(sl_3), // generated by x(1),y(1),h(1) ideal J = x(1),x(2),h(1)-a,h(2)-b; // we are interested in the module U(sl_3)/J, // which depends on parameters a,b ideal I = p4-P4, p5-P5; ideal K = I, J; ideal E = eliminate(K,x(1)*x(2)*x(3)*y(1)*y(2)*y(3)*h(1)*h(2)); E; // this is the ideal of central characters in ABP ==> E=a*b+b^2-p4+p5+a+3*b ==> E=a^2-p5+2*a ==> E=b^3+p4*a-p5*a-a^2-p4*b+3*b^2 // what are the characters on nonzero a,b? ring abP = (0,a,b),(p4,p5),dp; ideal abE = imap(BIG, E); option(redSB); option(redTail); abE = std(abE); // here come characters (indeed, we have only one) // that is a maximal ideal in K[p4,p5] abE; ==> abE=p5+(-a^2-2*a) ==> abE=p4+(-a^2-a*b-3*a-b^2-3*b) ```
See fetch (plural); map (plural); qring (plural); ring (plural).

### Misc 