Rational Parametrizations of Rational Plane Curves

Note

In this section, $C$ will denote a complex projective plane curve, defined by an absolutely irreducible, homogeneous polynomial in three variables, with coefficients in $\mathbb Q$. Moreover, we will write $n = \deg C$.

Recall that the curve $C$ is rational if it is birationally equivalent to the projective line $\mathbb P^1(\mathbb C)$. In other words, there exists a rational parametrization of $C$, that is, a birational map $\mathbb P^1(\mathbb C)\dashrightarrow C$. Note that such a parametrization is given by three homogeneous polynomials of the same degree in the homogeneous coordinates on $\mathbb P^1(\mathbb C)$.

Note

The curve $C$ is rational iff its geometric genus is zero.

Based on work of Max Noether on adjoint curves, Hilbert und Hurwitz showed that if $C$ is rational, then there is a birational map $C \dashrightarrow D$ defined over $\mathbb Q$ such that $D = \mathbb P^1(\mathbb C)$ if $n$ is odd, and $D\subset\mathbb P^2(\mathbb C)$ is a conic if $n$ is even.

Note

If a conic $D$ contains a rational point, then there exists a parametrization of $D$ defined over $\mathbb Q$; otherwise, there exists a parametrization of $D$ defined over a quadratic field extension of $\mathbb Q$.

The approach of Hilbert und Hurwitz is constructive and allows one, in principle, to find rational parametrizations. The resulting algorithm is not very practical, however, as the approach asks to compute adjoint curves repeatedly, at each of a number of reduction steps.

The algorithm implemented in OSCAR relies on reduction steps of a different type and requires the computation of adjoint curves only once. Its individual steps are interesting in their own right:

  • Assure that the curve $C$ is rational by checking that its geometric genus is zero;
  • compute a basis of the adjoint curves of $C$ of degree ${n-2}$; each such basis defines a birational map $C \dashrightarrow C_{n-2},$ where $C_{n-2}$ is a rational normal curve in $\mathbb P^{n-2}(\mathbb C)$;
  • the anticanonical linear system on $C_{n-2}$ defines a birational map $C_{n-2}\dashrightarrow C_{n-4}$, where $C_{n-4}$ is a rational normal curve in in $\mathbb P^{n-4}(\mathbb C)$;
  • iterate the previous step to obtain a birational map $C_{n-2} \dashrightarrow \dots \dashrightarrow D$, where $D = \mathbb P^1(\mathbb C)$ if $n$ is odd, and $D\subset\mathbb P^2(\mathbb C)$ is a conic if $n$ is even;
  • invert the birational map $C \dashrightarrow C_{n-2} \dashrightarrow \dots \dashrightarrow D$;
  • if $n$ is even, compute a parametrization of the conic $D$ and compose it with the inverted map above.
Note

The defining property of an adjoint curve is that it passes with “sufficiently high” multiplicity through the singularities of $C$. There are several concepts of making this precise. For each such concept, there is a corresponding adjoint ideal of $C$, namely the homogeneous ideal formed by the defining polynomials of the adjoint curves. In OSCAR, we follow the concept of Gorenstein which leads to the largest possible adjoint ideal.

See Janko Böhm (1999) and Janko Böhm, Wolfram Decker, Santiago Laplagne, Gerhard Pfister (2017) for details and further references.

Creating Projective Plane Curves

The data structures for algebraic curves in OSCAR are still under development and subject to change. Here is the current constructor for projective plane curves:

ProjPlaneCurveMethod
ProjPlaneCurve(f::MPolyElem{T}) where {T <: FieldElem}

Given a homogeneous polynomial f in three variables with coefficients in a field, create the projective plane curve defined by f.

Examples

julia> R, (x,y,z) = GradedPolynomialRing(QQ, ["x", "y", "z"])
(Multivariate Polynomial Ring in x, y, z over Rational Field graded by 
  x -> [1]
  y -> [1]
  z -> [1], MPolyElem_dec{fmpq, fmpq_mpoly}[x, y, z])

julia> C = ProjPlaneCurve(z*x^2-y^3)
Projective plane curve defined by x^2*z - y^3
source

The Genus of a Plane Curve

geometric_genusMethod
geometric_genus(C::ProjectivePlaneCurve{T}) where T <: FieldElem

Return the geometric genus of C.

Examples

julia> R, (x,y,z) = GradedPolynomialRing(QQ, ["x", "y", "z"]);

julia> C = ProjPlaneCurve(z*x^2-y^3)
Projective plane curve defined by x^2*z - y^3

julia> geometric_genus(C)
0
source

Adjoint Ideals of Plane Curves

adjoint_idealMethod
adjoint_ideal(C::ProjPlaneCurve{fmpq})

Return the Gorenstein adjoint ideal of C.

Examples

julia> R, (x,y,z) = GradedPolynomialRing(QQ, ["x", "y", "z"]);

julia> C = ProjPlaneCurve(y^4-2*x^3*z+3*x^2*z^2-2*y^2*z^2)
Projective plane curve defined by -2*x^3*z + 3*x^2*z^2 + y^4 - 2*y^2*z^2

julia> I = adjoint_ideal(C)
ideal(-x*z + y^2, x*y - y*z, x^2 - x*z)
source

Rational Points on Conics

rational_point_conicMethod
rational_point_conic(D::ProjPlaneCurve{fmpq})

If the conic D contains a rational point, return the homogeneous coordinates of such a point. If no such point exists, return a point on D defined over a quadratic field extension of $\mathbb Q$.

Examples

julia> R, (x,y,z) = GradedPolynomialRing(QQ, ["x", "y", "z"]);

julia> D = ProjPlaneCurve(x^2 + 2*y^2 + 5*z^2 - 4*x*y + 3*x*z + 17*y*z);

julia> P = rational_point_conic(D)
3-element Vector{AbstractAlgebra.Generic.MPoly{nf_elem}}:
 -1//4*a
 -1//4*a + 1//4
 0

julia> S = parent(P[1])
Multivariate Polynomial Ring in x, y, z over Number field over Rational Field with defining polynomial t^2 - 2

julia> NF = base_ring(S)
Number field over Rational Field with defining polynomial t^2 - 2

julia> a = gen(NF)
a

julia> minpoly(a)
t^2 - 2
source

Parametrizing Rational Plane Curves

parametrization_plane_curveMethod
parametrization_plane_curve(C::ProjPlaneCurve{fmpq})

Return a rational parametrization of C.

Examples

julia> R, (x,y,z) = GradedPolynomialRing(QQ, ["x", "y", "z"]);

julia> C = ProjPlaneCurve(y^4-2*x^3*z+3*x^2*z^2-2*y^2*z^2)
Projective plane curve defined by -2*x^3*z + 3*x^2*z^2 + y^4 - 2*y^2*z^2

julia> parametrization_plane_curve(C)
3-element Vector{fmpq_mpoly}:
 12*s^4 - 8*s^2*t^2 + t^4
 -12*s^3*t + 2*s*t^3
 8*s^4
source