Baskets of Singularities

We describe how to create the various point and curve singularities, together with collections or baskets of these singularities that are an ingredient of RR in higher dimensions.

Recall the basic principle of singularity contributions in RR: when we nominate a basket of singularities in the RR formula we do not necessarily expect the corresponding variety to have exactly those singularities associated with it (although that is very commonly the case), but rather to possess singularities which make exactly the same contribution to the RR formula as the singularities of the basket. Thus, we only allow the creation of a restricted class of singularities that (in good cases) allow us to realise all possible contributions.

Contents

Point Singularities

The point singularities that are allowed are always finite cyclic quotient singularities. In the surface case (over the complex numbers C) they are always analytically isomorphic to a neighbourhood of the origin in the quotient (C)2 / G, where G is the group of r-th roots of unity and the action is determined on eigencoordinates x, y of (C)2 by the action of a primitive root of unity λ∈G:

λ .x = λax, λ .y = λby

for some a, b∈{0, ..., r - 1}. Such a singularity is denoted by the symbol oneover(r)(a, b).

Similarly, one defines 3-dimensional quotient singularities, where the symbol oneover(r)(a, b, c) denotes a cyclic quotient singularity. Of course, one can go into yet higher dimensions, with symbol oneover(r)(a1, ..., ak), but although the functions of this chapter can create such singularities, they do not yet calculate RR for singularities of dimension higher than three. By definition, if p=oneover(r)(a1, ..., ak), the index of p is the positive integer r and the polarisation of p is the sequence [a1, ..., ak].

The four main situations in which we use (quotient) point singularities are:

Gorenstein surface singularities oneover(r)(a, r - a) with r coprime to a (for K3 surfaces)
terminal 3-fold singularities sing3(r)(a)(r - a)(b) with r coprime to a, b (for Fano 3-folds)
isolated canonical 3-fold singularities sing3(r)(a)(b)(c) with a + b + c=0 mod r and r coprime to each of a, b, c (for Calabi--Yau 3-folds)
nonisolated canonical 3-fold singularities sing3(r)(a)(b)(c) with a + b + c=0 mod r and no three of r, a, b, c sharing a nontrivial common factor (for Calabi--Yau 3-folds).

In the final, nonisolated case, the points can be points at the intersection of two branches of the 1-dimensional singular loci, or other points on 1-dimensional singular loci that do not have the generic transverse behaviour. (This case is discussed further in Section Making New Databases on curve singularities below.)

There is an additional key piece of data. The contribution of a point p to RR for χ(X, A) depends upon the eigenspace of the G-action in which A lies. In other words, the singularity is also polarised locally by A. This is called the local polarisation or the eigenspace of the singularity (the latter to distinguish it more clearly from the polarisation), and is another integer n in the range {0, ..., r - 1}. When we need to include the eigenspace of A in the singularity, we use the symbol oneover(r)(a1, ..., ak)n.

Example GrdRng_gr-grpoints (H125E3)

We make a point that can lie on a surface.
> p := Point(7,[3,4]);
> p;
1/7(3,4)
> IsGorensteinSurface(p);
true
Now we make a point of a 3-fold.
> q := Point(5,2,[1,2,3]);
> q;
1/5(1,2,3)_[2]
> IsTerminalThreefold(q);
true
> Eigenspace(q);
2
> p eq q;
false
We did not assign an eigenspace to the point p, so a default value was assigned.
> Eigenspace(p);
-1
Creation of Point Singularities
Point(r,n,Q) : RngIntElt, RngIntElt, SeqEnum -> GRPtS
Point(r,Q) : RngIntElt, RngIntElt, SeqEnum -> GRPtS
The point singularity with index a positive integer r, polarisation a sequence of positive integers Q and local polarisation an integer n. The group action should have no quasi-reflections, which means that no integer k>1 is allowed to divide r and all but one of the elements of Q. The local polarisation n modulo r should be a unit modulo r. If it is not given as an argument, the default value is n= - 1.
Accessing the Key Data and Testing Equality
Dimension(p) : GRPtS -> RngIntElt
Dimension of the variety on which the singularity p lies.
Index(p) : GRPtS -> RngIntElt
Index of the singularity p.
Polarisation(p) : GRPtS -> SeqEnum
Polarisation sequence of the singularity p.
Eigenspace(p) : GRPtS -> RngIntElt
Eigenspace of the polarising divisor of the point singularity p.
p eq q : GRPtS, GRPtS -> BoolElt
Return true if and only if the two point singularities p, q have the following attributes equal: dimension, index, polarisation, eigenspace.
Identifying Special Types of Point Singularity
IsIsolated(p) : GRPtS -> BoolElt
Return true if and only if the point singularity p is an isolated singularity; that is, if and only if every element of its polarisation is coprime to its index.
IsGorensteinSurface(p) : GRPtS -> BoolElt
Return true if and only if the point singularity p is a Gorenstein surface point; that is, if and only if p is of type oneover(r)(a, r - a) for r, a coprime.
IsTerminalThreefold(p) : GRPtS -> BoolElt
Return true if and only if the point singularity p is a terminal 3-fold point; that is, if and only if it is isolated, dimension 3 and the polarisation is of the form a, b, r - b, up to a permutation.
TerminalIndex(p) : GRPtS -> RngIntElt
The integer a when p is a singular point with polarisation sequence of the form a, b, r - b, up to a permutation, assuming that p is a terminal 3-fold point singularity.
TerminalPolarisation(p) : GRPtS -> SeqEnum
Polarisation sequence of the singularity p in the order a, b, r - b, where r is the index of p, and b≤r/2. There will be an error if p is not a terminal 3-fold point singularity.
IsCanonical(p) : GRPtS -> BoolElt
Return true if and only if the point singularity p is canonical; that is, if and only if the sum of the polarisation is trivial modulo the index.

Curve Singularities

We follow Buckley's analysis of curve singularities in RR [Buc03]. The first thing to note is that curve singularities in Magma are always 3-dimensional, that is, they are one-dimensional singular loci C⊂X of polarised 3-folds X, A. The degree of C is the intersection number AC. At a general point of a curve singularity C, a transverse section is a Gorenstein surface quotient singularity, that is, a point of type oneover(r) (a, r - a) for coprime integers r, a. This is called the transverse type of C and r is called the transverse index of C.

There are two further key attributes of a curve singularity C: two integers N, t that carry information about the normal bundle of C and about possible special points on C. We do not discuss the meaning of N here except to say that it encodes the splitting type of the normal bundle (see [Buc03] and [SB] for further information), but in any case note that there are intrinsics described below that can identify appropriate values for N given some other invariants. This pair of invariants occur in RR only in the combination N/t, which itself appears only linearly. So given enough coefficients of the Hilbert series as input, this value can be recovered. A curve, therefore, does have an attribute `magic' that records this magic number N/t, and this can be set (and used in RR) even if N, t are not assigned.

We explain the attribute t. The transverse type of C gives a transverse section at any general point along C. But there may be special points, so-called dissident points, that do not have such a section. They certainly occur at an intersection point of two curve singularities, but may also be other points in C. They are quotient singularities {pi} whose indices are of the form rti for positive integers ti, where r is the transverse index of C. The invariant t, called the index of C, is the GCD of the set of all such ti.

Example GrdRng_gr-curvesing (H125E4)

We create a curve singularity with given transverse type.
> p := Point(3,[1,2]);
> C := Curve(1/3,p,4,3);
> C;
Curve of degree 1/3, N = 4, t = 3 with transverse type 1/3(1,2)
We check some of the characteristics of C.
> TransverseIndex(C);
3
> IsCanonical(C);
true
> MagicNumber(C);
4/3
Creation of Curve Singularities
Curve(d,p,m) : FldRatElt,GRPtS,FldRatElt -> GRCrvS
Curve(d,p,N) : FldRatElt,GRPtS,RngIntElt -> GRCrvS
Curve(d,p,N,t) : FldRatElt,GRPtS,RngIntElt,RngIntElt -> GRCrvS
The 3-fold curve singularity of degree d, transverse type p (a point surface singularity) and characteristic numbers N, t (which is 1 if not set) or magic number m=N/t.
Accessing the Key Data and Testing Equality
Degree(C) : GRCrvS -> RngIntElt
The degree of the curve singularity C.
TransverseType(C) : GRCrvS -> GRPtS
The transverse type of the curve singularity C, that is, a point surface singularity that is the general transverse section of C.
TransverseIndex(C) : GRCrvS -> RngIntElt
The transverse index of the curve singularity C, that is, the index of the point surface singularity that is a general transverse section of C.
NormalNumber(C) : GRCrvS -> RngIntElt
The invariant N of the curve singularity C.
Index(C) : GRCrvS -> RngIntElt
The invariant t (sometimes called τ) of the curve singularity C that is determined by the indices of dissident points on C.
MagicNumber(C) : GRCrvS -> RngIntElt
The number N/t of the curve singularity C, where N is the normal number of C and t is the index of C.
Dimension(C) : GRCrvS -> RngIntElt
The dimension of the curve singularity C (currently always 3).
IsCanonical(C) : GRCrvS -> BoolElt
Return true if and only if the transverse type of the curve singularity C is a canonical (or Du Val) surface singularity.
C eq D : GRCrvS, GRCrvS -> BoolElt
Return true if and only if the two curve singularities C, D have the following attributes equal: dimension, degree, transverse type, magic number (or, equivalently, the pair of invariants N, t).

Baskets of Singularities

A basket of singularities, or simply basket, is a collection of point and curve singularities. One constructs baskets in the hope of finding a variety that has exactly those singularities lying on it as its only singularities, and very often this is indeed the case. It is a marginal issue here, but worth noting that in fact baskets are collections of ideal singularities of a variety X that make exactly the same contributions to RR as the actual singularities of X. So as a matter of principle, one is not primarily seeking varieties with exactly the basket singularities, even though this is what happens in practice.

Creation and Modification of Baskets
Basket(Q) : SeqEnum -> GRBskt
Basket(Q1,Q2) : SeqEnum,SeqEnum -> GRBskt
The basket of singularities where Q, Q1, Q2 are sequences of point or curve singularities.
EmptyBasket() : . -> GRBskt
The basket of singularities containing no singularities.
MakeBasket(Q) : SeqEnum -> GRBskt
The basket of singularities containing point singularities that are encoded in the sequence Q. This may occur in different ways. If Q is a sequence of sequences of the form [r, a] (that is, each having length 2) with r, a coprime, then the result will be a basket of points of the form oneover(r)(a, r - a). If Q is a sequence of sequences of some common length N>2, then the result will be a basket of points of the form oneover(Q[1])(Q[2], ..., Q[N]). Note that a local polarisation n cannot be included in this constructor: the default value n = - 1 is always assumed.
Points(B) : GRBskt -> SeqEnum
The sequence of point singularities of the basket B.
Curves(B) : GRBskt -> SeqEnum
The sequence of curve singularities of the basket B.
Tests for Baskets
IsIsolated(B) : GRBskt -> BoolElt
Return true if and only if all singularities of the basket B are isolated (so, in particular, there are no curve singularities in B).
IsGorensteinSurface(B) : GRBskt -> BoolElt
Return true if and only if all singularities of the basket B are Du Val singularities, that is, are of the form oneover(r)(a, r - a).
IsTerminalThreefold(B) : GRBskt -> BoolElt
Return true if and only if all singularities of the basket B are terminal 3-fold singularities.
IsCanonical(B) : GRBskt -> BoolElt
Return true if and only if all singularities of the basket B are canonical singularities.

Curves and Dissident Points

Curves of singularities may contain special points not of the typical transverse type; these are the dissident points. The following intrinsics generate sequences of possible dissident points for a particular curve singularity. The point is that some of the invariants of a curve singularity force a curve to have dissident points that together give a certain RR contribution. It is not always easy to see what these points should be, so constructing by hand baskets that include a particular curve singularity can be difficult. These intrinsics all give suggestions for possible sets of dissident points.

CanonicalDissidentPoints(C) : GRCrvS -> SeqEnum
A sequence of sequences of points, each of which minimally accounts for the index of the curve singularity C (although further curves may be needed in order for it to make sense).
SimpleCanonicalDissidentPoints(C) : GRCrvS -> SeqEnum
A sequence of sequences of points, each of which minimally accounts for the index of the curve singularity C and which does not allow further curves to meet C.
PossibleCanonicalDissidentPoints(C) : GRCrvS -> SeqEnum
A sequence of points, each of may appear on the curve singularity C as a dissident point.
PossibleSimpleCanonicalDissidentPoints(C) : GRCrvS -> SeqEnum
A sequence of points, each of may appear on the curve singularity C as a dissident point but which is not at the intersection of C with another curve.
V2.28, 13 July 2023