Minimal Degree Functions and Plane Models

This section contains functionality to compute smallest degree covering maps from a curve to the projective line (P)1, which are equivalent to smallest degree functions on the curve. We refer to such maps as gonal maps (the degree of such a map is usually referred to as the gonality of the curve). There are intrinsics for all general type (genus ≥2) curves of genus less than seven and for all trigonal (gonality 3) curves. The trigonal cases use the Lie algebra method to construct degree 3 maps following the algorithm in [SS]. The 4-gonal cases for genus 5 and 6 curves use the algorithms in [Har13]. Hyperelliptic cases (gonality 2) are dealt with directly using the canonical map and parametrisation of rational curves.

Gonal maps may not exist over the base field and the intrinsics here will return a gonal map over a finite extension in such cases. In some cases, the degree of a minimal extension over which a gonal map may be constructed is determined exactly. In others, this may involve difficult arithmetic problems (e.g., finding a point of minimal degree on a plane sextic over (Q)) and the extension used may not be of minimal degree. This is discussed further in the descriptions of the intrinsics. The intrinsics are designed for input curves defined over number fields or finite fields.

There are also some intrinsics to compute minimal degree plane models of curves of genus 5 and 6. In the genus 6 case, these birational models may be defined over a small extension field of the base field (an exact minimal degree extension is found here). In the genus 5 case, the intrinsic computes models over the base field given a rational point or divisor of degree 2 in the generic case that may be input by the user. The functionality here is incomplete and doesn't currently cover every type of genus 5 or 6 curve or lower genus curves. We plan to extend this in later releases.

Contents

General Functions and Clifford Index One

The algorithm of Schicho and Sevilla used for trigonal curves actually covers the slightly more general case of Clifford index one. An algebraic curve has Clifford index one iff it is trigonal or it is of genus 6 and isomorphic to a non-singular plane quintic. In the latter case, the curve has gonality 4. Classical theory (e.g. Petri's theorem) tells us that a curve of genus greater than one has Clifford index 1 precisely when its canonical image is not defined by quadrics alone. For genus > 3, a minimal basis for the ideal defining the canonical image will then consist of quadrics and cubics. A non-hyperelliptic genus 3 curve is always trigonal and it's canonical image is defined by a smooth quartic in the projective plane.

This gives a simple computational test for Clifford index 1. There is an intrinsic described below that may be called directly by the user for Clifford index 1 canonical curves that returns a gonal map to (P)1 in the trigonal case or gives a birational map to a smooth plane quintic.

GenusAndCanonicalMap(C) : Crv -> RngIntElt, BoolElt, MapSch
Convenience function for the user. Returns the genus g of the curve C, a Boolean value which is true iff g ≤1 or C is hyperelliptic, and the canonical map from C to its canonical image if g > 1.
CliffordIndexOne(C) : Crv -> MapSch
CliffordIndexOne(C,X) : Crv,Sch -> MapSch
The curve C should be a (non-singular) canonical model of a curve of Clifford index 1 (this condition may be tested as described in the introduction). Computes and returns a degree 3 map to the projective line (P)1 or a birational map onto a smooth plane quintic, depending on whether C is trigonal or not. In the trigonal case, the map may be defined over a quadratic extension of the base field for curves of even genus. This will occur only if no such map exists over the base field. In the plane quintic case, the map is always defined over the base field. The trigonal case requires that the characteristic of the base field is not 2.

The algorithm used is that of Schicho and Sevilla that applies the Lie algebra method to explicitly compute the fibration map to (P)1 of the rational scroll surface X that is defined by the quadrics in the defining ideal of the canonical curve C. The second version of the intrinsic also takes X as an argument in case the user has already computed it.

Example Crv_gon-gen-ex (H121E42)

> P5<x,y,z,s,t,u> := ProjectiveSpace(Rationals(),5);
> C := Curve(P5,[
> -y*z+x*s-y*s+z*t-4*s*t+t^2+2*s*u-3*t*u+2*u^2,
> -z^2+s^2+x*t+2*z*t-2*t^2-4*s*u-2*t*u+4*u^2,
> -z*s-s^2+z*t+t^2+x*u-2*s*u-7*t*u+6*u^2,
> -z*s+s^2+y*t+2*s*t-t^2-2*s*u+t*u,
> -s^2+s*t+y*u-s*u-t*u+u^2,
> -s*t+t^2+z*u-s*u-3*t*u+2*u^2,
> x^3-3*x^2*y+7*x*y^2+3*y^3+x*y*z-y*z^2+9*z^3+3*y^2*s-3*y*z*s-7*z^2*s-7*y*s^2+
> 17*z*s^2-86*s^3-4*z*s*t-16*s^2*t-185*z*t^2+807*s*t^2-406*t^3+17*s^2*u-
> 666*s*t*u+1391*t^2*u+228*s*u^2-1378*t*u^2+393*u^3,
> x^2*z-2*x*y*z+5*y^2*z+y*z^2+3*z^3+8*y^2*s+y*z*s-7*z^2*s+3*y*s^2+17*z*s^2-
> 47*s^3+6*z^2*t+9*z*s*t+s^2*t+32*z*t^2+11*s*t^2-103*t^3-51*s^2*u-171*s*t*u+
> 433*t^2*u+89*s*u^2-577*t*u^2+246*u^3,
> x*z^2-y*z^2-z^3+4*y*z*s+z^2*s+8*y*s^2-3*z*s^2-5*s^3+7*z^2*t-3*z*s*t+17*s^2*t+
> 8*z*t^2-2*s*t^2+62*t^3-41*s^2*u-34*s*t*u-28*t^2*u+14*s*u^2-127*t*u^2+92*u^3
> ]);
> // C a genus 6 canonical curve of gonality 3
> mp3 := CliffordIndexOne(C);
> mp3;
Mapping from: Crv: C to Curve over Rational Field defined by
0
with equations :
x - 2*z + 10*s - 7*t + 10*u
-2/5*x - 24/5*s + 26/5*t - 44/5*u
We can check that mp3 gives a degree 3 map by seeing that the degree 10 linear pencil of divisors generated by D1 and D2, the hyperplane sections of C given by the two defining equations of the map, has a common degree 7 factor.
> defs := DefiningPolynomials(mp3);
> D1 := Scheme(C,defs[1]);
> D2 := Scheme(C,defs[2]);
> D12 := Scheme(C,defs);
> Degree(D1); Degree(D2);
10
10
> Dimension(D12); Degree(D12);
0
7

Small Genus Functions

This section contains intrinsics to compute gonal maps for curves with genus greater than one and less than seven.

Genus2GonalMap(C) : Crv -> MapSch
Returns a degree 2 map from genus 2 curve C to the projective line. The map is defined over a quadratic extension of the base field k iff no such map exists over k. The map is just the canonical map followed by an inverse parametrisation of its image.
Genus3GonalMap(C) : Crv -> RngIntElt, MapSch
    IsCanonical: BoolElt                Default: false
For a genus 3 curve C, returns the gonality (2 or 3) and a gonal map to (P)1. C is trigonal precisely when it is non-hyperelliptic, when its canonical image is a plane quartic Q. Gonal maps are given by the canonical map onto Q followed by projection from a point on Q. Constructing one requires finding a point on Q. If Q is defined over the rationals, a point search up to a small height is applied, and if Q is defined over a finite field a point enumeration is applied to try to find a point over the base field. If this fails to locate a point or if the base field is a number field, a point of Q over an extension of degree ≤4 of the base field is used. Thus the map returned may be over an extension of the base field and this extension may not be of minimal degree.

If the input C is already a canonical model, parameter IsCanonical may be set to true. This will simplify the internal processing. NB The defining equations of C must be a minimal basis for its defining ideal.

Genus4GonalMap(C) : Crv -> RngIntElt, MapSch
    IsCanonical: BoolElt                Default: false
For a genus 4 curve C, returns the gonality (2 or 3) and a gonal map to (P)1. C is trigonal precisely when it is non-hyperelliptic. In the trigonal case, a gonal map is computed using the CliffordIndexOne intrinsic. This involves computing a fibration map for a quadric surface in (P)3 containing the canonical image of C, which may be defined over a biquadratic extension of the base field in bad cases. So the map returned may be defined over an extension of degree 4, whereas the map on C should always be defined over an extension of degree at most 2. We will try to fix this in later releases.

If the input C is already a canonical model, parameter IsCanonical may be set to true. This will simplify the internal processing. NB The defining equations of C must be a minimal basis for its defining ideal.

Genus5GonalMap(C) : Crv -> RngIntElt, MapSch, Crv, UserProgram
    DataOnly: BoolElt                   Default: false
    IsCanonical: BoolElt                Default: false
For a genus 5 curve C, returns the gonality (2, 3 or 4) and a gonal map to (P)1. In the gonality 4 case, it also returns some extra data that gives the parametrisation of the set of degree 4 linear pencils (g14s) which give the gonal maps.

The hyperelliptic case (gonality 2) is handled as usual by parametrising the canonical image which gives a gonal map that may be defined over a quadratic extension of the base field.

The trigonal case is easy to deal with here since the rational scroll X that contains the canonical image of C is of codimension 2 in its ambient. We directly compute the fibration map of X from the minimal free polynomial resolution of the canonical coordinate ring of C. This gives a gonal map on C that is always defined over the base field.

In the general (4-gonal case), there are infinitely many equivalence classes of gonal maps which are parametrised by a plane quintic curve F. This along with a function f which takes a point in F(K) as an argument are returned as third and fourth return values. f evaluated at p∈F(K) will return the corresponding gonal map on C which is defined over K or a quadratic extension of it. The actual gonal map returned as the second return value is given by searching for a point on F over a small extension of the base field. We use a point search as for Genus3GonalMap if the base field is the rationals or a finite field. Otherwise or if this fails, we find a point over an extension field by decomposing a random hyperplane section of F. We try to use singular points on F, if they exist, which correspond to g14s whose associated rational scroll is defined by a rank 3 rather than a rank 4 quadric.

If the parameter DataOnly is set to true (the default is false), then only the gonality is returned when it is less than 4, and only the gonality, F and f are computed and returned in the 4-gonal case.

If the input C is already a canonical model, parameter IsCanonical may be set to true. This will simplify the internal processing. NB The defining equations of C must be a minimal basis for its defining ideal.

Genus6GonalMap(C) : Crv -> RngIntElt, RngIntElt, MapSch, MapSch
    DataOnly: BoolElt                   Default: false
    IsCanonical: BoolElt                Default: false
For a genus 6 curve C, returns the gonality (2, 3 or 4), a second type identifier and a gonal map to (P)1. The second type number is irrelevant in the gonality 2 and 3 cases, when it is always 1. It is 1,2 or 3 in the 4-gonal case.

For 4-gonal curves of secondary type 2, C is a double cover of a genus 1 curve E through which all gonal maps factor. In this case, the map giving this double covering is returned as a fourth return value. Secondary type 3 curves are isomorphic to (smooth) plane quintics and an isomorphism to such a quintic is returned as the fourth return value. These maps are defined over the base field.

The hyperelliptic case (gonality 2) is handled as for Genus5GonalMap.

The trigonal case requires the characteristic of the base field to not be 2. It uses the CliffordIndexOne intrinsic and constructs a gonal map that is defined over a quadratic extension of the base field k if no such map exists over k.

There are 3 distinct subcases of the 4-gonal case, which are distinguished by the second return number.

Type 2 curves are double covers of a genus 1 curve E and there are infinitely many 4-gonal maps which are given by composing this double cover with a degree 2 map of E to (P)1. E is constructed as a projective normal curve of degree 5 in (P)4. The gonal map returned is found by looking for k-rational points on E by general point search methods and, if this fails, taking a point on E defined over a finite extension of k lying in a random hyperplane section of E.

Type 3 curves are (birationally) isomorphic to a plane quintic C5. The infinitely many 4-gonal maps are given by projection from a point on C5. The gonal map returned is constructed by finding a k-rational point on C5 or one over a finite extension as for type 2.

Type 1 (general type) curves have only finitely many gonal maps up to equivalence (5 at most, in fact). The algorithm explicitly finds algebraic data defining these map classes. It chooses one defined over k if possible. Otherwise, we take one over a minimal degree extension of k. The gonal map returned is thus defined over a minimal degree extension of k for such maps.

If the parameter DataOnly is set to true (the default is false), then only the gonality (and secondary type 1) is returned when it is less than 4, and only the gonality, secondary type t and fourth return value when t=2 or 3 are computed and returned in the 4-gonal case.

If the input C is already a canonical model, parameter IsCanonical may be set to true. This will simplify the internal processing. NB The defining equations of C must be a minimal basis for its defining ideal.

Example Crv_gon-sm-gen-ex (H121E43)

We give some examples with 4-gonal curves of genus 5 and 6. Firstly, we take a random canonical curve of genus 5 given by the intersection of 3 quadrics in (P)4.
> P4<x,y,z,t,u> := ProjectiveSpace(Rationals(),4);
> C := Curve(P4,[
> -x^2-x*y-y*z+z^2-x*t-y*t-z*t+t^2-x*u+y*u-t*u,
> -x*y+y^2+y*z+x*t+y*t-z*t+z*u+t*u+u^2,
> -x^2-x*y-y*z+z^2+x*t-y*t+t^2-x*u+y*u+z*u+t*u+u^2]);
> g,mp4,F,f := Genus5GonalMap(C);
> g;
4
> mp4;
Mapping from: Crv: C to Curve over Rational Field defined by
0
with equations :
z + u
t
> F;
Curve over Rational Field defined by
7*u^5+6*u^4*v-50*u^3*v^2+40*u^2*v^3+3*u*v^4+2*v^5+48*u^4*w-22*u^3*v*w-
 50*u^2*v^2*w+30*u*v^3*w+10*v^4*w+134*u^3*w^2-24*u^2*v*w^2-36*u*v^2*w^2+
 8*v^3*w^2+187*u^2*w^3+6*u*v*w^3-19*v^2*w^3+129*u*w^4+6*v*w^4+35*w^5
Next, we look at a genus 6 curve that is a degree 2 cover of a genus 1 curve.
> P3<x,y,z,t> := ProjectiveSpace(Rationals(),3);
> C := Curve(P3,[ x^2*y^2-x^2*t^2-z^2*t^2+2*t^4,
>    y^4-x*z^2*t-2*y^2*t^2+2*x*t^3+t^4,
>    x^3-y^2*t+t^3 ]);
> Genus(C);
6
> g,t,mp4,mpE := Genus6GonalMap(C);
> g; t;
4
2
> mp4;
Mapping from: Crv: C to Curve over Rational Field defined by
0
with equations :
x
t
> mpE;
Mapping from: Crv: C to Curve over Rational Field defined by
$.1^2 + $.2*$.3 - $.4*$.5,
$.1*$.2 + $.3^2 - $.5^2,
$.2^2 - $.1*$.3,
$.2*$.4 - $.1*$.5,
$.3*$.4 - $.2*$.5
with equations :
x^2
x*t
t^2
x*y
y*t

Small Genus Plane Models

This section contains intrinsics to compute minimal degree birational plane models for curves of genus 5 or 6.

Genus6PlaneCurveModel(C) : Crv -> BoolElt, MapSch
    IsCanonical: BoolElt                Default: false
For a genus 6 curve C of gonality 4 which isn't the double cover of a genus 1 curve (i.e. subtype 2 for Genus6GonalMap), returns a birational map to a plane curve of minimal degree (5 or 6). This map may be defined over a finite extension of the base field k, but it will always be a minimal degree extension for the existence of minimal degree plane models. The first return value is a boolean, which is true only if C is of gonality 4 and not of subtype 2. If so, the second return value is the map to the curve.

When C is birationally isomorphic to a plane quintic C5, (subtype 3 for Genus6GonalMap), C5 is a minimal degree plane model and it and the birational map to it are defined over k. This is a Clifford index 1 case, and the computation is performed via the CliffordIndexOne intrinsic.

In the general case, (subtype 1 for Genus6GonalMap), the smallest degree plane models are of degree 6, there are only finitely many birational maps from C to degree 6 plane curves up to linear equivalence and these are in 1-1 correspondence with the finitely many equivalence classes of gonal maps. The birational maps to plane models are computed by a slight variant of the same algorithm used to compute the gonal maps (see [Har13]). The return value is over the base field k, if possible, and otherwise over a smallest degree (at most 5) possible field extension.

If the input C is already a canonical model, parameter IsCanonical may be set to true. This will simplify the internal processing. NB The defining equations of C must be a minimal basis for its defining ideal.

Genus5PlaneCurveModel(C) : Crv -> BoolElt, MapSch
Genus5PlaneCurveModel(C,P) : Crv, Pt -> BoolElt, MapSch
Genus5PlaneCurveModel(C,Z) : Crv, Sch -> BoolElt, MapSch
    IsCanonical: BoolElt                Default: false
For a genus 5 curve C, tries to compute a birational map over the base field k to a plane curve of minimal degree (5 or 6) for plane curve models over bar(k). The first return value is a boolean which is true if the construction succeeds and, if so, the second return value is the birational map to the plane curve.

If C is hyperelliptic, the return value is always false. Gonality 3 curves are always birational over k to a plane curve of degree 5 with a single singular point and the computation always succeeds. The map to (P)2 on a canonical model Cc of C lying in (P)4 is given by projection from a line lying in the rational scroll surface X that contains Cc.

If C is 4-gonal and isn't a double cover of a genus 1 curve, the minimal degree plane model is of degree 6 and there are infinitely many of these (up to linear equivalence) that are given by projection from a secant line or tangent line of the canonical model Cc.

To find a birational map to such a model over k, we need a secant or tangent line defined over k, which will correspond to a k-rational point on Cc or a k-rational reduced divisor of degree 2 (i.e. 2 distinct points that are k-rational or conjugate over a quadratic extension of k).

The second and third versions of the function have a second argument that should be a k-rational non-singular point on C or a reduced subscheme of C of dimension 0 and degree 2, whose points (over bar(k)) lie in the non-singular locus of C. These are used to define the k-rational tangent line or secant line on the canonical model and the intrinsic will always succeed and return the map to a degree 6 model if they are provided by the user.

In the version with only the curve C as input, the intrinsic attempts to find a (non-singular) k-rational point on C using PointSearch if the base field is the rationals or using point enumeration if the base field is a finite field. If this search fails, or k is a field of a different type, the intrinsic will fail and return false.

If the input C is already a canonical model, parameter IsCanonical may be set to true. This will simplify the internal processing. NB The defining equations of C must be a minimal basis for its defining ideal.

Example Crv_gon-pln_mod-ex (H121E44)

We use the intrinsic for genus 6 curves to get a degree 6 plane model for the modular curve X0(58), starting from its canonical model.
> X := X0NQuotient(58,[]);
> X;
Curve over Rational Field defined by
x[1]^2-x[1]*x[3]+x[2]*x[4]+x[2]*x[5]-x[1]*x[6]+x[4]*x[6]+x[5]*x[6],
x[1]^2-x[1]*x[2]-x[2]^2-x[1]*x[3]-x[1]*x[4]+x[3]*x[4]+x[2]*x[5]+x[3]*x[5],
-x[1]^2+x[1]*x[2]+x[2]^2+x[4]^2+x[4]*x[5]-x[2]*x[6],
-x[1]^2-x[1]*x[2]+x[2]^2+x[2]*x[3]-x[1]*x[4]+x[2]*x[4]+x[3]*x[4]+x[4]^2-x[5]*x[6],
x[2]^2-x[1]*x[3]+x[2]*x[3]+x[3]^2-x[1]*x[4]+x[3]*x[4]+x[2]*x[6]+x[3]*x[6],
x[1]*x[2]-x[2]*x[3]-x[1]*x[4]+x[3]*x[4]+x[2]*x[5]+x[3]*x[5]+x[4]*x[5]-x[1]*x[6]+
x[2]*x[6]+x[3]*x[6]+x[4]*x[6]
> boo,mp := Genus6PlaneCurveModel(X : IsCanonical := true);
> boo;
true
> C<x,y,z> := Codomain(mp); //the plane model
> C;
Curve over Rational Field defined by
x^6-3*x^5*y+x^4*y^2+3*x^3*y^3-7/4*x^2*y^4-1/4*x*y^5-1/4*y^6+3/2*x^5*z-x^4*y*z-
9/2*x^3*y^2*z+7/2*x^2*y^3*z+5/8*x*y^4*z+3/4*y^5*z+5/4*x^4*z^2+1/4*x^3*y*z^2-
3*x^2*y^2*z^2+3/4*x*y^3*z^2-3/4*y^4*z^2+5/8*x^3*z^3+5/4*x^2*y*z^3-7/4*x*y^2*z^3+
1/4*y^3*z^3+1/8*x^2*z^4+5/8*x*y*z^4-1/8*y^2*z^4+1/8*y*z^5
> mp;
Mapping from: Crv: X to Crv: C
with equations :
x[1] - x[3]
x[2] + x[6]
x[5] + x[6]
Do the same for genus 5 4-gonal modular curve X0(42).
> P4<x,y,z,t,u> := ProjectiveSpace(Rationals(),4);
> X42 := Curve(P4,[x*z+z^2+x*t-x*u,
>   y^2-2*y*z+z^2-x*t-2*y*t+z*t-2*y*u+z*u+t*u,
>   x^2+x*t+y*t+y*u ]);
> // use pointsearch to pick rational point on X42
> boo,mp := Genus5PlaneCurveModel(X42 : IsCanonical := true);
> boo;
true
> C<x,y,z> := Codomain(mp);
> C;
x^6+3*x^5*y+9/2*x^4*y^2+2*x^3*y^3+2*x^2*y^4+11/8*x^5*z+31/8*x^4*y*z+23/4*x^3*y^2*z
+1/2*x^2*y^3*z+3*x*y^4*z+85/128*x^4*z^2+29/16*x^3*y*z^2+41/16*x^2*y^2*z^2-
9/4*x*y^3*z^2+9/8*y^4*z^2+9/64*x^3*z^3+17/32*x^2*y*z^3+15/16*x*y^2*z^3-
9/8*y^3*z^3+1/128*x^2*z^4+3/32*x*y*z^4+9/32*y^2*z^4
> mp;
Mapping from: Crv: X42 to Crv: C
with equations :
x + 1/2*t - 1/2*u
y - 1/4*t + 1/4*u
z - t + u
> // use nicer chosen point for nicer map
> boo,mp := Genus5PlaneCurveModel(X42,X42![0,0,0,0,1] : IsCanonical := true);
> C<x,y,z> := Codomain(mp);
> C;
x^5*y-2*x^4*y^2+x^3*y^3-x^2*y^4+2*x*y^5-y^6-x^5*z+3*x^4*y*z-6*x^3*y^2*z-
11*x^2*y^3*z-12*x*y^4*z-2*x^4*z^2+9*x^3*y*z^2+20*x^2*y^2*z^2+16*x*y^3*z^2+
2*y^4*z^2-4*x^3*z^3-7*x^2*y*z^3-4*x*y^2*z^3-x^2*z^4-2*x*y*z^4-y^2*z^4
> mp;
Mapping from: Crv: X42 to Crv: C
with equations :
x
y
z + t
V2.28, 13 July 2023