-
Notifications
You must be signed in to change notification settings - Fork 0
/
ConstructionQuartic
189 lines (161 loc) · 6.7 KB
/
ConstructionQuartic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
/*
This file finds examples of a quartic K3 surface
defined over the Rationals, with Picard number 2 and a
holomorphic involution. These examples are constructed
by generating a random curve of genus 2 in P1xP1 and
embedding this via the Segre embedding in P3. There
we look for a quartic surface containing this curve.
If the quartic surface is smooth it will be a K3 surface
containing a genus 2 curve. The linear system of this
curve gives a 2-1 cover of the projective plane,
inducing the holomorphic involution.
The function can take quite a lot of time, because it
uses the time consuming function Deg2K3RankUpperBound.
This is needed to check if the surface has Picard rank 2.
If not, the process starts again so if we are unlucky
it can take more than one hour...
*/
load Deg2K3RankUpperBound;
// function to calculate Picard number
if assigned k and assigned l then
assert k lt l;
else
k := -10;
l := 10;
end if;
// sets the boundaries of the random generator.
// If one defines k and l, before loading this file,
// one can adjust the bounds
Q:=RationalField();
P1xP1<x0,x1,y0,y1>:=ProductProjectiveSpace(Q,[1,1]);
P3<x,y,z,w>:=ProjectiveSpace(Q,3);
P2<s,t,u> := ProjectiveSpace(Q,2);
RR:=CoordinateRing(P2);
K<a,b>:=FieldOfFractions(PolynomialRing(Q,2));
// will be used to find the branched curve..
g:=x0^2*y1-x1^2*y0; // curve in P1xP1 needed for
// construction quartic surface
c:=[]; // make list for coefficients of polynomial f
// for the curve with desired properties
PicNr := 22;
while PicNr ne 2 do
// as long as the surface we've found doesnt have Pic number 2,
// we keep searching
asrt := false;
// Defining a curve of genus 2 and searching for a quartic that
// contains this curve:
while asrt ne true do
for i in [1..12] do
c[i]:=Random([k..l]); // creates random coefficients for polynomial f
// bound can be adjusted
if c eq [0,0,0,0,0,0,0,0,0,0,0,0] then
c[1]:=1; // make sure that f is not the zero polynomial
end if;
end for;
f:=y0^3*(c[1]*x0^2+c[2]*x0*x1+c[3]*x1^2)
+y0^2*y1*(c[4]*x0^2+c[5]*x0*x1+c[6]*x1^2)
+y0*y1^2*(c[7]*x0^2+c[8]*x0*x1+c[9]*x1^2)
+y1^3*(c[10]*x0^2+c[11]*x0*x1+c[12]*x1^2);
if IsNonsingular(Scheme(P1xP1,f)) eq true then
CD:=Scheme(P1xP1,f*g); // Union of curves defined by f and g.
CDim:=SegreEmbedding(CD);
/* This curve CD embeds in a quartic surface which is given by one of
the defining equations. Apparently it is the second one... */
h:=DefiningEquations(CDim)[2];
X:=Scheme(P3,h); // quartic surface
asrt := IsNonsingular(X);
end if;
end while;
// Defining the curve C on the Quartic
pC := Scheme(P1xP1,f);
Cim := SegreEmbedding(pC);
eqC := Equations(Cim);
C := Scheme(P3,eqC);
assert C subset X;
// Defining the double cover map pi
DivC := Divisor(X,C);
LC := RiemannRochBasis(DivC);
pi := map < X -> P2 | [LC[1],LC[2],LC[3]] >;
pieq := DefiningEquations(pi);
B := BaseScheme(pi); // this will be the part where the
// defining equations of pi are all 0.
// Now we need to find the model as a double cover, i.e. we
// will search for branched curve in P2 of the double cover.
// We will do this by searching for the inverse image of the
// generic point (a:b:1) and solve for which points we only
// have one point in the inverse image. This is why we use
// the field K:=Q(a,b).
XK:=BaseChange(X,K);
P3K<z0,z1,z2,z3>:=AmbientSpace(XK);
// Defining equations of pi:
pe1 := Evaluate(pieq[1],[z0,z1,z2,z3]);
pe2 := Evaluate(pieq[2],[z0,z1,z2,z3]);
pe3 := Evaluate(pieq[3],[z0,z1,z2,z3]);
// equations which have to hold for the inverse image
eqF1 := pe1-a*pe3;
eqF2 := pe2-b*pe3;
// Inverse image of the generic point (a:b:1):
pXF:= XK meet Scheme(P3K,[eqF1,eqF2]);
XF:=Difference(pXF,Scheme(P3K,Equations(B)));
// Note that this defines a zero dimensional scheme
// with two points over the field K.
// In particular, one can check that the equations of pi
// only depend on the first coordinates and hence magma
// gives us a quadric equation in y3, from which we can
// deduce where the curve is branched. This is what we do below:
for p in Equations(XF) do
if Degree(p) eq 2 then
cf:=ClearDenominators(p);
end if;
end for;
cf1:=MonomialCoefficient(cf,z2^2);
cf2:=MonomialCoefficient(cf,z2*z3);
cf3:=MonomialCoefficient(cf,z3^2);
if cf2 ne 0 then // if cf2=0 then the involution is induced by
// a linear map and so the Picard number definitely
// will not be 2. So we skip the below calculations
// and search for a new curve and surface.
D:=cf2^2-4*cf1*cf3; // determinant of abc-formula, so this exactly
// tells where we have only one solution.
fD:=Factorization(Numerator(D));
// Now we can find the branched curve:
for p in fD do
if Degree(p[1]) eq 6 then
ff:=ClearDenominators(RR!(u^6*Evaluate(p[1],[s/u,t/u])));
end if;
end for;
// Check Picard number:
R:=Deg2K3RankUpperBound(ff,20);
PicNr := R[1]; // if eq 2 the while loop stops..
end if;
end while;
// Below is the output of the file:
"A smooth quartic X is found with an involution and Picard rank 2: ";
"The K3 surface X is: ";
X;
"The curve C of genus 2 on X, inducing the involution, is given by: ";
C;
"The surface X is a double cover of P2, with the covering map given by: ";
pi;
"This map is ramified over the curve defined by: ";
ff;
/* Output example:
A smooth quartic X is found with an involution and Picard rank 2:
The K3 surface X is:
Scheme over Rational Field defined by
6*x^2*y^2 + 3*y^4 + 6*x*z^3 + z^4 - 6*x^3*w + 7*x^2*y*w + 7*x*y^2*w + 10*y^3*w - 7*x^2*z*w - 7*x*z^2*w + 3*z^3*w - 3*x^2*w^2 - 11*x*y*w^2 + 10*y^2*w^2 - 7*x*z*w^2 + 8*z^2*w^2 - 10*x*w^3 - 10*z*w^3
The curve C of genus 2 on X, inducing the involution, is given by:
Scheme over Rational Field defined by
-y*z + x*w,
-6*x*z^2 - z^3 + 6*x^2*w + 3*y^2*w + 7*x*z*w - 3*z^2*w + 7*x*w^2 + 10*y*w^2 - 8*z*w^2 + 10*w^3,
6*x^2*y + 3*y^3 - 6*x^2*z - x*z^2 + 7*x^2*w + 7*x*y*w + 10*y^2*w - 3*x*z*w - 8*x*w^2 + 10*y*w^2
The surface X is a double cover of P2, with the covering map given by:
Mapping from: Sch: X to Prj: P2
with equations :
x*y - z^2
-y*z + x*w
y^2 - z*w
This map is ramified over the curve defined by:
36*s^6 - 12*s^5*t - 83*s^4*t^2 - 50*s^3*t^3 + 55*s^2*t^4 - 306*s*t^5 - 231*t^6 - 60*s^5*u + 14*s^4*t*u + 86*s^3*t^2*u - 176*s^2*t^3*u + 406*s*t^4*u + 478*t^5*u + 37*s^4*u^2 - 22*s^3*t*u^2 + 562*s^2*t^2*u^2 + 356*s*t^3*u^2 - 213*t^4*u^2 +
182*s^3*u^3 + 62*s^2*t*u^3 - 278*s*t^2*u^3 - 102*t^3*u^3 - 15*s^2*u^4 + 42*s*t*u^4 + 149*t^2*u^4 + 236*s*u^5 + 60*t*u^5 - 20*u^6
*/