Any morphism of varieties whose target is a smooth normal toric variety is determined by a collection of lines bundles together with a section of each line bundle. This data defines a ring map whose source is the total coordinate ring (a.k.a. Cox ring) of target variety. For more information, see David A. Cox, "The Functor of a Smooth Toric Variety", The Tohoku Mathematical Journal, Second Series, 47 (1995) 251-262, arXiv:alg-geom/9312001v2.
Given a toric map $f : X \to Y$ where $Y$ is smooth, this method returns the induced map from the total coordinate ring $S$ of $Y$ to the total coordinate ring $R$ of $X$. Since $f$ is torus-equivarient, each variable in the polynomial ring $S$ maps to a monomial in $R$.
As a first example, we compute the map on the total coordinate rings induced by the natural inclusion of the affine plane into projective plane.
i1 : A = affineSpace 2; |
i2 : P = toricProjectiveSpace 2; |
i3 : f = map(P, A, 1)
o3 = | 1 0 |
| 0 1 |
o3 : ToricMap P <--- A
|
i4 : (R = ring A, S = ring P); |
i5 : f' = inducedMap f
o5 = map(R,S,{1, x , x })
0 1
o5 : RingMap R <--- S
|
i6 : f' vars S
o6 = | 1 x_0 x_1 |
1 3
o6 : Matrix R <--- R
|
i7 : ideal f == 0 o7 = true |
i8 : degrees source f'
o8 = {{1}, {1}, {1}}
o8 : List
|
i9 : degrees target f'
o9 = {{}, {}}
o9 : List
|
i10 : assert (isWellDefined f and isHomogeneous f') |
The second example considers the projection from the third Hirzebruch surface to the projective line.
i11 : X = hirzebruchSurface 3; |
i12 : Y = toricProjectiveSpace 1; |
i13 : g = map(Y, X, matrix {{1, 0}})
o13 = | 1 0 |
o13 : ToricMap Y <--- X
|
i14 : (R = ring Y, S = ring X); |
i15 : g' = inducedMap g
o15 = map(S,R,{x , x })
2 0
o15 : RingMap S <--- R
|
i16 : degrees source g'
o16 = {{1}, {1}}
o16 : List
|
i17 : degrees target g'
o17 = {{1, 0}, {-3, 1}, {1, 0}, {0, 1}}
o17 : List
|
i18 : assert (isWellDefined g and isHomogeneous g') |
In the third example, we consider a third Veronese embedding of the projective line into projective $3$-space.
i19 : Z = toricProjectiveSpace 3; |
i20 : h = map(Z, Y, matrix {{1}, {2}, {3}})
o20 = | 1 |
| 2 |
| 3 |
o20 : ToricMap Z <--- Y
|
i21 : (R = ring Y, S = ring X); |
i22 : h' = inducedMap h
3 2 2 3
o22 = map(R,QQ[x ..x ],{x , x x , x x , x })
0 3 0 0 1 0 1 1
o22 : RingMap R <--- QQ[x ..x ]
0 3
|
i23 : degrees source g'
o23 = {{1}, {1}}
o23 : List
|
i24 : degrees target g'
o24 = {{1, 0}, {-3, 1}, {1, 0}, {0, 1}}
o24 : List
|
i25 : ideal h
2 2
o25 = ideal (x - x x , x x - x x , x - x x )
2 1 3 1 2 0 3 1 0 2
o25 : Ideal of QQ[x ..x ]
0 3
|
i26 : assert (isWellDefined h and isHomogeneous h' and ideal h == ker h') |
To ensure that the induced map is homogeneous, the optional argument DegreeMap is used to record the degree of the monomials in the target ring $R$.
i27 : code (inducedMap, ToricMap)
o27 = -- code for method: inducedMap(ToricMap)
/usr/share/Macaulay2/NormalToricVarieties/ToricMaps.m2:395:37-405:73: --source code:
inducedMap ToricMap := RingMap => o -> (cacheValue symbol inducedMap) (f -> (
Y := target f;
S := ring Y;
R := ring source f;
m := picardGroup f; -- degree map
map(R, S, apply(numgens S, i -> (
exps := entries pullback(f, Y_i);
product(numgens R, j -> R_j^(exps#j)))),
DegreeMap => (deg -> first entries (matrix{deg} * transpose m)))
)
)
|
This method assumes that the target is smooth. One may verify this by using isSmooth(NormalToricVariety).