# map(Module,Module,RingMap,Matrix) -- homomorphism of modules over different rings

## Synopsis

• Usage:
g = map(M,N,p,f)
g = map(M,,p,f)
g = map(M,p)
• Function: map
• Inputs:
• M,
• N, , or null
• p, , from the ring of N to the ring of M
• f, , to the ring of M, from the cover of N tensored with the ring of M along p. Alternatively, f can be represented by its doubly nested list of entries.
• Optional inputs:
• Degree => a list, default value null, a list of integers of length equal to the degree length of the ring of M, providing the degree of g. By default, the degree of g is zero.
• Outputs:
• g, , the homomorphism to M from N defined by f

## Description

 ```i1 : R = QQ[x,y] o1 = R o1 : PolynomialRing``` ```i2 : p = map(R,QQ) o2 = map(R,QQ,{}) o2 : RingMap R <--- QQ``` ```i3 : f = matrix {{x-y, x+2*y, 3*x-y}}; 1 3 o3 : Matrix R <--- R``` ```i4 : kernel f o4 = image {1} | -7 -x-2y | {1} | -2 x-y | {1} | 3 0 | 3 o4 : R-module, submodule of R``` ```i5 : g = map(R^1,QQ^3,p,f) o5 = | x-y x+2y 3x-y | 1 3 o5 : Matrix R <--- QQ``` ```i6 : g === map(R^1,QQ^3,p,{{x-y, x+2*y, 3*x-y}}) o6 = true``` ```i7 : isHomogeneous g o7 = false``` ```i8 : kernel g o8 = image | -7 | | -2 | | 3 | 3 o8 : QQ-module, submodule of QQ``` ```i9 : coimage g o9 = cokernel | -7 | | -2 | | 3 | 3 o9 : QQ-module, quotient of QQ``` ```i10 : rank oo o10 = 2```

If the module N is replaced by null, which is entered automatically between consecutive commas, then a free module will be used for N, whose degrees are obtained by lifting the degrees of the cover of the source of g, minus the degree of g, along the degree map of p

 ```i11 : g2 = map(R^1,,p,f,Degree => {1}) o11 = | x-y x+2y 3x-y | 1 3 o11 : Matrix R <--- QQ``` ```i12 : g === g2 o12 = true```

If N and f are both omitted, along with their commas, then for f the matrix of generators of M is used.

 ```i13 : M' = image f o13 = image | x-y x+2y 3x-y | 1 o13 : R-module, submodule of R``` ```i14 : g3 = map(M',p,Degree => {1}) o14 = {1} | 1 0 7/3 | {1} | 0 1 2/3 | {1} | 0 0 0 | o14 : Matrix``` ```i15 : isHomogeneous g3 o15 = true``` ```i16 : kernel g3 o16 = image | -7 | | -2 | | 3 | 3 o16 : QQ-module, submodule of QQ``` ```i17 : oo == kernel g o17 = true```

The degree of the homomorphism enters into the determination of its homogeneity.

 `i18 : R = QQ[x, Degrees => {{2:1}}];` ```i19 : M = R^1 1 o19 = R o19 : R-module, free``` `i20 : S = QQ[z];` ```i21 : N = S^1 1 o21 = S o21 : S-module, free``` ```i22 : p = map(R,S,{x},DegreeMap => x -> join(x,x)) o22 = map(R,S,{x}) o22 : RingMap R <--- S``` ```i23 : isHomogeneous p o23 = true``` ```i24 : f = matrix {{x^3}} o24 = | x3 | 1 1 o24 : Matrix R <--- R``` ```i25 : g = map(M,N,p,f,Degree => {3,3}) o25 = | x3 | 1 1 o25 : Matrix R <--- S``` ```i26 : isHomogeneous g o26 = true``` ```i27 : kernel g o27 = image 0 1 o27 : S-module, submodule of S``` ```i28 : coimage g 1 o28 = S o28 : S-module, free```