The general tools for constructing and analyzing curves are described in Chapter PLANE ALGEBRAIC CURVES. We do not repeat them here, but rather give some examples to demonstrate those basics that the user will need in Section Rational Curve and Conic Examples. In Section Rational Curves and Conics we describe the main parametrization function for rational curves and functions which enable type change from a curve of genus zero to a rational curve.
Rational curves and conics are the specialized types for nonsingular plane curves of genus zero, defined by polynomials of degree 1 and 2, respectively. The condition of nonsingularity is equivalent to that of absolute irreducibility for conics, and imposes no condition on a linear equation in the plane.
Construct the conic C defined by the polynomial f in the projective plane X. The parameters and most specialised algorithms for conics apply only to curves whose base ring is the integers or the rationals.
The rational curve in the projective plane X determined by the linear polynomial f.
Returns true if and only if C is a nonsingular plane curve of degree 2, in which case it returns a curve with the same defining polynomial of type CrvCon as a second value.
Returns true if and only if the scheme C is defined by a linear polynomial in some projective plane P^2, and if so, returns a curve with the same defining polynomial in P^2 of type CrvRat as the second return value.
> P2<x,y,z> := ProjectivePlane(Rationals()); > C0 := Curve(P2,x^2 + 3*x*y + 2*y^2 - z^2); > C0; Curve over Rational Field defined by x^2 + 3*x*y + 2*x^2 - z^2 > bool, C1 := IsConic(C0);Clearly this is a nonsingular degree two curve, so bool must be true, and we have created a new curve C1 in the same ambient space P2, but of type conic.
> C1; Conic over Rational Field defined by x^2 + 3*x*y + 2*y^2 - z^2 > AmbientSpace(C0) eq AmbientSpace(C1); true > DefiningIdeal(C0) eq DefiningIdeal(C1); true > C0 eq C1; false > Type(C0); Crv > Type(C1); CrvConThe equality test fails here, because the two objects are of different Magma type.
The basic access functions for rational curves and conics are inherited from the general machinery for plane curves and hypersurface schemes.
Returns the base ring of C.
Returns the category of rational curves CrvRat or of conics CrvCon; these are special subtypes of planes curves, which have type Crv.
Returns the defining polynomial of the conic or rational curve C.
Returns the defining ideal of the conic or rational curve C.
We develop several examples which illustrate the creation of genus zero curves, reduction to standard models (conics and rational curves), and the facilities for finding points on these models, and finaling the corresponding trivialization by parametrizing the curve by a projective line.
Strictly speaking, in the previous example we have bypassed the datatypes of rational curves and conics, but the principal strategies of reducing a genus zero curve to one of standard form is demonstrated. In harder cases, over the rationals or a number field, we might not be able to find any rational point at all. In the next example, we construct another curve of genus zero over the rationals, without knowing a priori, that there exists any rational point.
We begin with a example of a singular curve of geometric genus zero.
> P2<x,y,z> := ProjectivePlane(FiniteField(71)); > C := Curve(P2,(x^3 + y^2*z)^2 - x^5*z); > C; Curve over GF(71) defined by x^6 + 70*x^5*z + 69*x^3*y^2*z + y^4*z^2 > ArithmeticGenus(C); 10 > Genus(C); 0 > #RationalPoints(C); 73 > Z := SingularSubscheme(C); > Degree(Z); 18This curve is highly singular, but is geometrically of genus zero and since at most 18 of 73 points are singular, there exists a nonsingular point which makes it birational to a projective line.
A curious note is that there are 73, not 72 points, as one would expect for a nonsingular curve of genus zero. So we will investigate the source of the extra points.
> cmps := IrreducibleComponents(Z);
> [ Degree(X) : X in cmps ];
[ 11, 7 ]
> [ Degree(ReducedSubscheme(X)) : X in cmps ];
[ 1, 1 ]
> [ RationalPoints(X) : X in cmps ];
[
{@ (0 : 0 : 1) @},
{@ (0 : 1 : 0) @}
]
Since the only singular rational points on C are (0 : 0 : 1) and
(0 : 1 : 0) the "obvious" point (1 : 0 : 1) must be nonsingular,
and we can use it to obtain a rational parametrization of the curve,
as explained in Section Isomorphisms.
> P1<u,v> := ProjectiveSpace(FiniteField(71),1);
> p := C![1,0,1];
> m := Parametrization(P1,C,p);
> S1 := {@ m(q) : q in RationalPoints(P1) @};
> #S1;
72
> [ q : q in RationalPoints(C) | q notin S1 ];
[ (0 : 1 : 0) ]
We conclude that the extra point comes from a singularity,
whose resolution does not have any degree one places over it
(see Section Divisors of Chapter PLANE ALGEBRAIC CURVES for background
on places of curves). We can verify this explicitly.
> [ Degree(p) : p in Places(C![0,1,0]) ]; [ 2 ]
> P2<x,y,z> := ProjectiveSpace(Rationals(),2); > C0 := Curve(P2,x^2 - 54321*x*y + y^2 - 97531*z^2); > IsNonsingular(C0); trueThe curve C is defined as a degree 2 curve over the rationals. By making a preliminary type change to the type of conics, CrvCon, we can test whether there exists a rational point over Q, and use efficient algorithms of Section Finding Points for finding rational points on curves in conic form. The existence of a point is equivalent to the existence of a parametrization of the curve by the projective line. To make the parametrization both efficient and useful, it is crucial to have a point of small size, which is obtained by the reduction algorithms of Section Point Reduction
> bool, C1 := IsConic(C0); > bool; true > C1; Conic over Rational Field defined by x^2 - 54321*x*y + y^2 - 97531*z^2 > HasRationalPoint(C1); true > RationalPoint(C1); (-17847061/14971 : -306/14971 : 1)The parametrization intrinsic requires a one-dimensional ambient space as one of the arguments. This space will be used as the domain of the parametrization map.
> P1<u,v> := ProjectiveSpace(Rationals(),1); > phi := Parametrization(P1,C1); > phi; Mapping from: Prj: P1 to CrvCon: C1 with equations : -10811015/29243*u^2 - 7277832/29243*u*v - 1224835/29243*v^2 -57/29243*u^2 - 566/29243*u*v + 306/29243*v^2 u^2 - 34635/29243*u*v - 14971/29243*v^2 and inverse 19071896/8095011*x - 22178087549/2698337*y - 2920273202/8095011*z x + 197669555470/8095011*y + 1125995395/2698337*z and alternate inverse equations : 8095011/18525733*x + 11627620910/1089749*y + 3377986185/18525733*z x - 587265145701/18525733*y + 5704198066/18525733*zThe defining functions for the parametrization may look large, but they are defined simply by a linear change of variables from the 2-uple embedding of the projective line in the projective plane. We demonstrate that the algorithm has found a nontrivial point and parametrization, by attempting to use the naive point sieve of Section Finding Points to find any small points.
> time RationalPoints(C1 : Bound := 100000);
{@ @}
Time: 13.540
Now, despite the lack of points with small coefficients, the
parametrization lets us realize any number of rational points
on the curve.
> phi(P1![0,1]); (1224835/14971 : -306/14971 : 1) > phi(P1![1,1]); (19313682/20363 : 317/20363 : 1) > phi(P1![1,0]); (-10811015/29243 : -57/29243 : 1)