The K3 database in Magma is a collection of 24,099 K3 surfaces. Recall from Section K3 Surfaces the meaning of K3 surface in this context, and from Section Key Warning and Disclaimer the relationship between the Hilbert series, the weights and the (Hilbert) numerator.
We describe the set of K3 surfaces selected for inclusion in the database. For g= - 1, 0, 1, 2, all K3 surfaces of genus g are included, there being 4281, 6479, 6627 and 6628 surfaces, respectively. For higher genus, the data associated to the 6628 K3 surfaces of genus 2 propagates in a predictable way, so only those K3 surfaces with codimension at most 7 and genus in the range 3 to 9 have been included.
Data is held in blocks of surfaces indexed by the first five coefficients of their Hilbert series (excluding the constant term). Note that the t-coefficient of the Hilbert series is one more that the genus, and this defect holds for all genera. To determine the number of surfaces of genus 1, the intrinsics described below may be used. Note the genus argument is a sequence beginning with the integer 2: the sequence is arranged so that the user can ask a more precise question by including other leading genera (up to the first five), and the value 2 is to account for the genus--Hilbert coefficient defect.
> D := K3Database(); > NumberOfK3Surfaces(D,[2]); 6627
The database is fairly large, so naive searches take time. Specialised tools, described below, support much more efficient searches and should be used wherever possible. We demonstrate this point with timings for a typical search. The first searches the entire database for all K3 surfaces of genus 3 and takes over 2 minutes. It is much more efficient to use a function that looks up curves according to their genus, since this is the primary indexing property used by the database. The second search does this, and takes only a fraction of the time.
> time S := [ X : X in D | Genus(X) eq 3 ]; Time: 139.510 > time T := [K3Surface(D,[4],i) :i in [1..NumberOfK3Surfaces(D,[4])]]; Time: 0.500
In this section a simple example is presented of extracting a K3 surface with particular properties from the K3 database. Section Making New Databases provides much greater details and more examples: note, in particular, that only a few hundred of the surfaces that occur in small codimension have been confirmed to exist (even though the vast majority are believed to exist).
> D := K3Database(); > D; The database of K3 surfacesIt contains data associated to 24099 (families of) K3 surfaces.
> #D; 24099
There are several ways to access the K3 surfaces in the database. In the first place, the database is organised into blocks of K3 surfaces that have a common genus. These blocks are then subdivided into K3 surfaces that have a common 2-genus. The blocks having a common 2-genus are further subdivided right down to 5-genus, that is, the coefficient of t5 in the Hilbert series. These subdivisions are the natural indexing units of the database. One gets the third surface with genus 0 by
> X := K3Surface(D,0,3); > X; K3 surface no.3, genus 0, in codimension 1 with data Weights: [ 1, 6, 8, 9 ] Basket: 1/2(1,1), 1/3(1,2), 1/9(1,8) Degree: 1/18 Singular rank: 11 Numerator: -t^24 + 1 Projection to codim 1 K3 no.2 -- type I from 1/9(1,8) Unproj'n from codim 2 K3 no.4 -- type I from 1/10(1,9) Unproj'n from codim 2 K3 no.15 -- type IV from 1/5(2,3) Unproj'n from codim 3 K3 no.28 -- type II_1 from 1/4(1,3) Unproj'n from codim 4 K3 no.84 -- type II_2 from 1/3(1,2) Unproj'n from codim 6 K3 no.280 -- type II_5 from 1/2(1,1)This printout displays a lot of information about this surface and its relationship to other surfaces. The minimal printing option may be use to obtain a concise description of this surface alone.
> X:Minimal; K3 surface (g=0, no.3) in P^3(1,6,8,9) Basket: 1/2(1,1), 1/3(1,2), 1/9(1,8) Numerator: -t^24 + 1
When using several genera to access a surface, the genus arguments must be collected together in a sequence. For example, there are 282 K3 surfaces whose first three genera are p1 = 0, p2 = 1, p3 = 3; that is, have weights that are of the form [2, 3, 3, ... ].
> NumberOfK3Surfaces(D,[0,1,3]); 282
We get the first of these as follows. The arguments inside the sequence brackets are coefficients of the Hilbert polynomial, while the corresponding genus is one less than the coefficient. N.B. Note the offset by -1 between these arguments and the genera.
> K3Surface(D,[0,1,3],1); K3 surface no.1130, genus -1, in codimension 4 with data Weights: [ 2, 3, 3, 3, 4, 4, 5 ] Basket: 2 x 1/2(1,1), 5 x 1/3(1,2) Degree: 1/3 Singular rank: 12 Numerator: t^24 - ... + t^10 - t^9 - 2*t^8 - t^7 - t^6 + 1 Projection to codim 1 K3 no.820 -- type II_2 from 1/3(1,2) Unproj'n from codim 5 K3 no.1131 -- type I from 1/5(2,3) Unproj'n from codim 6 K3 no.1145 -- type II_1 from 1/4(1,3) Unproj'n from codim 7 K3 no.1412 -- type II_2 from 1/3(1,2) Unproj'n from codim 8 K3 no.2176 -- type IV from 1/2(1,1)
The genus and number of a K3 surface identifies it uniquely in the database, so the same function may be used to see surface number 1131 which has projection to X.
> K3Surface(D,-1,1131) : Minimal; K3 surface (g=-1, no.1131) in P^7(2,3,3,3,4,4,5,5) Basket: 1/2(1,1), 4 x 1/3(1,2), 1/5(2,3) Numerator: -t^29 + ... + 6*t^11 - 3*t^9 - 4*t^8 - t^7 - t^6 + 1
The projection is from the oneover(5)(2, 3) singularity, resulting in the extra oneover(2)(1, 1) and oneover(3)(1, 2) points.
There are also searches that do not use the primary indexing directly. For example, the following variation of K3Surface searches for a K3 surface with weights 2, 2, 3, 5, 7, 9, 11.
> K3Surface(D,[2,2,3,5,7,9,11]) : Minimal; K3 surface (g=-1, no.1615) in P^6(2,2,3,5,7,9,11) Basket: 3 x 1/2(1,1), 1/11(2,9) Numerator: t^39 - ... + t^16 - t^13 - t^11 - t^9 + 1
The database of K3 surfaces.
The integer n such that the K3 surface Y := K3Surface(D,Genus(X)+1,n) in the database D has the same Hilbert series as the K3 surface X. The second return value is the K3 surface Y. If there is no such K3 surface, the returned index value is zero.
The integer i such that the K3 surface Y := K3Surface(D,i) in the database D has the same Hilbert series as the K3 surface X. The second return value is the K3 surface Y. If there is no such K3 surface, the returned index value is zero.
To illustrate this, consider the following K3 surface.
> X := K3Surface(1,[[2,1],[3,1],[4,1],[7,1],[8,1]]); > X; K3 surface in codimension 11 with data Weights: [ 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 6, 7, 8 ] Basket: 1/2(1,1), 1/3(1,2), 1/4(1,3), 1/7(1,6), 1/8(1,7) Degree: 613/168 Singular rank: 19 Numerator: -t^47 + ... + 38*t^7 - 2*t^6 - 13*t^5 - 7*t^4 + 1This surface has been calculated in isolation. The weights that have been assigned to it are just enough to make sense of the initial terms of the Hilbert series, and to make the singularities. By construction, the K3 database may have added weights to make simple projections work. So we search for X in the database using either `Index' or `Number'.
> D := K3Database(); > n,Y := Number(D,X); > i,Y1 := Index(D,X); > n,i; 1474 12234This result means that X has the same Hilbert series as the 1474-th K3 surface in D of genus 1, which is the same as the 12234-th K3 surface in D.
> Y eq Y1; true > Y1 eq K3Surface(D,i); trueOne can see that Y is in much higher codimension than X, so that extra weights have been assigned to Y.
> Codimension(Y); 17
The ith K3 surface in the K3 database D.
The ith K3 surface in the K3 database D among those with index suite Q = [g1 + 1, g2 + 1, ...].
The ith K3 surface in the K3 database D among those with genus g ≥ - 1.
The ith K3 surface in the K3 database D among those with genus g1≥ - 1 and 2-genus g2≥ - 1.
The K3 surface in the K3 database D having the weights specified in the sequence W.
The K3 surface in the K3 database D with genus g ≥ - 1 and basket of singularities B (as a basket type or in raw sequence format).