Del Pezzo Surfaces

Contents

Introduction

This section contains a collection of geometric and arithmetic routines for Del Pezzo surfaces in their anti-canonical embeddings (the full weighted projective anticanonical embedding for degrees 1 and 2).

There are routines for creation, parametrization, minimisation and reduction, construction, computation of invariants for degree 3, and point-counting for degree 3 surfaces over a finite field.

There is a specialised type for Del Pezzos, SrfDelPezzo, which is a subtype of type Srfc. Some intrinsics use this type for arguments while some use the more general Srfc (or even Sch).

Creation of General Del Pezzos

DelPezzoSurface(P,L) : Prj,List -> SrfDelPezzo
DelPezzoSurface(S) : Setq[Pt] -> SrfDelPezzo
DelPezzoSurface(Z) : Clstr -> SrfDelPezzo
The Del Pezzo surface of degree 9 - d, embedded by its anticanonical system, which arises by blowing up the projective plane P in the d points. The arguments are either plane P and a list of points L, the set of points Q, or the length d zero-dimensional scheme Z defining the points. If the points are not in sufficiently general position (so that the anticanonical image is not smooth) then an error is reported.
DelPezzoSurface(f) : RngMPolElt -> SrfDelPezzo
The argument f should be a degree three homogeneous polynomial in a 4-variable polynomial ring P (with grevlex ordering). Creates the degree 3 Del Pezzo surface with defining polynomial f inside Prj3 = (Proj)(P). If this surface is not smooth an error is reported.
IsDelPezzo(Y) : Sch -> BoolElt, SrfDelPezzo, MapSch
Returns true if and only if scheme Y in ordinary projective space is an abstract Del Pezzo surface. If so, it also returns the image X of the standard (pluri-)anticanonical embedding of Y, and the map Y -> X. Note that this can be a computationally very heavy function if Y is in a reasonably high-dimensional ambient.

Some Auxiliary Intrinsics

CollinearPointsOnPlane(P2,S) : Prj,SetIndx[Pt] -> SeqEnum
Argument P2 should be an ordinary projective plane over a field and S an indexed set of distinct points on P2. Returns a sequence containing all subsets (as enumerated sequences) of 3 or more points of S that are collinear.
PointsInGeneralPosition(P2,S) : Prj,SetIndx[Pt] -> BoolElt,SeqEnum,SeqEnum,SeqEnum
    NonGenPts: BoolElt                  Default: false
Argument P2 should be an ordinary projective plane over a field and S an indexed set of 8 or fewer distinct points on P2. Returns whether the points in S are in general position. This means that no 3 are collinear, no 6 lie on a conic and, if there are 8 points, they do not lie on a cubic with a double point at one of them.

If the NonGenPts parameter is set to true and the points are not in general position, also returns 3 sequences containing respectively the subsets of 3 or more collinear points, the subsets of 6 or more co-conic points and the full set of 8 points if they fail to satisfy the cubic condition (all as enumerated sequences).

EckardtPoints(X) : SrfDelPezzo -> Sch
Argument X here should be a degree 3 Del Pezzo surface. Computes the set of Eckardt points of X, which are points where 3 coplanar lines of the surface meet. The result is returned as a zero-dimensional (or empty) scheme consisting of this set of points.

Parametrization of Del Pezzo Surfaces

Del Pezzo surfaces are a special type of non-singular projective surface. A good reference for their general properties is [Man86]. A Del Pezzo surface X has a degree 1 ≤d ≤9. For d ≥3, the standard representation is as a degree d surface in Pd for which a hyperplane section is an anti-canonical divisor. When we talk about Del Pezzos in this section, we mean a surface in that anti-canonical form.

Del Pezzo surfaces are birationally equivalent to the projective plane P2 over an algebraically-closed field. That is, there exists an invertible scheme map from P2 to X : a parametrization. Most of the functions in this section are concerned with the existence of parametrizations of X over a number field.

The significance of Del Pezzo surfaces comes from adjunction theory (see [SvdV87]). The adjunction map for surfaces is a general construct that contracts certain lines, known as exceptional lines, to points. Repeated application of the adjunction map to a rational surface results in a reduction to a surface in one of a small number of families, including the Del Pezzos. For a non-singular ordinary projective surface Y, the intrinsic MinimalModelRationalSurface is now available to produce the birational map from Y to one of the special, terminal cases that include the Del Pezzos.

Hence the parametrization problem for general rational surfaces reduces via adjunction (a purely algebraic construction) to parametrization of surfaces in the specific families, which is an arithmetic problem (ie dependent on the ground field). This is the surface analog of the simpler situation for curves. Any rational curve can be algebraically reduced to the projective line or a plane conic and the parametrization of plane conics is also an arithmetic problem.

Thus, the parametrization of Del Pezzo surfaces is an important component in that of general rational surfaces. General parametrization code for rational hypersurfaces in P3 is described in the previous section and it makes use of the routines described here.

If X is parametrizable with d ≥3, then we can blow down (contract) exceptional lines on it to arrive at a surface with d=5, 6, 8 or 9. The functions described here deal with parametrization in those cases using computational methods based around the Lie algebra of the automorphism group of X. For the theory behind these algorithms, see [dG06], [dGP], [HS06] and [GSHPBS12]. In one of the examples, we parametrize a cubic hypersurface (degree 3 Del Pezzo) by blowing down to a degree 6 surface.

Although reduction to degree 9 is always possible, for d=7 it is more efficient to work directly using the Lie algebra method. There is now also an intrinsic for d=7 provided by Josef Schicho. Schicho has also written code for the d=5 case, minimal or not, that uses the more geometrical method described in the above reference and a corresponding intrinsic is provided.

Furthermore, the degree 5 - 8 intrinsics now also cover degenerate cases of singular Del Pezzos in their anticanonical projective embeddings. The additional code for the singular cases is also due to Josef Schicho.

A feature (from V2.17) is the provision of special case code for degree 3 and degree 4 singular Del Pezzos. For some of these, it is not possible to blow down any exceptional lines over the base field but the surface is still parametrizable. Additionally, it is usually much more efficient to handle these cases directly without blowing down curves to get to higher degree.

A general intrinsic ParametrizeDelPezzo for parametrizing any Del Pezzo surface of degree d ≥1 in its anticanonical weighted embedding (for d = 1, 2 the anticanonical divisor is no longer very ample, but gives an ample embedding into weighted projective space) is described in the previous section. This blows down exceptional lines to reach degree d ≥5 and then invokes one of the intrinsics described in this section. It is more efficient to call the appropriate intrinsic directly if the starting point is either the d ≥5 case or the d = 3, 4 singular cases.

SetVerbose("ParamDP", v) : MonStgElt, RngIntElt ->
Set the verbose printing level for the Del Pezzo parametrizing functions. Currently the legal values for v are true, false, 0, 1 and 2 (false is the same as 0, and true is the same as 1).
ParametrizeDegree9DelPezzo(X) : Sch -> BoolElt, MapIsoSch
Let X be a degree 9 Del Pezzo surface anticanonically embedded in 9-dimensional projective space. For this function the base field should be Q. The surface X is defined by 27 degree 2 polynomials. The function performs only basic checks that the input X is valid.

If X is parametrizable over Q then there is a parametrization φ: P2 -> X which is everywhere-defined and given by cubic polynomials in the variables of P2. The function returns whether such a φ exists and, if so, φ also.

In V2.19, LLL reductions have been applied to give simpler bases for the initial Lie algebra and the corresponding associative algebra. Also, the algorithm for splitting the latter has been changed to the one used with degree 3 homogeneous spaces of elliptic curves. This has greatly speeded up the computation.

ParametrizeDegree8DelPezzo(X) : Sch -> BoolElt, MapSch
Let X be a degree 8 Del Pezzo surface anticanonically embedded in 8-dimensional projective space over a number field. The surface X is defined by 20 degree 2 polynomials. The function performs only basic checks that the input X is valid.

For degree 8, there are two types of non-singular Del Pezzo surface, the second type splitting into subfamilies:

1) X is isomorphic to P2 with a single rational point blown up.

2i) X is isomorphic to T1 x T2 with Ti Galois twists of P1.

2ii) X is isomorphic to a Galois twist of P1 x P1 where Galois acts transitively on the two P1 factors.

In case 1), X is always parametrizable.

In case 2i), X is parametrizable <=> both Ti are trivial twists of P1 <=> X is isomorphic to P1 x P1.

In case 2ii), there is an infinite family of parametrizable Xa classified by a ∈Q * /Q * 2. The scheme Xa is isomorphic (properly, not just birationally) to the surface in P3 given by the equation x02 - ax12=x2x3.

The main function determines whether X is parametrizable over Q. If so, there is a parametrization φ: P2 -> X (given by cubic polynomials in case 1 and by degree 4 polynomials in case 2) and this is also returned.

The intrinsic also handles the degenerate case of a singular degree 8 Del Pezzo surface. This case is recognised directly from the Lie algebra computation which is part of the main routine and an appropriate adaptation of the general method is used.

Example AlgSrf_del-pezzo-ex-8 (H123E29)

In this example, we parametrize an anticanonical sphere X2, in the above notation. This is obviously an artificial illustration, as we start with X2 in the form F=x02 - 2x12 - x2x3=0, which is trivial to parametrize directly! The surface in this form is embedded anticanonically in P8 by any 9-dimensional vector space complement of <F> in the 10-dimensional linear system of all degree 2 polynomials in x0 ... x3. The parametrizing map is undefined at precisely 2 points of the plane. Geometrically, the map consists of a blowup of these 2 points followed by a blowdown of the line joining them.
> P3<x0,x1,x2,x3> := ProjectiveSpace(Rationals(),3);
> X2 := Scheme(P3,x0^2-2*x1^2-x2*x3);
> L := LinearSystem(P3,2);
> L := LinearSystemTrace(L,X2);
> P8<x1,x2,x3,x4,x5,x6,x7,x8,x9> := ProjectiveSpace(Rationals(),8);
> X := map<X2->P8|Sections(L)>(X2); X;
Scheme over Rational Field defined by
x1^2 - 2*x4^2 - x4*x8,
x1*x2 - 2*x4*x5 - x5*x8,
x2^2 - 2*x4*x7 - x7*x8,
x1*x3 - 2*x4*x6 - x5*x9,
x2*x3 - 2*x4*x8 - x7*x9,
x3^2 - 2*x4*x9 - x8*x9,
-x1*x5 + x2*x4,
-x1*x6 + x3*x4,
-x1*x7 + x2*x5,
-x1*x8 + x3*x5,
-x4*x7 + x5^2,
-x1*x8 + x2*x6,
-x1*x9 + x3*x6,
-x4*x8 + x5*x6,
-x4*x9 + x6^2,
-x2*x8 + x3*x7,
-x5*x8 + x6*x7,
-x2*x9 + x3*x8,
-x5*x9 + x6*x8,
-x7*x9 + x8^2
> boo,prm := ParametrizeDegree8DelPezzo(X);
> boo;
true
> prm;
Mapping from: Prj: P2 to Sch: X
with equations :
-1/4*U*V*W^2
-1/16*V*W^3
2*U^2*V*W - 4*V^3*W
-1/8*U^2*W^2
-1/32*U*W^3
U^3*W - 2*U*V^2*W
-1/128*W^4
1/4*U^2*W^2 - 1/2*V^2*W^2
-8*U^4 + 32*U^2*V^2 - 32*V^4
> bs := ReducedSubscheme(BaseScheme(prm)); bs;
Scheme over Rational Field defined by
U^2 - 2*V^2,
W
ParametrizeDegree7DelPezzo(X) : Sch -> MapIsoSch
Let X be a degree 7 Del Pezzo surface anticanonically embedded in 7-dimensional projective space over a number field. We allow that X can be a degenerate (singular) Del Pezzo surface here. The scheme X is always parametrizable over the base field and this intrinsic returns such a parametrisation without reduction to degree 8 or 9 but directly from the Lie Algebra method.
ParametrizeDegree6DelPezzo(X) : Sch -> BoolElt, MapIsoSch
    ExistenceOnly: BoolElt              Default: false
Let X be a degree 6 Del Pezzo surface anticanonically embedded in 6-dimensional projective space. For this function the base field K may be Q or a number field. The surface X is defined by nine degree 2 polynomials. The function performs only basic checks that the input X is valid. NB: This intrinsic only handles the non-singular case. For a singular (degenerate) degree 6 Del Pezzo, use the intrinsic that follows.

The connected component of the automorphism group of X is a 2-dimensional torus over K. For any of the possible tori, there is a family of degree 6 Del Pezzos which correspond to principal homogeneous spaces of the torus up to isomorphism. The parametrizability of X is equivalent to X corresponding to the trivial homogeneous space of its torus.

The function determines whether a parametrization φ: P2 -> X exists over K and returns one when this is the case. The degree of the polynomials defining a "minimal" φ (one which is undefined at the smallest number of points) is 3,4 or 6 depending on the torus type. The parametrization returned is always of this minimal degree.

The surface X is parametrizable if and only if it contains a point over K. Furthermore, it satisfies the local-global principle: it has a point over K <=> it has a point over each p-adic completion of K. (These statements are also true for degree 8 and 9 Del Pezzos)

The ExistenceOnly option allows the function to just perform this local solubility check, deciding upon the existence of a parametrization without explicitly constructing one. Depending on the torus type, simultaneous norm equations over a degree 6 field extension of K or a single norm equation over a degree 3 extension of K may have to be solved to construct a parametrization. This is a hard computation, especially if K is not Q, whereas the pure existence check is quite fast.

Degree6DelPezzoType2_1(K,pt) : FldNum, Pt -> Sch
Degree6DelPezzoType2_2(K,pt) : FldNum, Pt -> Sch
Degree6DelPezzoType2_3(K,pt) : FldNum, Pt -> Sch
Degree6DelPezzoType3(K,pt) : FldNum, Pt -> Sch
Degree6DelPezzoType4(K,K1,pt) : FldNum, Fld, Pt -> Sch
Degree6DelPezzoType6(K,pt) : FldNum, Pt -> Sch
These functions generate the parametrizable degree 6 Del Pezzo surface X whose (connected) automorphism group is the torus T, which comes from field data K, and which contains point pt.

The point pt must be in 6-dimensional projective space over the base field k of a number field K. Its first projective coordinate may not be 0 and, depending on the torus type, certain of its other coordinates must also be non-zero.

The torus types and corresponding fields K for the various functions are as follows (pt = [a0, ..., a6]):

Type2_1. K/k should be a quadratic extension. T(k)=K * and T acts on P6 to give an X with degree 3 minimal parametrization. pt satisfies not( a1=a2=0 or a3=a4=0 or a5=0 or a6=0 ).

Type2_2. K/k should be a quadratic extension. T(k)=K * and T acts on P6 to give an X with degree 4 minimal parametrization. pt satisfies not( a1=a2=0 or a3=a4=0 or a5=a6=0 ).

Type2_3. K/k should be a quadratic extension. T(k)=K * NK/k=1 x K * NK/k=1. pt satisfies not( a1=a2=0 or a3=a4=0 or a5=a6=0 ).

Type3. K/k should be a cubic extension. T(k)=K * NK/k=1. pt satisfies not( a1=a2=a3=0 or a4=a5=a6=0 ).

Type4. K/k and K1/k should be distinct quadratic extensions. T(k)=L * NL/K=1 where L is K.K1. pt satisfies not( a1=a2=a3=a4=0 or a5=a6=0 ).

Type6. K/k should be a degree 6 extension which contains cubic and quadratic subextensions K3 and K2. For simplicity, the precise condition is that the generator y=K.1 must have minimal polynomial of the form x6 + 2ax4 + a2x2 - d and then K3=k(y2) and K2=k(y3 + ay). T(k)=K * NK/K3=NK/K2=1. pt satisfies not( a1=a2=a3=a4=a5=a6=0 ).

ParametrizeDelPezzoDeg6(X) : Sch -> BoolElt, MapIsoSch
This variant for parametrizing a degree 6 Del Pezzo also handles the degenerate (singular) case. Note however, that it doesn't recognise singularity from the Lie algebra computation as occurs for degrees 7 and 8. It tests for singularity at the start using the generic non-singularity computation that can be very slow. Therefore for known non-degenerate Del Pezzos of degree 6, it is always better to use the above ParametrizeDegree6DelPezzo directly.

That is also used here, if X turns out to be non-singular. Otherwise, projection from a singular point to P5 reduces the problem to that of parametrizing a rational scroll.

Example AlgSrf_del-pezzo-ex-6 (H123E30)

In the this example, we start with a degree 3 Del Pezzo surface - a non-singular hypersurface in P3 - which contains the 3 disjoint lines x=y=0, z=t=0 and x=z, y=t. These are blown down to give a degree 6 Del Pezzo surface, the parametrisation of which gives a parametrisation of the original surface. As well as demonstrating the degree 6 code, this is a nice example of blowing down exceptional lines on surfaces, something for which more general code will be added at a future date.
> R3<x,y,z,t> := PolynomialRing(Rationals(),4,"grevlex");
> P3 := Proj(R3);
> //equation of the degree 3 surface:
> F := -x^2*z + x*z^2 - y*z^2 + x^2*t - y^2*t - y*z*t + x*t^2 + y*t^2;
> X3 := Scheme(P3,F);
> // get the ideal defining the union of the 3 lines:
> I1 := ideal<R3|[x,y]>;
> I2 := ideal<R3|[z,t]>;
> I3 := ideal<R3|[x-z,y-t]>;
> I := I1*I2*I3;
> I := Saturation(I);

General surface theory tells us that if H is the hyperplane divisor on X3, then the blowing down is given by the projective map associated to the divisor H + L1 + L2 + L3, where the Li are our 3 lines. We need the global sections of the sheaf of this: if L1 + L2 + L3 ~2H - D (linear equivalence of divisors) for an effective divisor D, then the space of global sections" is" the degree 3 graded part of the ideal of D (mod the equation of X3). The ideal ID of a suitable D is computed by requiring that ID ∩I = (F, F2) with F2 a degree 2 polynomial in I.

> F2 := Basis(I)[5]; F2;
y*z - x*t
> ID := ColonIdeal(ideal<R3|[F,F2]>,I);
> ideal<R3|[F,F2]> eq (ID meet I);
true
> // get basis of degree 3 graded part of ID
> ID3 := ID meet ideal<R3|Setseq(MonomialsOfDegree(R3,3))>;
> B3 := MinimalBasis(ID3);
> B3;
[
    y*z*t - x*t^2,
    z^3 - z^2*t + t^3,
    y*z^2 - x*z*t,
    x*z^2 - x*z*t + y*t^2,
    y^2*z - x*y*t,
    x*y*z - x^2*t,
    x^2*z - x^2*t + y^2*t,
    x^3 - x^2*y + y^3
]
> // and a complementary subspace of F
> F in ideal<R3|Remove(B3,7)>;
false
> B3 := Remove(B3,7);
> // now map to the degree 6 Del Pezzo
> P6<a,b,c,d,e,f,g> := ProjectiveSpace(Rationals(),6);
> blow_down := map<X3->P6|B3>;
> X6 := blow_down(X3);
> Dimension(X6); Degree(X6);
2
6

We also need the inverse of blow down. The general IsInvertible function could be used here but again the general theory tells us that the inverse is given by linear equations and it is faster to find them directly by a Gröbner basis plus linear algebra computation. We omit this for brevity and just assume the result.

> X3toX6 := iso<X3->X6|B3,[f,e,c,a]>;
> // now parametrise X6
> boo,prm := ParametrizeDegree6DelPezzo(X6);
> boo;
true
> p2toX3 := Expand(prm*Inverse(X3toX6));
> p2toX3;
Mapping from: Projective Space of dimension 2
Variables : $.1, $.2, $.3 to Sch: X3
with equations :
-77/9*$.1^3 + 59/6*$.1^2*$.2 + 10/3*$.1^2*$.3 + 8/9*$.1*$.2^2 -
    73/18*$.1*$.2*$.3 - 113/18*$.1*$.3^2 - 59/9*$.2^3 + 383/18*$.2^2*$.3 -
    259/9*$.2*$.3^2 + 329/18*$.3^3
253/18*$.1^3 - 193/6*$.1^2*$.2 - 17/3*$.1^2*$.3 + 695/18*$.1*$.2^2 -
    244/9*$.1*$.2*$.3 + 353/18*$.1*$.3^2 - 151/9*$.2^3 + 185/9*$.2^2*$.3 -
    41/9*$.2*$.3^2 - 79/9*$.3^3
-11/6*$.1^3 + 37/6*$.1^2*$.2 + 10/3*$.1^2*$.3 - 28/3*$.1*$.2^2 + 4*$.1*$.2*$.3 -
    7*$.1*$.3^2 + 8/3*$.2^3 + 8/3*$.2^2*$.3 - 11/2*$.2*$.3^2 + 9/2*$.3^3
11/18*$.1^3 + 8/3*$.1^2*$.2 - 1/6*$.1^2*$.3 - 28/9*$.1*$.2^2 - 2/9*$.1*$.2*$.3 -
    59/18*$.1*$.3^2 - 2/9*$.2^3 + 34/9*$.2^2*$.3 - 53/18*$.2*$.3^2 + 53/18*$.3^3
and inverse
-884/23043*x^3 + 884/23043*x^2*y - 884/23043*y^3 - 4436/23043*x*y*z -
    4334/23043*y^2*z + 6902/23043*x*z^2 - 3560/7681*y*z^2 - 4420/23043*z^3 +
    4436/23043*x^2*t + 4334/23043*x*y*t + 3778/23043*x*z*t + 4420/23043*y*z*t +
    4420/23043*z^2*t - 4420/23043*x*t^2 + 6902/23043*y*t^2 - 4420/23043*t^3
-442/23043*x^3 + 442/23043*x^2*y - 442/23043*y^3 - 3544/23043*x*y*z -
    6808/23043*y^2*z + 8800/23043*x*z^2 - 4392/7681*y*z^2 - 6290/23043*z^3 +
    3544/23043*x^2*t + 6808/23043*x*y*t + 4376/23043*x*z*t + 8744/23043*y*z*t +
    6290/23043*z^2*t - 8744/23043*x*t^2 + 8800/23043*y*t^2 - 6290/23043*t^3
-884/23043*x^3 + 884/23043*x^2*y - 884/23043*y^3 - 458/23043*x*y*z -
    5660/23043*y^2*z + 5828/23043*x*z^2 - 2854/7681*y*z^2 - 3910/23043*z^3 +
    458/23043*x^2*t + 5660/23043*x*y*t + 2734/23043*x*z*t + 6208/23043*y*z*t +
    3910/23043*z^2*t - 6208/23043*x*t^2 + 5828/23043*y*t^2 - 3910/23043*t^3
and alternative inverse equations:
...
ParametrizeDegree5DelPezzo(X) : Sch -> MapIsoSch
Let X be a degree 5 Del Pezzo surface anticanonically embedded in 5-dimensional projective space over a number field. We allow that X can be a degenerate (singular) Del Pezzo here. The scheme X is always parametrizable over the base field and this intrinsic returns such a parametrisation without reduction to higher degree.

The scheme X has a finite automorphism group in this case, so the Lie Algebra method cannot be applied. However, there is a more geometric method using projections that works well for degree 5 and that is used here.

ParametrizeSingularDegree3DelPezzo(X,P2) : Sch, Prj -> BoolElt, MapIsoSch
ParametrizeSingularDegree4DelPezzo(X,P2) : Sch, Prj -> BoolElt, MapIsoSch
These two intrinsics compute whether a degree 3 (resp. 4) anticanonically embedded singular Del Pezzo X has a parametrization over the base number field k and, if so, return such a parametrization as a scheme map with inverse from P2 to X. A projective plane P2 over the same base field k is the second argument of the intrinsic and will be used as the domain of the map returned.

The conditions on X mean that is an irreducible degree 3 hypersurface in P3 in the first case or an irreducible complete intersection of 2 quadrics in P4 in the second case, having only a finite number of singularities that are canonical A-D-E type in either case. The condition that there is a finite non-empty set of singularities is checked but whether these singularities are canonical is not checked. In the unlikely event that a degree 3 hypersurface or degree 4 complete intersection has finitely many singularities but one is non-canonical, the functions will fail at some point.

If there is a singular point p defined over the base field, projection from p gives an immediate inverse parametrization of X in the degree 3 case and maps X onto a line or conic bundle in P3 in the degree 4 case, which is then parameterized by the special routines for those cases. There remain a small number of configurations of conjugate singularities in the contrary case, corresponding to certain special root subsytems of E6 or D5. For these, individual methods have been devised and implemented. These include an adaptation of the Lie algebra method for the degree 3 and 4 singular Del Pezzo surfaces that are actually toric.

Example AlgSrf_del-pezzo-ex-3-sing (H123E31)

The following is an example of a degree 3 hypersurface in P3 over Q, that is a singular Del Pezzo with 4 conjugate A1 singularities. It is handled very easily by the special case code.
> Q := RationalField();
> P2<a,b,c> := ProjectiveSpace(Q,2);
> P3<x,y,z,t> := ProjectiveSpace(Q,3);
> X := Scheme(P3, -4*x^2*y + 16*x*y^2 - y^3 + 2*x^2*z - 2*x*y*z +
>     7/2*y^2*z - 252*x*z^2 + 16*y*z^2 - 55*z^3 + 10*x^2*t + 14*x*y*t -
>     61/2*y^2*t - 3400*x*z*t + 216*y*z*t - 261*z^2*t - 11468*x*t^2 +
>     728*y*t^2 + 3987*z*t^2 + 21889*t^3);
> ParametrizeSingularDegree3DelPezzo(X,P2);
true Mapping from: Prj: P2 to Sch: X
with equations :
1/4*a^3 + 435/2*a^2*b - 4743/4*a*b^2 + 968*b^3 + 257/16*a^2*c + 183/8*a*b*c -
    3647/16*b^2*c + 8*a*c^2 - 8*b*c^2 + c^3
-257/32*a^3 + 2547/32*a^2*b - 10419/32*a*b^2 + 8129/32*b^3 - 4*a^2*c + 22*a*b*c
    - 66*b^2*c - 1/2*a*c^2 + 1/2*b*c^2
-57/32*a^3 - 173*a^2*b + 26459/32*a*b^2 - 1529/16*b^3 - 29/2*a^2*c + 83/4*a*b*c
    - 25/4*b^2*c - 7/2*a*c^2 + b*c^2
-1/32*a^3 + 457/16*a^2*b - 4081/32*a*b^2 + 33/2*b^3 + 2*a^2*c - 7/4*a*b*c -
    1/4*b^2*c + 1/2*a*c^2
and inverse
x*y*z - 2*y^2*z + 63/2*z^3 + 2*x^2*t - 9*x*y*t + 35/2*y^2*t + 299/2*z^2*t -
    4567/2*z*t^2 - 25075/2*t^3
x^2*z - 1/4*y^2*z + 4*z^3 + 7*x^2*t - 2*x*y*t + 9/4*y^2*t + 19*z^2*t - 290*z*t^2
    - 1593*t^3
x^3 - 63/4*x*y^2 + y^3 + 256*x*z^2 - 65/4*y*z^2 + 3454*x*z*t - 439/2*y*z*t +
    11650*x*t^2 - 2957/4*y*t^2

Minimization and Reduction of Surfaces

Given an algebraic variety defined by several polynomials with integer coefficients, reduction asks for another embedding of this Z-scheme, such that the defining polynomials have smaller coefficients. Minimization asks for an isomorphic Q-scheme with minimal invariants. Many constructions of algebraic varieties lead to very bad models and thus it becomes necessary to perform minimization and reduction. Otherwise, subsequent calculations become impractical. The result of the minimization process is usually not unique.

Minimization is done locally for each prime of bad reduction. The local minimization routines and the reduction routines are directly accessible. They may be helpful for local computations or if the computation of all bad primes is too slow. Note that these subroutines do not check for semi-stability (in the sense of Mumford's geometric invariant theory). Unstable varieties may lead to infinite loops. As smooth hypersurfaces are known to be stable the initial computation of the bad primes will fail if an unstable variety is given.

In this section, minimization and reduction routines are described for Del Pezzo surfaces of degrees 3 (cubic surfaces) and 4.

Minimization and reduction is also available for various kinds of genus one curves (see Section Minimisation and Reduction) and plane quartics (see Section Minimization and Reduction for Plane Curves).

MinimizeCubicSurface(f, p) : RngMPolElt, RngIntElt -> RngMPolElt, Mtrx
    SetVerbose("MinRedCubSurf", n):     Maximum: 2
Given a cubic surface f as a homogeneous polynomial with integer coefficients, this routine performs a minimization at the place p. The new equation and the transformation matrix are returned. No checks of stability are done so that an unstable surface will lead to an infinite loop.
ReduceCubicSurface(f) : RngMPolElt -> RngMPolElt, Mtrx
    SetVerbose("MinRedCubSurf", n):     Maximum: 2
Given a cubic surface f as a homogeneous polynomial with integral coefficients, this function computes a reduction of the surface. The second returned value is the transformation used.
MinimizeReduceCubicSurface(f) : MPolElt -> RngMPolElt, Mtrx
    SetVerbose("MinRedCubSurf", n):     Maximum: 2
Given a smooth cubic surface f as a homogeneous polynomial with integer coefficients, this function computes a minimized and reduced model of the surface. The second return value is the transformation matrix. The transformation matrix applied to f will evaluate to a scalar multiple of the returned polynomial.

The algorithm is based on [Els].

MinimizeDeg4delPezzo(f, p) : SeqEnum, RngIntElt -> SeqEnum, Mtrx
    SetVerbose("MinRedDeg4delPezzo", n):  Maximum: 1
Given a degree 4 del Pezzo surface f as a sequence of two quadrics with integer coefficients, this function will compute a partially local minimized model for the place p. The second return value is the transformation matrix.
MinimizeReduceDeg4delPezzo(f) : SeqEnum -> SeqEnum, Mtrx
    SetVerbose("MinRedDeg4delPezzo", n):  Maximum: 1
Given a degree 4 del Pezzo surface as a sequence of two quadrics with integral coefficients, this function computes a practically minimized and reduced model of the surface. The second return value is the transformation matrix.

The transformation matrix applied to the initial polynomials will evaluate to polynomials defining the same Q scheme as that defined by the returned quadrics.

For the reduction step, ReduceQuadrics is called.

MinimizeReduce(S) : SrfDelPezzo -> SrfDelPezzo, Mtrx
    SetVerbose("MinRedCubSurf", n):     Maximum: 2
    SetVerbose("MinRedDeg4delPezzo", n):  Maximum: 1
Given a del Pezzo surface S of degree 3 or 4 this function will call the minimization and reduction routines described above and converts the output scheme X to a del Pezzo surface. The second returned value is the matrix hat maps S to the result.

Example AlgSrf_dp34 (H123E32)

This example demonstrates minimization and reduction on del Pezzo surfaces of degree 3 and 4 obtained by blowing up rational points.
> P2 := ProjectiveSpace(RationalField(),2);
> pts := [P2| [-5,-10,-8], [-4,10,-4], [8,-2,-5], [0,-10,0], [1,5,7], [-7,-8,-6]];
> S := DelPezzoSurface(pts);
> _<W, X, Y, Z> := AmbientSpace(S); // give names to the variables
> S;
Del Pezzo Surface of degree 3 over Rational Field defined by
-W*X^2 + 318827/104630*X^3 + 46774615/29003436*W*X*Y -
    2039633371/290034360*X^2*Y - 2588798/7250859*W*Y^2 +
    246700427/58006872*X*Y^2 - 4904503/7250859*Y^3 + W^2*Z -
    318827/104630*W*X*Z + 34829/52315*X^2*Z + 117476057/58006872*W*Y*Z -
    2004449/27622320*X*Y*Z + 4769241/12890416*Y^2*Z - 34829/52315*W*Z^2 -
    44696243/72508590*Y*Z^2
> MinimizeReduce(S);
Del Pezzo Surface of degree 3 over Rational Field defined by
-22*W^2*X + 38*W*X^2 - 4*X^3 - 28*W^2*Y + 103*W*X*Y - 48*X^2*Y + 44*W*Y^2 -
    59*X*Y^2 - 24*Y^3 + 24*W^2*Z + 80*W*X*Z + 44*X^2*Z - 57*W*Y*Z + 73*X*Y*Z
    - 59*Y^2*Z - 79*W*Z^2 - 21*X*Z^2 - 5*Y*Z^2
Now we consider the surface of degree 4 obtained by blowing up only the first five points.
> T := DelPezzoSurface(pts[1..5]);
> _<V, W, X, Y, Z> := AmbientSpace(T);
> T;
Del Pezzo Surface of degree 4 over Rational Field defined by
-W^2 + 7031/194432*X^2 + V*Y + 10877/13888*X*Y + 47/280*W*Z + 412801/277760*X*Z
     - 78153/138880*Y*Z - 86217/9721600*Z^2,
-W*X + 1693/6944*X^2 + 23/496*X*Y + V*Z + 26763/9920*X*Z - 4003/4960*Y*Z
     - 233411/347200*Z^2
> MinimizeReduce(T);
Del Pezzo Surface of degree 4 over Rational Field defined by
-5*V^2 + 4*V*W + 8*W^2 + V*X - 8*X^2 - 8*V*Y + 3*W*Y + 3*X*Y + 15*Y^2 -
    2*V*Z - 16*X*Z - 10*Y*Z,
-2*V^2 + V*W + 3*W^2 + 2*V*X + 2*W*X - 6*X^2 + 3*V*Y + 3*W*Y - 17*X*Y -
    5*Y^2 + 5*V*Z - 22*X*Z - Y*Z + 13*Z^2

Cubic Surfaces over Finite Fields

In this section all cubic surface are represented by a homogeneous polynomial of degree 3 in a rank 4 polynomial ring. The coefficients are elements of a finite field.

NumberOfPointsOnCubicSurface(f) : RngMPolElt -> RngIntElt, RngIntElt
Given a smooth cubic surface f over a finite field this routine computes the Frobenius action on the lines. The return values are the number of points of the surface and the Swinnerton-Dyer number of conjugacy class of the Weil group W(E6) that contains the Frobenius.

Example AlgSrf_numptscubic (H123E33)

> p := NextPrime(3^100);
> r<x,y,z,w> := PolynomialRing(GF(p),4);
> S := x^3 + 2* y^3 + 7* z^3 + 11 * w^3 - 5 * (-x-y-z-w)^3;
> NumberOfPointsOnCubicSurface(S);
2656139888758747693387813220357796268292334528059462421112503157258849853119260\
    79714208525578202
13
So we get a large number of points and the Frobenius has Swinnerton-Dyer number 13.
IsIsomorphicCubicSurface(f,g) : MPolElt, MPolElt -> BoolElt, List
    UseLines: BoolElt                   Default: false
Given cubic surfaces f and g defined over finite fields, the intrinsic returns true if the surfaces are isomorphic. If f and G are isomorphic, there is a second return value comprising a list of matrices such that gm will evaluate to a scalar multiple of f for each matrix m in the list. In the case where there are several isomorphisms over the algebraic closure of the basefield, one matrix for each isomorphism is returned.

Note that an isomorphism of smooth cubic surfaces is always given by a linear map.

The computation is based on an analysis of a finite set of points associated to the surface. Here we used the singularities of the hessian. If the hessian degenerates, the 135 intersection points of the lines are used. Setting UseLines to true indicates that the second algorithm is to be used.

As the algorithm involves huge field extensions it is only practical for surfaces over finite fields.

Example AlgSrf_isisocubic (H123E34)

> _<x,y,z,w> := PolynomialRing(GF(101),4);
> S := x^3 + y^3 + z^3 + w^3 - (x+y+z+w)^3;
> time a,b := IsIsomorphicCubicSurface(S, S);
Time: 0.530
> #b;
120
> S := x^3 + 2*y^3 + 7*z^3 + 5*w^3 - y*z*w + x^2*w + 2*y*z^2;
> time a,b := IsIsomorphicCubicSurface(S, S);
Time: 0.480
> #b;
1
> S := x^3 + y^3 + z^3 + w^3;
> time a,b := IsIsomorphicCubicSurface(S, S);
Time: 22.830
> #b;
648
Thus the diagonal cubic surface has 648 automorphisms and the Clebsch cubic surface has 120. Both examples are exceptional, a general cubic surface has a trivial automorphism group. The first example is much slower because the hessian degenerates and the 27 lines are used.

Construction of Cubic Surfaces

CubicSurfaceByHexahedralCoefficients(p) : RngUPolElt -> RngMPolElt
Given a separable polynomial p of degree 6 this intrinsic constructs a cubic surface having the roots of the p as hexahedral coefficients. These surfaces automatically have a Galois invariant set of 12 lines.

See [EJ10] for details.

CoblesRadicand(p) : RngUPolElt -> FldElt
Given a separable polynomial p of degree 6 this routine evaluates the Cobles quartic at the roots of p. Up to a square factor this value is the discriminant of the cubic surface constructed using hexahedral coefficients.

Example AlgSrf_hex (H123E35)

> q<tt> := PolynomialRing(RationalField());
> p6 := tt^6 + 34*tt^4 + 180*tt^3 + 458*tt^2 + 524*tt + 212;
> CoblesRadicand(p6);
-676
> eqn := CubicSurfaceByHexahedralCoefficients(p6);
> Max([AbsoluteValue(c) : c in Coefficients(eqn)]);
1302161870313141409337256000 20
We have to use minimization and reduction to make further computations faster.
> S := MinimizeReduce(DelPezzoSurface(eqn));
> Equation(S);
6*y[1]^3 - 14*y[1]^2*y[2] + 6*y[1]*y[2]^2 - 6*y[2]^3 - 14*y[1]^2*y[3] +
    9*y[1]*y[2]*y[3] + 11*y[2]^2*y[3] - 21*y[1]*y[3]^2 + 14*y[2]*y[3]^2 +
    3*y[3]^3 - 3*y[1]*y[2]*y[4] + 10*y[2]^2*y[4] + 8*y[1]*y[3]*y[4] -
    53*y[2]*y[3]*y[4] + 40*y[3]^2*y[4] + 9*y[1]*y[4]^2 + 39*y[2]*y[4]^2 -
    23*y[3]*y[4]^2 - 16*y[4]^3
> M := PicardGaloisModule(S);
> Order(Group(M));
72
> CohomologyGroup( CohomologyModule(Group(M),M), 1);
Full Quotient RSpace of degree 2 over Integer Ring
Column moduli:
[ 2, 2 ]
Here the hexahedral approach gives us a cubic surface with nontrivial cohomology.

Invariant Theory of Cubic Surfaces

For background on this classical topic we refer to [Hun96, Appendix B] and [Sal58].

In this section a cubic surface is represented by a homogeneous polynomial of degree 3 in a rank 4 polynomial ring.

Invariants

By a theorem of Clebsch the ring of invariants of a cubic surface is generated by 5 invariants having degrees 8, 16, 24, 32 and 40. An explicit system of generators was found by Salmon. By Geometric Invariant Theory, stable cubic surfaces are isomorphic if and only if their invariants determine the same point in the weighted projective space (P)(1, 2, 3, 4, 5).

ClebschSalmonInvariants(f) : RngMPolElt -> SeqEnum, RngElt
Computes a sequence of the numerical values of Salmon's invariants of the cubic surface given by the polynomial f. The second returned value is the discriminant of the surface.
SkewInvariant100(f) : RngMPolElt -> RngElt
Computes the numerical value a degree 100 skew invariant I100 of the cubic surface f. The square of I100 is an element of Clebsch invariant ring. It vanishes if and only if the cubic surface has an Eckardt point.
CubicSurfaceFromClebschSalmon(inv) : SeqEnum -> RngMPolElt
Computes a cubic surface whose invariants are equal to the given sequence. The algorithm requires the last invariant to be non-zero.

Example AlgSrf_inv_cub (H123E36)

> r4<x,y,z,w> := PolynomialRing(Rationals(),4);
> surf := r4!CubicSurfaceFromClebschSalmon([1,2,3,4,5]);
> surf := r4!MinimizeReduceCubicSurface(surf);
> surf;
-79*x^3 - 64*x^2*y + 228*x^2*z - 197*x^2*w + 320*x*y^2 - 470*x*y*z + 492*x*y*w
  - 180*x*z^2 - 94*x*z*w - 242*x*w^2 - 125*y^3 + 100*y^2*z + 94*y^2*w + 530*y*z^2
  - 886*y*z*w + 390*y*w^2 - 235*z^3 + 526*z^2*w - 825*z*w^2 +  279*w^3
> inv := ClebschSalmonInvariants(surf);
> inv;
[ 976235771549603375/3, 1906072563306098780753436239622781250/9,
930388109734329783009461918136480101451041525943359375/9,
3633112616588281944217451032208493848831995668840667046827293985351562500/81,
44334681229770747115131288025953470580778533302801673727424367422761364246\
35758514404296875/243 ]
> [inv[i] / inv[1]^i : i in [1..5]];
[ 1, 2, 3, 4, 5 ]
> SkewInvariant100(surf);
-1474765875168770247752210363977205595498018662672331422683943150206680481\
86921012313818705064245354658498892851426776914304662591690689504117661282\
58105510099234779123372779972973056799912669452615967667952645570039749145\
50781250/531441
Thus the constructed surface has equivalent invariants (as they are in (P)(1, 2, 3, 4, 5)) and no Eckardt points.
Covariants

A covariant is in the same ambient space as the initial surface. For example the equation itself is a covariant. In the case of a cubic surface this gives a degree 1 order 3 covariant. Products of covariants are again covariants. They form a ring over the ring of invariants.

LinearCovariants(f) : RngMPolElt -> SeqEnum
The intrinsic constructs a sequence containing Salmon's 4 linear covariants for the cubic surface f.
ClassicalCovariantsOfCubicSurface(f) : RngMPolElt -> SeqEnum
The intrinsic constructs a sequence containing the 4 classical covariants of the cubic surface f. The first one is the hessian. The next two are classically known as T and Θ. The last one is a degree 9 surface, which intersects f precisely in its 27 lines.
Contravariants

A contravariant is in the dual projective space of the initial surface. All contravariants form a ring over the ring of invariants. Contravariants can be constructed from invariants of varieties of the same degree but dimension one less by the Clebsch transfer principle.

NumericClebschTransfer(f, inv, p) : RngMPolElt, UserProgram, SeqEnum -> RngElt
Given a form f and a user program inv that evaluates an invariant of a form of the same degree but one variable less, this function evaluates the corresponding contravariant of f at the point p. If this is repeated using sufficiently many different knots, it is possible to reconstruct a polynomial representation of the contravariant by interpolation.
ContravariantsOfCubicSurface(f) : RngMPolElt -> SeqEnum
Computes a sequence of 3 contravariants of the cubic surface f. By Clebsch transfer they correspond to the invariants S, T, and the discriminant of plane cubic curves. Thus the first one describes all hyperplanes such that the intersection with f=0 gives a cubic curve with j-invariant equal to zero. The second gives all hyperplanes intersecting f=0 in a cubic curve with j-invariant 1728 (as long as the intersection is smooth). The last one is S2 - 6T. This is the degree 12 polynomial of the (formal) dual surface. It describes all hyperplanes such that the intersection with f=0 is singular. For smooth surfaces this is equivalent to tangency. If f=0 is singular the result will be reducible or even zero.

Example AlgSrf_cayley_dual (H123E37)

This is the Cayley cubic surface. It has 4 singularities of type A1 and each results in a linear factor of multiplicity two in the (formal) dual surface.
> r4<x,y,z,w> := PolynomialRing(Rationals(),4);
> surf := x*y*z + x*y*w + x*z*w + y*z*w;
> cont := ContravariantsOfCubicSurface(surf);
> Factorization(cont[3]);
[
    <w, 2>,
    <z, 2>,
    <y, 2>,
    <x, 2>,
    <x^4 - 4*x^3*y - 4*x^3*z - 4*x^3*w + 6*x^2*y^2 + 4*x^2*y*z + 4*x^2*y*w
     + 6*x^2*z^2 + 4*x^2*z*w + 6*x^2*w^2 - 4*x*y^3 + 4*x*y^2*z + 4*x*y^2*w
     + 4*x*y*z^2 - 40*x*y*z*w + 4*x*y*w^2 - 4*x*z^3 + 4*x*z^2*w + 4*x*z*w^2
     - 4*x*w^3 + y^4 - 4*y^3*z - 4*y^3*w + 6*y^2*z^2 + 4*y^2*z*w + 6*y^2*w^2
     - 4*y*z^3 + 4*y*z^2*w + 4*y*z*w^2 - 4*y*w^3 + z^4 - 4*z^3*w + 6*z^2*w^2
     - 4*z*w^3 + w^4, 1>
]
Interaction of Covariants and Contravariants

One can apply a contravariant to a covariant (or vice versa). The result is a new covariant (resp. contravariant) or an invariant. Its degree is the sum of the degrees of the arguments. The order is the difference of the two orders. If the order of the result is zero, it is an invariant.

One way to define the action is to interpret the contravariant as a differential operator, i.e. xik acts as frac(∂k)(∂xik). Then one applies this differential operator to the covariant.

ApplyContravariant(c, d) : MPolElt, MPolElt -> MPolElt
Given a covariant c and a polynomial d, this intrinsic interprets d as a differential operator (i.e., x is replaced by d/dx). It applies this operator to the polynomial c and returns the resulting polynomial.

In invariant theory d is a contravariant and c is a covariant.

Example AlgSrf_co_cont (H123E38)

Here we compute Salmon's first invariant by applying a degree 4 order 4 contravariant to the hessian which is a degree 4 order 4 covariant.
> r4<x,y,z,w> := PolynomialRing(RationalField(),4);
> surf := x^3 + 2*y^3 + 3*z^3 + 5*w^3 - 2*x*y*(z-w) + (x+y+z+w)^3;
> cont := ContravariantsOfCubicSurface(surf);
> cov := ClassicalCovariantsOfCubicSurface(surf);
> ApplyContravariant(cont[1],cov[1]) / (2^11 * 3^9);
1438753/729
> ClebschSalmonInvariants(surf)[1];
1438753/729

The Pentahedron of a Cubic Surface

A general cubic surface can be written as a sum of 5 cubes of linear forms. These are unique up to scaling by third roots of unity and permutation. Thus we can associate 5 points in the dual projective space to a given cubic surface. They are called the faces of its pentahedron. In general the faces of the pentahedron are defined over a larger field.

The algorithm is described in [RS00].

PentahedronIdeal(f) : RngMPolElt -> RngMPol
Computes the ideal of the faces of the pentahedron of the cubic surface f.

Example AlgSrf_penta (H123E39)

The first example is a randomly chosen cubic surface. By construction it has a proper rational pentahedron.
> r4<x,y,z,w> := PolynomialRing(Rationals(),4);
> surf := x^3 + (x-y+2*z)^3 + (y-w)^3 + z^3 + (x - 3*y-2*z-7*w)^3;
> p_id := PentahedronIdeal(surf);
> Points(Cluster(ProjectiveSpace(Rationals(),3),Basis(p_id)));
{@ (-1/7 : 3/7 : 2/7 : 1), (0 : -1 : 0 : 1), (0 : 0 : 1 : 0),
   (1/2 : -1/2 : 1 : 0), (1 : 0 : 0 : 0) @}

The next example shows that the pentahedron of the diagonal cubic surface degenerates.

> diag := x^3 + y^3 + z^3 + w^3;
> p_id2 := PentahedronIdeal(diag);
> Points(Cluster(ProjectiveSpace(Rationals(),3),Basis(p_id2)));
{@ (0 : 0 : 0 : 1), (0 : 0 : 1 : 0), (0 : 1 : 0 : 0), (1 : 0 : 0 : 0) @}

The final example is a surface without a pentahedron.

> degen := x^3+y^3+z^3 + x*y*z+ w^3;
> p_id3 := PentahedronIdeal(degen);
> Points(Cluster(ProjectiveSpace(Rationals(),3),Basis(p_id3)));
{@ (0 : 0 : 0 : 1) @}
V2.28, 13 July 2023