|
[Next][Prev] [Right] [____] [Up] [Index] [Root]
We describe a package to work quite generally with toric geometry
within the scope of Magma's scheme machinery.
From that point of view, we regard toric varieties as a vast
array of possible ambient spaces for schemes, generalising the
affine and projective spaces already available.
But of course toric geometry is a large topic in its own
right, and in the first place we present it for its own sake.
There are many different points of view on toric geometry.
We model our approach on several sources: the primary ones are
Danilov [Dan78] and Cox [Cox95], but also
Fulton [Ful93] and Oda [Oda88].
One of the primary points of view, exemplified by Danilov [Dan78],
is to regard the two-way relationship
between a part of scheme theory and the combinatorics of polyhedra
as foundational. This package can operate from that point of
view. The package is designed to handle the combinatorial
computations in fairly low dimension: it has not been designed
with 100-dimensional polyhedra in mind, although they can
be constructed and studied but always at the risk that
calculations may never terminate.
Another, more recent, point of view is that of the Cox ring,
introduced by Cox [Cox95],
a (multi-)graded polynomial ring that works as a homogeneous
coordinate ring for a toric variety (or indeed any variety
with finitely-generated Picard group) in much the same way
as the coordinate ring of affine or projective space.
This package can also operate from this point of view,
and indeed this is the central object in its design.
Again, this is bound to impose practical restrictions on
the dimensions in which calculations can reasonably be
expected to work: we use these `Cox coordinates' to define
subschemes of toric varieties, which often leads to
Gröbner basis calculations, and these are famously
intolerant of the number of variables involved.
It is also possible to treat the combinatorial parts of this
package---the material on polytopes, polyhedra and cones---as
a suite of functions for point counting and enumeration,
triangulation, intersection, Minkowski sum, and so on
without reference to fans or Cox rings or toric geometry at all.
Subsections
The combinatorics of lattice polytopes and cones over them is
one of the primary ingredients in toric geometry.
But this is already a huge subject in its own right,
and for many applications it is possible to work
entirely in this language without ever discussing toric
varieties or divisors.
(In terms of toric geometry, this corresponds roughly to working
with varieties whose anticanonical class is nef and big.)
A polytope can be constructed as the convex hull of
finitely many points; the points can be denoted simply
as sequences of integers (or even rational numbers), although
they will be cast as points of a toric lattice.
> vertices := [ [1,0,0], [0,1,0], [1,-3,5], [-2,2,-5] ];
> P := Polytope(vertices);
> P;
3-dimensional polytope P with 4 generators:
( 1, 0, 0),
( 0, 1, 0),
( 1, -3, 5),
(-2, 2, -5)
One can extract the combinatorial components of P.
> Facets(P);
[
2-dimensional polytope with 3 vertices:
( 1, -3, 5),
(-2, 2, -5),
( 0, 1, 0),
2-dimensional polytope with 3 vertices:
( 1, -3, 5),
(-2, 2, -5),
( 1, 0, 0),
2-dimensional polytope with 3 vertices:
(1, -3, 5),
(0, 1, 0),
(1, 0, 0),
2-dimensional polytope with 3 vertices:
(-2, 2, -5),
( 0, 1, 0),
( 1, 0, 0)
]
> Points(P);
[
(-2, 2, -5),
(0, 0, 0),
(0, 1, 0),
(1, -3, 5),
(1, 0, 0)
]
The interior points or boundary points can be retrieved
separately using InteriorPoints(P) and BoundaryPoint(P).
Geometric properties of P are available: it is a Fano polytope
because it has a single interior point and primitive vertices.
> IsFano(P);
true
> Volume(P);
20
> GorensteinIndex(P);
5
The volume is the lattice-normalised volume:
( Vol)(P) = n! x ( vol)(P), where ( vol)(P) is
the Euclidean volume of P.
The dual polytope to P can be computed. The Ehrhart series,
( Ehr)(D) = Σn≥0 # ( nD ∩Zn ) tn,
computes the number of points in multiples of a polytope, and
in this case the Ehrhard series of the dual of P equals
the Hilbert series of the toric Fano 3-fold determined by P.
> D := Dual(P);
> EhrhartCoefficients(D,10);
[ 1, 7, 33, 91, 193, 355, 585, 899, 1309, 1827, 2469 ]
The Ehrhart series can be recovered as a rational function.
> E<t> := Ehrhart(D);
> E;
(t^7 + 4*t^6 + 15*t^5 + 12*t^4 + 12*t^3 + 15*t^2 + 4*t + 1)/(t^8 - 3*t^7 + 3*t^6
- t^5 - t^3 + 3*t^2 - 3*t + 1)
It is possible to make maps of the underlying `toric lattices' (the ambient
Q vector spaces marked with a spanning lattice Zn) and apply them
to polyhedra.
> L := Ambient(P);
> K := ToricLattice(2);
> f := LatticeMap(L, K, Matrix(3,2,[1,0,0,1,0,0]));
> Q := f(P);
> Vertices(Q);
[
(1, 0),
(0, 1),
(1, -3),
(-2, 2)
]
In this case the image polytope Q=f(P) is not a simplex.
We can triangulate it.
> Triangulation(Q);
{
2-dimensional polytope with 3 vertices:
(1, 0),
(1, -3),
(0, 1)
2-dimensional polytope with 3 vertices:
(1, -3),
(-2, 2),
(0, 1)
}
The projective plane is the toric variety corresponding
to the fan with three maximal cones lying in the Euclidean plane:
< (0, 1), (1, 0) >,
< (1, 0), ( - 1, - 1) >,
< ( - 1, - 1), (0, 1) >.
We build the projective plane (defined over the rational field)
as a toric variety.
There are various simple constructors for this, but we
do it slowly by constructing its fan first: we list the
one-dimensional rays of the fan, and then describe each maximal
cone by listing the sequence of indices of the rays that
generate it.
> rays := [ [0,1], [1,0], [-1,-1] ];
> cones := [ [1,2], [1,3], [2,3] ];
> F := Fan(rays,cones);
> F;
Fan F with 3 rays:
( 0, 1),
( 1, 0),
(-1, -1)
and 3 cones with indices:
[ 1, 2 ],
[ 1, 3 ],
[ 2, 3 ]
This is enough to determine a toric variety; we name its
natural (Cox) coordinates as x, y, z during the definition.
(Since this is a scheme, it needs to have a base ring
assigned.)
> X<x,y,z> := ToricVariety(Rationals(),F);
> X;
Toric variety of dimension 2
Variables: x, y, z
The irrelevant ideal is:
(z, y, x)
The grading is:
1, 1, 1
As with all schemes in Magma, points can be created by
coercing sequences of coefficients (either from the given base
field or from an extension of that) into the scheme.
> X ! [1,2,3];
(1 : 2 : 3)
When working over an extension k of the base field, one
must coerce into the point set (of k-valued points of X).
> k<i> := QuadraticField(-1);
> X(k);
Set of points of X with coordinates in k
> X(k) ! [1,i,2*i];
(1 : i : 2*i)
The irrelevant ideal (described in the display of X above)
describes the locus of coordinates that do not represent
points; in this case, the irrelevant ideal records the fact
that (0:0:0) is not a point of projective space.
> X ! [0,0,0];
>> X ! [0,0,0];
^
Runtime error in '!': Illegal coercion
The intrinsic call ProjectiveSpace(Rationals(),2) does
not create the plane as a toric variety, but there is a
one-step constructor: WeightedProjectiveSpace()
with [1, 1, 1], or simply 2, as the second argument.
> Y<u,v,w> := WeightedProjectiveSpace(Rationals(),2);
> Y;
Toric variety of dimension 2
Variables: u, v, w
The irrelevant ideal is:
(w, v, u)
The grading is:
1, 1, 1
Danilov translated the projectivity of a toric variety into
properties of the fan. In geometry, projectivity is equivalent
to the existence of an ample line bundle. In the combinatorics
of the fan, the requirement is the existence of
positive linear functions on each cone that agree on the boundaries
and are strictly convex across boundaries.
This is one small part of the theory of divisors on
toric varieties that we cover in much greater detail in
Section Invariant Divisors and Riemann-Roch Spaces.
We construct an example of a complete but non-projective toric variety
following Danilov's original example of how a fan can fail to admit
a strictly convex piece-wise linear support function.
We will build the fan by hand, first specifying exactly the
(one-dimensional) rays that it contains.
> rays := [ [0,0,1], [4,0,1], [0,4,1], [1,1,1], [2,1,1], [1,2,1], [-1,-1,-1] ];
Now we specify the top-dimensional cones that the fan contains.
This is done by naming the rays that generate each cone from the list of
rays above. So, for example, the sequence [1,3,6] below
refers to the cone generated
by the 1st, 3rd and 6th rays, that is by [0, 0, 1], [0, 4, 1] and [1, 2, 1].
> cones := [ [1,3,6], [1,4,6], [1,2,4], [2,4,5], [2,3,5], [3,5,6], [4,5,6],
> [1,3,7], [1,2,7], [2,3,7] ];
This is enough information to determine a fan. The command below
to construct the fan F with this data takes a little time, since
it checks that the maximal cones we nominated are indeed maximal
and intersect correctly to lie in a fan.
> F := Fan(rays,cones);
Finally we move away from the lattice world to the geometry by
creating the toric variety corresponding to the fan F.
> X := ToricVariety(Rationals(),F);
We can now ask questions of X as we would with any other variety
or ambient space.
> Dimension(X);
3
> IsComplete(X);
true
> IsProjective(X);
false
Unfortunately our specimen is flawed: it has singularities.
> IsNonsingular(X);
false
> Y := Resolution(X);
> IsProjective(Y);
false
The last line takes a little time: Magma computes the ample
cone of Y and then determines whether or not it is empty.
In this case, Y remains non-projective, although there is
no reason to expect that: Danilov's original example can
be made projective by blowing up a line (or simply flopping
a line).
The Cox ring of a toric variety is its natural homogeneous
coordinate ring. It is a multigraded ring (with other
data besides). It is often easier to construct the gradings
for a Cox ring than it is to describe a fan.
A Cox ring requires four pieces of data:
 - a polynomial ring R (a ring of coordinates for an affine space)
 - a sequence B of `irrelevant' ideals (the loci defined by these
are discarded from the affine space)
 - a sequence Z of sequences of integral weights for R;
each element has length the number of indeterminates of R
 - a sequence Q of sequences of rational weights for R.
Cox's original construction determines a Cox ring from the
fan of a toric variety, and then realises the toric variety
as the quotient of the affine space (with the irrelevant locus
discarded) by the action of a torus (determined by the sequences
of weights).
But it is also possible simply to specify this data independently of a fan.
> R<u,v,x,y,z> := PolynomialRing(Rationals(),5);
> irrel1 := ideal< R | u,v >;
> irrel2 := ideal< R | x,y,z >;
> B := [ irrel1, irrel2 ];
> Zwts := [
> [ 1, 1, 0, -1, -3 ],
> [ 0, 0, 1, 2, 3 ] ];
> Qwts := [];
> C := CoxRing(R,B,Zwts,Qwts);
> C;
Cox ring C with underlying Polynomial ring of rank 5 over Rational Field
Order: Lexicographical
Variables: u, v, x, y, z
The components of the irrelevant ideal are:
(z, y, x), (v, u)
The 2 gradings are:
1, 1, 0, -1, -3,
0, 0, 1, 2, 3
The pieces of data can be retrieved by Gradings(C),
QuotientGradings(C) and so on.
In favourable cases, a Cox ring does indeed arise from a
fan using Cox's construction. This fan can be recovered.
> F := Fan(C);
> F;
Fan F with 5 rays:
( 1, 0, 0),
( 0, 1, 0),
( 1, 1, 3),
(-2, -2, -3),
( 1, 1, 1)
and 6 cones with indices:
[ 1, 3, 4 ],
[ 1, 3, 5 ],
[ 1, 4, 5 ],
[ 2, 3, 4 ],
[ 2, 3, 5 ],
[ 2, 4, 5 ]
Alternatively, one can construct a toric variety from
a Cox ring---as in Cox's construction, the Cox ring contains
exactly the data required to construct a variety as a
torus quotient.
> X := ToricVariety(C);
> Dimension(X);
3
Sequences of coefficients not lying in the locus of the irrelevant
ideal can be interpreted as closed points of X as usual.
> X ! [1,0,1,0,0];
(1 : 0 : 1 : 0 : 0)
> X ! [1,0,0,0,0];
>> X ! [1,0,0,0,0];
^
Runtime error in '!': Illegal coercion
The attempted coercion of the second point fails because
its x, y and z coordinates (the 3rd, 4th and 5th coefficients
of the vector) are all zero, but the locus x=y=z=0 is
defined by a component of the irrelevant ideal and so has
been discarded: points of X do not have all three of
those coordinates simultaneously equal to zero.
The homogeneous coordinates that the Cox ring provides for
X behave in a very similar way to the homogeneous coordinates
on projective space. In particular, one can define subschemes
of X by the vanishing of polynomials in the Cox ring that
are homogeneous with respect to all the Z-gradings (and
the quotient gradings too).
> f := x^4*y + u^2*y^3 + v^5*z^2;
> Multidegree(V,f);
[ -1, 6 ]
[]
The multidegree is returned as two sequences: the first is
the sequence of degrees of f with respect to each of the
Z-gradings in turn, and the second is that with respect
to the quotient gradings (in this case there are none).
One defines a scheme as usual in Magma.
> V := Scheme(X, f);
> V;
Scheme over Rational Field defined by
u^2*y^3 + v^5*z^2 + x^4*y
> Dimension(V);
2
Much of Magma`s scheme machinery works for schemes inside
toric varieties, although at this stage some does not.
(Some functions are missing because of the absence of
standard nonsingular affine patches on toric varieties.
In some cases these will be replaced by their orbifold
analogues in due course.)
[Next][Prev] [Right] [____] [Up] [Index] [Root]
|