Magma does not contain any datagraphs. They must be built each time they are needed.
> SetVerbose("User1",true);
> G := K3BuildDatabaseGraph(1,10);
Computing baskets with genus 1 and rank at most 10
Time 0: computing RR for 140 baskets
Time 0.279: sorting the Hilbert series
Time 0.299: compiling projection data
Time 0.39: building a graph from the projection data
Time 0.949: checking Type I projections
Time 1.089: building complete.
The object G is a graph whose vertices are labelled by data related
to families of K3 surfaces and whose edges are labelled by data related
to projection from the general member of one family to a more special
member of the other.
> K3Print(G); Database graph of 140 K3 surfaces of genus 1 and 276 projectionsWe look at one of the surfaces: it is one of Reid's `famous 95' weighted K3 hypersurfaces, number 4 in fact.
> X := K3Surface(G,33);
> K3Print(X);
Codimension 1 K3 surface, number 33, Reid1(4), with data
Weights: [ 1, 1, 2, 2 ]
Degree: 3/2
Basket: 3 x [ 2, 1 ]
Numerator: -t^6 + 1
Possible fibration centres: none
Projections:
Type 1 from [ 2, 1 ] to codim 1 K3 surface 10
Unprojections:
Type 1 from [ 3, 1 ] on codim 2 K3 surface 34
Type 1 from [ 2, 1 ] on codim 2 K3 surface 68
This surface X has three singularities that is locally the quotient of
the plane by the group Z/2 acting by reflections: here this is
denoted by the symbol [2, 1]. It is easy to see them in an example:
let PP(1, 1, 2, 2) have coordinates x_1, x_2, y_1, y_2 and notice that
a general equation of degree 6 does not contain the y_1y_2 line, but
cuts it transversely in 3 points yielding the 3 index 2 singularities.
One can project away from any of these singular points to realise another example, surface number 10 which is also a hypersurface (or `codim 1' as the output would have it). And there are two other K3s in this list that project to X: numbers 34 and 68, both of which are in codimension 2. We look at one of these, but restrict the information that is printed.
> Y := K3Surface(G,34);
> K3Print(Y,"ncu");
Codimension 2 K3 surface, number 34, Fletcher2(6), with data
Weights: [ 1, 1, 2, 2, 3 ]
Degree: 5/3
Basket: 2 x [ 2, 1 ], [ 3, 1 ]
Numerator: t^9 - t^5 - t^4 + 1
Projections:
Type 1 from [ 2, 1 ] to codim 1 K3 surface 11
Type 1 from [ 3, 1 ] to codim 1 K3 surface 33
Unprojections:
Type 1 from [ 5, 2 ] on codim 3 K3 surface 35
Type 1 from [ 2, 1 ] on codim 3 K3 surface 69
Type 1 from [ 4, 1 ] on codim 3 K3 surface 37
Type 1 from [ 3, 1 ] on codim 3 K3 surface 42
This is a surface
Y: (f_4 = g_5 = 0) subset PP(1, 1, 2, 2, 3)
where f, g are general polynomials of the indicated degrees in the weighted coordinates x_1, x_2, y_1, y_2, z of PP(1, 1, 2, 2, 3). For instance
zx_1 = x_2^4 + y_1(y_2 - y_1),
zy_1 = x_1^5 + y_2^2x_2
is a particular example. One can use the schemes functions in Magma to check that it is quasismooth (which is the same algorithm as checking nonsingularity in the non-weighted case).
> PP<x1, x2, y1, y2, z> := ProjectiveSpace(Rationals(),[1,1,2,2,3]); > eqns := [z*x1 - x2^4 - y1*(y2 - y1), z*y1 - x1^5 - y2^2*x2]; > YY := Scheme(PP,eqns); > IsNonsingular(YY); trueThus YY is quasismooth and so its singularities can only come from the singularities of the ambient space PP: there are two singularities of index 2 along the y_1y_2 line, and one of index 3 at the z-point. (This analysis is easy to do by hand in this case, which is good since Magma does not yet have facility for it.)
Projecting from the index 3 singularity at the z-coordinate point (which in this case means eliminating z from the equations) results in the variety
{y_1(x_2^4 + y_1(y_2 - y_1)) = x_1(x_1^5 + y_2^2x_2)} subset PP(1, 1, 2, 2)
which is indeed in the form of X, although is not a general surface of that kind since it has been forced to contain the line x_1=y_1=0.
We access data on the surfaces as follows.
> K3Degree(Y), K3Basket(Y); 5/3 [ [ 2, 1 ], [ 2, 1 ], [ 3, 1 ] ]
The K3 database graph of K3 surfaces of genus g and singular rank r - 1 (which is taken to be 19 if no argument r is given) or having baskets B. A basket is a sequence of singularities, each of which is described by a length 2 sequence [r, a] with 0<a<r coprime. Geometrically this is the Gorenstein quotient of the affine plane by the cyclic group of rth roots of unity acting by characters (a, r - a). One can generate sequences of baskets by hand or by using the following intrinsic.
The sequence of all K3 baskets of singular rank at most n.
Build the K3 datagraph using data from the vertex data V and edge data E. This is used when loading previously saved data using the intrinsic K3SaveData.
This saves the data of the graph G to the file with name F. The file will contain Magma code that will generate two sequences, one called vertexdata and one edgedata. Giving these two sequences as arguments to K3BuildDatabaseGraph will return a graph containing the same data as G.
> time G := K3BuildDatabaseGraph(-1,12);
Time: 1.120
> K3Print(G);
Database graph of 20 K3 surfaces of genus -1 and 22 projections
> K3SaveData("testsave", G);
Now reload the data. Switching off Magma's auto-compact facility
prevents usual housekeeping functions during loading, which speeds it up.
> ac := GetAutoCompact();
> SetAutoCompact(false);
> load "testsave";
Loading "testsave"
> SetAutoCompact(ac);
> time G := K3BuildDatabaseGraph(vertexdata,edgedata);
> System("rm testsave");
Time: 0.090
The subgraph of the graph G having vertices that are in the sequence V and edges in the sequence E. If E is not given as an argument, all edges between vertices in V are included.
The subgraph of the parent graph of K3 surface (graph vertex) X that includes only those K3 surfaces that can be reached by projection from X.
The intrinsics that extract K3 surfaces and projections from a graph, and that recover information from a single K3 surface or a single projection between K3 surfaces are described here. These are particularly useful used as predicates when searching through a large graph of K3 surfaces. That is described in the following section.
Intrinsics to extract K3 surfaces (graph vertices) from a graph of K3 surfaces.
> G := K3BuildDatabaseGraph(1,10);
> X := K3Surface(G,15);
> K3Print(X);
Codimension 4 K3 surface, number 15, Altinok4(22), with data
Weights: [ 1, 1, 2, 3, 4, 5, 6 ]
Degree: 4/3
Basket: [ 2, 1 ], [ 6, 1 ]
Numerator: -t^17 + 2*t^11 + 2*t^10 + t^9 - t^8 - 2*t^7 - 2*t^6 + 1
Possible fibration centres: none
Projections:
Type 1 from [ 6, 1 ] to codim 3 K3 surface 14
Type 1 from [ 2, 1 ] to codim 3 K3 surface 5
Unprojections:
Type 1 from [ 3, 1 ] on codim 5 K3 surface 23
Type 1 from [ 7, 1 ] on codim 5 K3 surface 16
Type 1 from [ 2, 1 ] on codim 5 K3 surface 39
The K3 surface number 16 presumably extends the sequence of weights
up to 7, and we find out by extracting it in the same way as we did X.
> Y := K3Surface(G,16); > K3Weights(Y); [ 1, 1, 2, 3, 4, 5, 6, 7 ]One can see here how information is transferred along the projections (edges of the graph). If we simply took the Hilbert series of Y and tried to analyse it naively, we might get as far as this:
> h := K3HilbertSeries(Y); > FindFirstGenerators(h); [ 1, 1, 2, 3, 4 ]Certainly we would think about including a 7 in this sequence of weights to generate the index 7 singularity of Y. We might even manage a 6 to polarise that singularity. But the 5 has come from the graded ring of X.
The K3 surface (graph vertex) numbered n in the graph G.
A sequence containing all the K3 surfaces (graph vertices) of the graph G. This is convenient for using in sequence constructors or in `for' loops:
> for X in K3Surfaces(G) do
> ...
> end for;
A sequence containing all the projections (graph edges) between K3 surfaces (graph vertices) of the graph G.
The genus of the K3 surface (graph vertex) X. That is, the number dim H^0(X, A) - 1 where A is the polarisation.
The basket of singularities of the K3 surface (graph vertex) X. This is a sequence of Gorenstein quotient singularities, each one being expressed as a pair [r, a] of coprime integers 0<a<r.
The index of the singularity Q. That is, the number r where Q=[r, a] denotes a quotient singularity.
The degree of the K3 surface (graph vertex) X. That is, the number A^2 where A is the polarisation.
The singular rank of the K3 surface (graph vertex) X. That is, the number sum r - 1 where the sum is taken over the basket of X.
The weights of the ambient wps of the K3 surface (graph vertex) X.
The codimension of the K3 surface (graph vertex) X in its ambient wps.
The Hilbert series of the K3 surface (graph vertex) X.
The Hilbert numerator of the K3 surface (graph vertex) X in its embedding in wps. That is, the product h x Pi (1 - t^a) where a runs over the weights of the ambient wps and h is the Hilbert series of X.
The number of the K3 surface (graph vertex) X in the lists of Reid, Fletcher and Alt{i}nok.
The number of the K3 surface (graph vertex) X in the graph.
A sequence containing the projections (graph edges) from the K3 surface X.
A sequence containing the projections (graph edges) whose image is the K3 surface X.
A sequence containing the K3 surfaces (graph edges) that are images of a projection from the K3 surface (graph edge) X.
A sequence containing the K3 surfaces (graph edges) that admit a projection to the K3 surface (graph edge) X.
The shortest chain of projections from K3 surface (graph vertex) X that ends in a K3 surface having no projections.
The shortest chain of unprojections from K3 surface (graph vertex) X that ends in a K3 surface having no unprojections.
A sequence containing sequences of projections (graph edges) that start from the K3 surface (graph vertex) X.
A sequence containing the singularities in the basket of the K3 surface (graph edge) X from which projection would result in a variety of degree zero, so is expected to determine a fibration of X.
The domain K3 surface (graph vertex) of the projection (graph edge) p.
The codomain K3 surface (graph vertex) of the projection (graph edge) p.
The type of the projection (graph edge) p.
The singularity that is the centre of the projection (graph edge) p.
The difference between the codimension of the domain and the codomain of the projection (graph edge) p.
Since the graphs are never very large, one can use sequence constructors and the predicates made up of the intrinsics of Section K3 surfaces and projections to search through them. A few common such searches have been packaged into a single intrinsic.
> time G := K3BuildDatabaseGraph(-1,17); Time: 24.860 > K3Print(G); Database graph of 962 K3 surfaces of genus -1 and 2412 projectionsNow search it for surfaces having some property, in this case having a few big singularities and smallish codimension.
> good := [ X : X in K3Surfaces(G) | #K3Basket(X) le 3 and > K3Codimension(X) le 6 and K3SingularRank(X) ge 15]; > #good; 36One can make a graph from these good surfaces, so that again this collection is subject to all the intrinsics.
> G1 := K3Subgraph(G,good); > K3Print(G1); Database graph of 36 K3 surfaces of genus -1 and 15 projections > K3ListCodimensions(G1); [ <1, 4>, <2, 6>, <3, 3>, <4, 7>, <5, 8>, <6, 8> ]The last line shows that there are four K3 surfaces in this collection with codimension 1, six with codimension 2 and so on. These surfaces are fairly exotic: none of them have a 1 among their ambient weights, for instance, while several have a 13:
> &or[ 1 in K3Weights(X) : X in K3Surfaces(G1) ]; false > K3SearchInWeights(G1,[13]); [ 26, 74, 99, 235, 244, 415 ]The final output sequence is of graph vertices, that is, K3 surfaces.
> K3Print($1[6]); Codimension 6 K3 surface, number 415, with data Weights: [ 2, 2, 3, 5, 7, 9, 11, 13, 15 ] Degree: 7/30 Basket: [ 2, 1 ], [ 15, 2 ] Numerator: -t^34 + t^24 + t^22 + t^20 + t^19 - t^15 - t^14 - t^12 - t^10 + 1 Possible fibration centres: none Projections: none Unprojections: noneNote that no projections are reported for this surface. Of course, that means that there are no projections from it to surfaces in the graph G1: certainly it will admit projections to other K3 surfaces from its index 15 singularity, but the general K3 of the image family will have singularity rank 14 so is in G but not G1.
> X := K3SearchWeights(G,[2,2,3,5,7,9,11,13,15]); > K3Projections(X); [ [415, 414] ] > K3Centre($1[1]); [ 15, 2 ]There it is.
The K3 surface (graph vertex) of the graph G whose ambient weights are the sequence of natural numbers Q.
A sequence of K3 surfaces (graph vertices) of the graph G whose ambient weights contain the sequence of natural numbers Q.
The subgraph of the graph G of K3 surfaces (graph vertices) of codimension at most the integer n.
The collection of codimensions of K3 surfaces (graph vertices) in the graph G or the sequence of K3 surfaces G, expressed as a sequence of pairs < c, n_c >, where c is a codimension and n_c is the number of K3 surfaces of that codimension.[Next][Prev] [Right] [Left] [Up] [Index] [Root]