next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
map > map(Ring,Ring,Matrix)

map(Ring,Ring,Matrix) -- make a ring map

Synopsis

Description

i1 : R = ZZ[x,y];
i2 : S = ZZ[a,b,c];
i3 : f = map(R,S,matrix {{x^2,x*y,y^2}})

               2        2
o3 = map(R,S,{x , x*y, y })

o3 : RingMap R <--- S
i4 : f(a+b+c^2)

      4    2
o4 = y  + x  + x*y

o4 : R
i5 : g = map(R,S,matrix {{1,2,3},{4,5,6}})

o5 = map(R,S,{x + 4y, 2x + 5y, 3x + 6y})

o5 : RingMap R <--- S
i6 : g(a+b)

o6 = 3x + 9y

o6 : R
If the coefficient ring of S is itself a polynomial ring, then one may optionally include values to which its variables should be sent: they should appear last in the matrix m.
i7 : S = ZZ[a][b,c];
i8 : h = map(S,S,matrix {{b,c,2*a}})

o8 = map(S,S,{b, c, 2a})

o8 : RingMap S <--- S
i9 : h(a^7 + b^3 + c)

      3           7
o9 = b  + c + 128a

o9 : S
i10 : k = map(S,S,matrix {{c,b}})

o10 = map(S,S,{c, b, a})

o10 : RingMap S <--- S
i11 : k(a^7 + b^3 + c)

       3        7
o11 = c  + b + a

o11 : S
Specifying a degree map is a useful way to preserve homogeneity, which can speed computation.
i12 : R = QQ[x,y,z];
i13 : S = QQ[t,u];
i14 : f = map(S,R,{t^2,t*u,u^2},DegreeMap => i -> 2*i)

                2        2
o14 = map(S,R,{t , t*u, u })

o14 : RingMap S <--- R
i15 : isHomogeneous f

o15 = true
i16 : M = R^{1,2}

       2
o16 = R

o16 : R-module, free, degrees {-1, -2}
i17 : f M

       2
o17 = S

o17 : S-module, free, degrees {-2, -4}
i18 : f ** M

       2
o18 = S

o18 : S-module, free, degrees {-2, -4}

See also