Macaulay2 » Documentation
Packages » Macaulay2Doc :: RingMap
next | previous | forward | backward | up | index | toc

RingMap -- the class of all ring maps

Description

For an overview of ring maps, substitution of variables, and finding implicit equations of a set of polynomial or rational functions, see substitution and maps between rings.

A ring map $F : R \rightarrow{} S$, where $R$ is a polynomial ring, is specified by giving the images in $S$ of the variables of $R$. For a simple example, consider the following map. Notice that, as is usual in Macaulay2, the target ring is given before the source.
i1 : R = QQ[a,b,c]; S = QQ[s,t];
i3 : F = map(S,R,{s^3-t^2, s^3-t, s-t})

                  3    2   3
o3 = map (S, R, {s  - t , s  - t, s - t})

o3 : RingMap S <-- R
i4 : target F

o4 = S

o4 : PolynomialRing
i5 : source F

o5 = R

o5 : PolynomialRing
i6 : F.matrix

o6 = | s3-t2 s3-t s-t |

             1      3
o6 : Matrix S  <-- S
There are other ways to define ring maps. See below.

Apply matrices to ring elements, vectors, matrices, and ideals using usual function notation.
i7 : F (a+b)

       3    2
o7 = 2s  - t  - t

o7 : S
The kernel of such ring maps are constructed with the aid of Gröbner bases. Preimages of ideals are constructed using the same method.
i8 : I = kernel F

            6       4       4     5     2 2         2     2 2       3       3
o8 = ideal(c  + 3a*c  - 3b*c  + 3c  + 3a c  - 6a*b*c  + 3b c  + 6a*c  - 8b*c 
     ------------------------------------------------------------------------
         4    3     2        2    3     2      2        2     2
     + 3c  + a  - 3a b + 3a*b  - b  + 3a c - 3b c - 3a*c  + 2a  - a*b - 3a*c)

o8 : Ideal of R
i9 : F I

o9 = ideal 0

o9 : Ideal of S
i10 : J = preimage(F, ideal(s-3))

                          2
o10 = ideal (b - c - 24, c  + a - 6c - 18)

o10 : Ideal of R
i11 : isSubset(F J, ideal(s-3))

o11 = true
Geometrically, the inverse image of this line is a conic.

Consider the Cremona transform, and its square:
i12 : G = map(R,R,{a=>b*c,b=>a*c,c=>a*b})

o12 = map (R, R, {b*c, a*c, a*b})

o12 : RingMap R <-- R
i13 : G*G

                   2        2        2
o13 = map (R, R, {a b*c, a*b c, a*b*c })

o13 : RingMap R <-- R
These are injective ring maps
i14 : ker G == 0

o14 = true
i15 : isInjective G

o15 = true
i16 : coimage G

o16 = R

o16 : PolynomialRing

Common ways to make a ring map: Common ways to get information about ring maps: Common operations on ring maps: Applying ring maps, and composing ring maps: Operations involving modules

Functions and methods returning a ring map :

Methods that use a ring map :

For the programmer

The object RingMap is a type, with ancestor classes HashTable < Thing.