Cox Rings

The Cox ring of a toric variety X is a polynomial ring whose variables are in bijection with the 1-skeleton of the fan of X together with three sequences of additional data:

(1)
a sequence of the components of an ideal called the irrelevant ideal;
(2)
a sequence of integral lattice points determining weights of Gm actions, called the Z weights;
(3)
a sequence of rational lattice points determining weights of finite cyclic group actions, called the quotient weights.

When the Cox ring of a toric variety is displayed in Magma, all nontrivial data is also printed, but any sequences that are empty are omitted.

Cox rings provide a powerful way to construct toric varieties: under some mild conditions, specification of data of this nature determines a toric variety.

Contents

The Cox Ring of a Toric Variety

Cox [Cox95] associates a ring, now called the Cox ring, to a toric variety, and Magma allows exactly the same construction.

CoxRing(X) : TorVar -> RngCox
The Cox ring of the toric variety X.
CoxRing(k,F) : Fld,TorFan -> RngCox
The Cox ring of the toric variety defined over field k by the fan F.

Example Toric_toric-cox-example1 (H126E12)

We build the weighted projective space P2(1, 2, 3).
> P<x,y,z> := ProjectiveSpace(Rationals(),[1,2,3]);
The Cox ring of P2(1, 2, 3) is the usual homogeneous coordinate ring, graded by the weights 1, 2, 3 of the space---that is, x has weight 1, y has weight 2 and z has weight 3.
> CoxRing(P);
Cox ring with underlying Graded Polynomial ring of rank 3 over Rational Field
Order: Graded Reverse Lexicographical
Variables: x, y, z
Variable weights: [1, 2, 3]
The irrelevant ideal is:
    (x, y, z)
The grading is:
    1, 2, 3
The irrelevant ideal is the usual one for projective spaces: it decrees that (0, 0, 0) is not a point of P2 since it lies in the locus defined by the irrelevant ideal.

Example Toric_toric-cox-example2 (H126E13)

We build a toric variety X2 whose fan resembles that of P2.
> F2 := Fan([[1,2],[-2,-1],[1,-1]], [[1,2],[1,3],[2,3]]);
> X2<u,v,w> := ToricVariety(Rationals(),F2);
However, X is not isomorphic to P2. The small catch is that the 1-skeleton of the fan F2 that we defined (in other words, those three vectors (1, 2), ( - 2, - 1) and (1, - 1)) does not generate the lattice N, but only a sublattice. So X will be the quotient of P2 by some finite group action.
> CoxRing(X2);
Cox ring with underlying Polynomial ring of rank 3 over Rational Field
Order: Lexicographical
Variables: u, v, w
The irrelevant ideal is:
    (w, v, u)
The quotient grading is:
    1/3( 0, 2, 1 )
The integer grading is:
         1, 1, 1
The returned data are very similar to those for the Cox ring of P2. The difference is in the third piece of data: a sequence containing the single element 1/3(0, 2, 1). This indicates that X is the quotient of P2 by the action of Z/3 given by

ε: (u, v, w) |-> (u, ε2 v, ε w).

where ε is a cube-root of unity.

Cox Rings in Their Own Right

The introduction to this section describes Cox rings in abstract terms. It is possible to define them as polynomial rings plus additional data without naming a toric variety or a fan in the first place.

CoxRing(R,B,Z,Q) : RngMPol,SeqEnum,SeqEnum,SeqEnum -> RngCox
The Cox ring with polynomial ring R of rank n (that is, having n variables) and additional data as follows: B is a sequence of ideals (or of sequences of elements of R, each of which will be interpreted as the generators of ideals); Z is a sequence of sequences of integers, each one of length n; Q is a sequence of sequences of rationals, each one of length n.

The sequence B is regarded as the components of the irrelevant ideal, and Z and Q are the Z weights and quotient weights respectively.

C1 eq C2 : RngCox,RngCox -> BoolElt
Return true if and only if the two Cox rings C1 and C2 have the same underlying polynomial rings and are defined by the same combinatorial data.
BaseRing(C) : RngCox -> Fld
CoefficientRing(C) : RngCox -> Fld
The coefficient field of the Cox ring C.
UnderlyingRing(C) : RngCox -> RngMPol
The underlying polynomial ring of the Cox ring C.
Length(C) : RngCox -> RngIntElt
The rank of the underlying polynomial ring of the Cox ring C, that is, the number of polynomial variables of C.
IrrelevantIdeal(C) : RngCox -> SeqEnum
The irrelevant ideal of the Cox ring C.
IrrelevantComponents(C) : RngCox -> SeqEnum
A sequence containing the components of the irrelevant ideal of the Cox ring C.
IrrelevantGenerators(C) : RngCox -> SeqEnum
A sequence of sequences, each containing the generators of the components of the irrelevant ideal of the Cox ring C.
Gradings(C) : RngCox -> RngIntElt
The Z gradings of the Cox ring C, that is, a sequence of sequences of integers.
NumberOfGradings(C) : RngCox -> RngIntElt
The number of Z gradings of the Cox ring C.
QuotientGradings(C) : RngCox -> RngIntElt
The quotient gradings of the Cox ring C, that is, a sequence of sequences of rational numbers.
NumberOfQuotientGradings(C) : RngCox -> RngIntElt
The number of quotient gradings of the Cox ring C.
C . i : RngCox, RngInt -> RngMPolElt
The i-th indeterminate for the underlying polynomial ring of the Cox ring C.
AssignNames(~C, S) : RngCox, [MonStgElt] ->
Procedure to change the printed names of the indeterminates of the Cox ring C. The ith indeterminate will be given name the ith element of the sequence S of strings (which has length at most the number of indeterminates of C). This does not change the names of the indeterminates for calling---this must be done with an explicit assignment or with the angle bracket notation when defining the Cox ring in the first place.
Name(C,i) : RngCox,RngIntElt -> RngMPolElt
The ith variable of the underlying polynomial ring of the Cox ring C.

Recovering a Toric Variety From a Cox Ring

It is simple either to recover a toric variety from a Cox ring (if one exists at all) or the fan and associated lattice machinery corresponding to the toric variety. The algorithm is straightforward: use the Z weights to determine the rays of a fan and then the irrelevant ideal to construct the rest of the cone structure of the fan. The quotient weights may then require the lattice to be extended to a larger lattice but containing the same fan. With this point of view, the Cox ring can be regarded as the primary collection of data of a toric variety.

ToricVariety(C) : RngCox -> TorVar
The toric variety whose Cox ring is C. It is not checked whether the Cox data defines a toric variety; if you are unsure, you should ask for the fan.

Example Toric_toric-from-cox-example (H126E14)

Sometimes, rather than defining a fan, it is easier to construct a Cox ring first and build a toric variety from that.
> R<x1,x2,x3,y1,y2,y3,y4> := PolynomialRing(Rationals(),7);
> I := [ ideal<R|x1,x2,x3>, ideal<R|y1,y2,y3,y4> ];
> Z := [ [1,1,1,0,-3,-5,-5], [0,0,0,1,1,1,1] ];
> Q := [];
> C := CoxRing(R,I,Z,Q);
> C;
Cox ring C with underlying Polynomial ring of rank 7 over Rational Field
Order: Lexicographical
Variables: x1, x2, x3, y1, y2, y3, y4
The components of the irrelevant ideal are:
    (y4, y3, y2, y1), (x3, x2, x1)
The 2 gradings are:
    1,  1,  1,  0, -3, -5, -5,
    0,  0,  0,  1,  1,  1,  1
> X := ToricVariety(C);
> X;
Toric variety of dimension 5
Variables: x1, x2, x3, y1, y2, y3, y4
The components of the irrelevant ideal are:
    (y4, y3, y2, y1), (x3, x2, x1)
The 2 gradings are:
    1,  1,  1,  0, -3, -5, -5,
    0,  0,  0,  1,  1,  1,  1
Now Magma can compute the fan of X if we really want it.
> Fan(X);
Fan with 7 rays:
    ( 1,  0,  0,  0,  0),
    ( 0,  1,  0,  0,  0),
    ( 0,  0,  1,  0,  0),
    ( 1,  1,  1,  2,  0),
    (-3, -3, -3, -5,  0),
    ( 0,  0,  0,  0,  1),
    ( 2,  2,  2,  3, -1)
and 12 cones
Fan(C) : RngCox -> TorFan
The fan associated to the Cox ring is C; an error is reported if there is no such fan.
CoxMonomialLattice(C) : RngCox -> TorLat
The Cox monomial lattice of the Cox ring C.
BasisOfRationalFunctionField(X) : TorVar -> SeqEnum
A basis of the rational function field of the toric variety X expressed in terms of rational monomials in the Cox ring.
BasisOfDegree0CoxMonomials(X) : TorVar -> SeqEnum
A basis of the rational function field of the toric variety X expressed in terms of lattice points in the Cox monomials lattice.
DivisorClassLattice(C) : RngCox -> TorLat
The divisor class lattice of the Cox ring C.
MonomialLattice(C) : RngCox -> TorLat
The monomial lattice of the Cox ring C.
OneParameterSubgroupsLattice(C) : RngCox -> TorLat
The one-parameter subgroups lattice of the Cox ring C.
RayLattice(C) : RngCox -> TorLat
The ray lattice of the Cox ring C.
DivisorClassGroup(C) : RngCox -> TorLat
The divisor class group of the Cox ring C.
RayLatticeMap(C) : RngCox -> Map
The map from the ray lattice of the Cox ring C to the ambient lattice of its fan.
WeilToClassGroupsMap(C) : RngCox -> Map
WeilToClassLatticesMap(C) : RngCox -> Map
Comparison maps between toric lattices related to the Cox ring C of a toric variety.
V2.28, 13 July 2023