This is the general method for constructing a normal toric variety.
A normal toric variety corresponds to a strongly convex rational polyhedral fan in affine space. In this package, the fan associated to a normal
d-dimensional toric variety lies in the rational vector space
ℚd with underlying lattice
N = ℤd. The fan is encoded by the minimal nonzero lattice points on its rays and the set of rays defining the maximal cones (meaning cones that are not proper subsets of another cone in the fan). More precisely,
Rho lists the minimal nonzero lattice points on each ray (a.k.a. one-dimensional cone) in the fan. Each lattice point is a
list of
integers. The rays are ordered and indexed by nonnegative integers:
0,…, n. Using this indexing, a maximal cone in the fan corresponds to a sublist of
{0,…,n}. All maximal cones are listed in
Sigma.
The first example is projective
2-space blown up at two points.
i1 : Rho = {{1,0},{0,1},{-1,1},{-1,0},{0,-1}}
o1 = {{1, 0}, {0, 1}, {-1, 1}, {-1, 0}, {0, -1}}
o1 : List
|
i2 : Sigma = {{0,1},{1,2},{2,3},{3,4},{0,4}}
o2 = {{0, 1}, {1, 2}, {2, 3}, {3, 4}, {0, 4}}
o2 : List
|
i3 : X = normalToricVariety(Rho,Sigma)
o3 = X
o3 : NormalToricVariety
|
i4 : rays X
o4 = {{1, 0}, {0, 1}, {-1, 1}, {-1, 0}, {0, -1}}
o4 : List
|
i5 : max X
o5 = {{0, 1}, {0, 4}, {1, 2}, {2, 3}, {3, 4}}
o5 : List
|
i6 : dim X
o6 = 2
|
The second example illustrates the data defining projective
4-space.
i7 : PP4 = projectiveSpace 4;
|
i8 : rays PP4
o8 = {{-1, -1, -1, -1}, {1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0,
------------------------------------------------------------------------
1}}
o8 : List
|
i9 : max PP4
o9 = {{0, 1, 2, 3}, {0, 1, 2, 4}, {0, 1, 3, 4}, {0, 2, 3, 4}, {1, 2, 3, 4}}
o9 : List
|
i10 : dim PP4
o10 = 4
|
i11 : ring PP4
o11 = QQ[x , x , x , x , x ]
0 1 2 3 4
o11 : PolynomialRing
|
i12 : PP4' = normalToricVariety(rays PP4, max PP4, CoefficientRing => ZZ)
o12 = PP4'
o12 : NormalToricVariety
|
i13 : ring PP4'
o13 = ZZ[x , x , x , x , x ]
0 1 2 3 4
o13 : PolynomialRing
|
The optional argument
WeilToClass allows one to specify the map from the group of torus-invariant Weil divisors to the class group. In particular, this allows the user to choose her favourite basis for the class group. This map also determines the grading on the total coordinate ring of the toric variety. For example, we can choose the opposite generator for the class group of projective space as follows.
i14 : PP2 = projectiveSpace 2;
|
i15 : A = fromWDivToCl PP2
o15 = | 1 1 1 |
1 3
o15 : Matrix ZZ <--- ZZ
|
i16 : source A == wDiv PP2
o16 = true
|
i17 : target A == cl PP2
o17 = true
|
i18 : degrees ring PP2
o18 = {{1}, {1}, {1}}
o18 : List
|
i19 : deg = matrix {toList(3:-1)}
o19 = | -1 -1 -1 |
1 3
o19 : Matrix ZZ <--- ZZ
|
i20 : X = normalToricVariety(rays PP2, max PP2, WeilToClass => deg);
|
i21 : A' = fromWDivToCl X
o21 = | -1 -1 -1 |
1 3
o21 : Matrix ZZ <--- ZZ
|
i22 : source A' == wDiv X
o22 = true
|
i23 : target A' == cl X
o23 = true
|
i24 : degrees ring X
o24 = {{-1}, {-1}, {-1}}
o24 : List
|
i25 : (matrix A')*(matrix rays X)
o25 = 0
1 2
o25 : Matrix ZZ <--- ZZ
|
The integer matrix
A should span the kernel of the matrix whose columns are the minimal nonzero lattice points on the rays of the fan.
We can also choose a basis for the class group of a blow-up of the projective plane such that the nef cone is the positive quadrant.
i26 : Rho = {{1,0},{0,1},{-1,1},{-1,0},{0,-1}};
|
i27 : Sigma = {{0,1},{1,2},{2,3},{3,4},{0,4}};
|
i28 : Y = normalToricVariety(Rho,Sigma);
|
i29 : fromWDivToCl Y
o29 = | 1 -1 1 0 0 |
| 1 0 0 1 0 |
| 0 1 0 0 1 |
3 5
o29 : Matrix ZZ <--- ZZ
|
i30 : nef Y
o30 = | 1 1 0 |
| 0 0 1 |
| 0 1 1 |
3 3
o30 : Matrix ZZ <--- ZZ
|
i31 : deg = matrix{{1,-1,1,0,0},{0,1,-1,1,0},{0,0,1,-1,1}}
o31 = | 1 -1 1 0 0 |
| 0 1 -1 1 0 |
| 0 0 1 -1 1 |
3 5
o31 : Matrix ZZ <--- ZZ
|
i32 : Y' = normalToricVariety(rays Y, max Y, WeilToClass => deg);
|
i33 : fromWDivToCl Y'
o33 = | 1 -1 1 0 0 |
| 0 1 -1 1 0 |
| 0 0 1 -1 1 |
3 5
o33 : Matrix ZZ <--- ZZ
|
i34 : nef Y'
o34 = | 1 0 0 |
| 0 1 0 |
| 0 0 1 |
3 3
o34 : Matrix ZZ <--- ZZ
|