Del Pezzo Surfaces#

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 \({\bf P}^3 = \rm{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 \rightarrow 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 [Manin, 1986]. A Del Pezzo surface \(X\) has a degree \(1 \le d \le 9\). For \(d \ge 3\), the standard representation is as a degree \(d\) surface in \({\bf P}^d\) 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 \({\bf P}^2\) over an algebraically-closed field. That is, there exists an invertible scheme map from \({\bf P}^2\) 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 [Sommese and van der Ven, 1987]). 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 \({\bf P}^3\) is described in the previous section and it makes use of the routines described here.

If \(X\) is parametrizable with \(d \ge 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 [de Graaf, M. Harrison, J. Pilnikova and J. Schicho, 2006], [de Graaf and Pilnikova, n.d.], [Harrison and Schicho, 2006] and [Gonzalez-Sanchez et al., 2012]. 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 \ge 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 \ge 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 \ge 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 \({\bf 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 \({\bf Q}\) then there is a parametrization \(\phi: {\bf P}^2 \rightarrow X\) which is everywhere-defined and given by cubic polynomials in the variables of \({\bf P}^2\). The function returns whether such a \(\phi\) exists and, if so, \(\phi\) 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 ${\bf P}^2$ with a single rational point blown up.
    

2i) \(X\) is isomorphic to \(T_1 \times T_2\) with \(T_i\) Galois twists of \({\bf P}^1\).

2ii) \(X\) is isomorphic to a Galois twist of \({\bf P}^1 \times {\bf P}^1\) where Galois acts transitively on the two \({\bf P}^1\) factors.

In case 1), \(X\) is always parametrizable.

In case 2i), \(X\) is parametrizable \(\Leftrightarrow\) both \(T_i\) are trivial twists of \({\bf P}^1\) \(\Leftrightarrow\) \(X\) is isomorphic to \({\bf P}^1 \times {\bf P}^1\).

In case 2ii), there is an infinite family of parametrizable \(X_a\) classified by \(a \in {\bf Q}^*/{\bf Q}^{*2}\). The scheme \(X_a\) is isomorphic (properly, not just birationally) to the surface in \({\bf P}^3\) given by the equation \(x_0^2-ax_1^2=x_2x_3\).

The main function determines whether \(X\) is parametrizable over \({\bf Q}\). If so, there is a parametrization \(\phi: {\bf P}^2 \rightarrow 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: Del Pezzo Ex 8 (ex-2e5909)#

In this example, we parametrize an anticanonical sphere \(X_2\), in the above notation. This is obviously an artificial illustration, as we start with \(X_2\) in the form \(F=x_0^2-2x_1^2-x_2x_3=0\), which is trivial to parametrize directly! The surface in this form is embedded anticanonically in \({\bf P}^8\) by any 9-dimensional vector space complement of \(<F>\) in the 10-dimensional linear system of all degree 2 polynomials in \(x_0 \ldots x_3\). 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

Run in calculator

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 \({\bf 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 \(\phi: {\bf P}^2 \rightarrow X\) exists over \(K\) and returns one when this is the case. The degree of the polynomials defining a “minimal” \(\phi\) (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\) \(\Leftrightarrow\) 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 \({\bf 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 = [a_0,\ldots,a_6]\)):

Type2_1. \(K/k\) should be a quadratic extension. \(T(k)=K^*\) and \(T\) acts on \({\bf P}^6\) to give an \(X\) with degree 3 minimal parametrization. \(pt\) satisfies not( \(a_1=a_2=0\) or \(a_3=a_4=0\) or \(a_5=0\) or \(a_6=0\) ).

Type2_2. \(K/k\) should be a quadratic extension. \(T(k)=K^*\) and \(T\) acts on \({\bf P}^6\) to give an \(X\) with degree 4 minimal parametrization. \(pt\) satisfies not( \(a_1=a_2=0\) or \(a_3=a_4=0\) or \(a_5=a_6=0\) ).

Type2_3. \(K/k\) should be a quadratic extension. \(T(k)=K^{*N_{K/k}=1} \times K^{*N_{K/k}=1}\). \(pt\) satisfies not( \(a_1=a_2=0\) or \(a_3=a_4=0\) or \(a_5=a_6=0\) ).

Type3. \(K/k\) should be a cubic extension. \(T(k)=K^{*N_{K/k}=1}\). \(pt\) satisfies not( \(a_1=a_2=a_3=0\) or \(a_4=a_5=a_6=0\) ).

Type4. \(K/k\) and \(K1/k\) should be distinct quadratic extensions. \(T(k)=L^{*N_{L/K}=1}\) where \(L\) is \(K.K1\). \(pt\) satisfies not( \(a_1=a_2=a_3=a_4=0\) or \(a_5=a_6=0\) ).

Type6. \(K/k\) should be a degree 6 extension which contains cubic and quadratic subextensions \(K_3\) and \(K_2\). For simplicity, the precise condition is that the generator \(y=K.1\) must have minimal polynomial of the form \(x^6+2ax^4+a^2x^2-d\) and then \(K_3=k(y^2)\) and \(K_2=k(y^3+ay)\). \(T(k)=K^{*N_{K/K_3}=N_{K/K_2}=1}\). \(pt\) satisfies not( \(a_1=a_2=a_3=a_4=a_5=a_6=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 \({\bf P}^5\) reduces the problem to that of parametrizing a rational scroll.

Example: Del Pezzo Ex 6 (ex-cfe2ed)#

In the this example, we start with a degree 3 Del Pezzo surface - a non-singular hypersurface in \({\bf P}^3\) - 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);

Run in calculator

General surface theory tells us that if \(H\) is the hyperplane divisor on \(X_3\), then the blowing down is given by the projective map associated to the divisor \(H+L_1+L_2+L_3\), where the \(L_i\) are our 3 lines. We need the global sections of the sheaf of this: if \(L_1+L_2+L_3 \sim 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 \(X_3\)). The ideal \(I_D\) of a suitable \(D\) is computed by requiring that \(ID \cap I = (F,F_2)\) with \(F_2\) 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

Run in calculator

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:
...

Run in calculator

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 \(P^3\) in the first case or an irreducible complete intersection of 2 quadrics in \(P^4\) 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 \(P^3\) 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 \(E_6\) or \(D_5\). 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: Del Pezzo Ex 3 Sing (ex-b772c7)#

The following is an example of a degree 3 hypersurface in \(P^3\) over \(Q\), that is a singular Del Pezzo with 4 conjugate \(A_1\) 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

Run in calculator

Minimization and Reduction of Surfaces#

Given an algebraic variety defined by several polynomials with integer coefficients, reduction asks for another embedding of this \({\bf Z}\)-scheme, such that the defining polynomials have smaller coefficients. Minimization asks for an isomorphic \({\bf 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#
verbose: MinRedCubSurf                    Default: Verbose : 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#
verbose: MinRedCubSurf                    Default: Verbose : 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#
verbose: MinRedCubSurf                    Default: Verbose : 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 [Elsenhans, n.d.].

MinimizeDeg4delPezzo(f, p): SeqEnum, RngIntElt -> SeqEnum, Mtrx#
verbose: MinRedDeg4delPezzo                    Default: Verbose : 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#
verbose: MinRedDeg4delPezzo                    Default: Verbose : 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#
verbose: MinRedCubSurf                         Default: Verbose : 2
verbose: MinRedDeg4delPezzo                    Default: Verbose : 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: dp34 (ex-0d6a36)#

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

Run in calculator

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

Run in calculator

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(E_6)\) that contains the Frobenius.

Example: numptscubic (ex-3f2682)#
> 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

Run in calculator

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 \(g^m\) 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: isisocubic (ex-5e111c)#
> _<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

Run in calculator

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 [Elsenhans and Jahnel, 2010] 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: hex (ex-f2bff8)#
> 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

Run in calculator

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 ]

Run in calculator

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 [Hunt, 1996, Appendix B] and [Salmon, 1958].

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 \({\bf 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 \(I_{100}\) of the cubic surface \(f\). The square of \(I_{100}\) 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: Inv Cub (ex-7e1f83)#
> 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

Run in calculator

Thus the constructed surface has equivalent invariants (as they are in \({\bf 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 \(\Theta\). 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 \(S^2-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: Cayley Dual (ex-b242ba)#

This is the Cayley cubic surface. It has 4 singularities of type \(A_1\) 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>
]

Run in calculator

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. \(x_i^k\) acts as \({{\partial^k}\over{\partial x_i^k}}\). 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: Co Cont (ex-b667d5)#

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

Run in calculator

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 [Ranestad and Schreyer, 2000].

PentahedronIdeal(f): RngMPolElt -> RngMPol#

Computes the ideal of the faces of the pentahedron of the cubic surface \(f\).

Example: penta (ex-aa479a)#

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) @}

Run in calculator

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) @}

Run in calculator

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) @}

Run in calculator