# 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 → 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 :

• RingMap * RingMap, see * -- a binary operator, usually used for multiplication
• icMap(Ring), see icMap -- natural map from an affine domain into its integral closure
• map(GaloisField,GaloisField) (missing documentation)
• map(Ring,Matrix) -- make a ring map
• map(Ring,Ring) -- make a ring map, using the names of the variables
• map(Ring,Ring,List) -- make a ring map
• map(Ring,Ring,Matrix) -- make a ring map
• map(Ring,Ring,RingMap), see map(Ring,Ring,Matrix) -- make a ring map
• symmetricAlgebra(Matrix), see symmetricAlgebra -- the symmetric algebra of a module
• symmetricAlgebra(Nothing,Nothing,Matrix), see symmetricAlgebra -- the symmetric algebra of a module
• symmetricAlgebra(Nothing,Ring,Matrix), see symmetricAlgebra -- the symmetric algebra of a module
• symmetricAlgebra(Ring,Nothing,Matrix), see symmetricAlgebra -- the symmetric algebra of a module
• symmetricAlgebra(Ring,Ring,Matrix), see symmetricAlgebra -- the symmetric algebra of a module

## For the programmer

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