|
In this section functions which determine global properties of curves such as
their genus and whether their equation has a particular form are presented.
GeometricGenus(C) : Crv -> RngIntElt
The topological genus of the curve C. More precisely, this is the arithmetic
genus of the projective normalisation tilde(C), which is unique up to
k-isomorphism, where k is the basefield of C. C must be an integral
curve (reduced and irreducible as a scheme).
Note that, if k is not a perfect field, tilde(C) may have singularities
over an inseparable extension field of k (in technical terms, tilde(C)
is a non-singular scheme, but it may not be k-smooth), in which case
the genus of C may drop after some (inseparable) basefield extensions.
An alternative method for computation of the genus of C, which should be a projective curve.
The method is to compute the (much easier) arithmetic genus of C and then to
subtract off the "delta adjustments" over the set of singular points of C,
which are computed with the DeltaAdjustment intrinsic. Requires that
C is projective and lies in an ambient where its singular subscheme is
computable.
The arithmetic genus of the curve C or its projective closure if C is affine.
In the case of a plane projective curve of degree d, this number is just
(d - 1)(d - 2)/2.
This is really the arithmetic genus of (projective) scheme C and not of its
normalisation.
The number of punctures of the affine plane curve C over an algebraic
closure of its ground field, that is, the number
of points supporting its reduced scheme at infinity.
This is just the reduced degree of the polynomial of C at infinity.
The singular points of the curve C which are defined over the base field of C.
Returns false if and only if the scheme of singularities of the curve C has support
defined over the base field of C.
This function requires that C be reduced.
InflectionPoints(C) : Sch -> Sch
For a plane curve C, this returns the subscheme of C defined by the vanishing
of the determinant of the Hessian matrix. This contains the "flex points" of C,
which by definition are the nonsingular points at which the tangent line intersects
C with multiplicity at least 3.
Returns true if and only if the curves C and D are defined by identical ideals in the
same ambient space.
(For plane curves, this simply compares defining polynomials of the two curves
up to a factor so Gröbner basis calculations are avoided.)
Returns true if and only if the curve C is contained
(scheme-theoretically) in the curve D.
We take a plane affine cubic C with a single cusp and non-singular at infinity.
Here the projective normalisation of C is isomorphic to the projective line
with genus 0, although the arithmetic genus of C is 1.
> A<x,y> := AffineSpace(GF(3),2);
> C := Curve(A,y^2 - x^3 - 1);
> Genus(C);
0
> ArithmeticGenus(C);
1
Now we consider a similar cubic over the non-perfect field K=k(t) with
a single cuspidal singularity defined over an inseparable cubic extension.
Now C is a normal and non-singular scheme (but non-smooth), which only loses
its normality after an inseparable basefield extension. Here both the genus
and arithmetic genus are 1.
> K<t> := RationalFunctionField(GF(3));
> A<x,y> := AffineSpace(K,2);
> C := Curve(A,y^2 - x^3 - t);
> Genus(C);
1
In Magma, any affine space has a unique projective closure. This may
be assigned different variable names just like any projective space.
The projective closure functions applied to affine curves will
return projective curves in the projective closure of the affine ambient.
Conversely, a projective space has standard affine patches.
These will also appear as the ambient spaces of the standard affine patches
of a projective curve.
The projective space that is the projective closure of the ambient A.
Unless A is already expressed as a particular patch on some projective
space, this is the standard closure defined by the homogenisation of the
coordinate ring of A with a new coordinate and unit weights.
The closure of the curve C in the projective closure of its ambient affine space.
Since the closure of the ambient space is unique, the ambient space
of the closure of curves lying in a common affine space is independent
of how it is constructed.
Here is an odd example but one that occurs in practice when curves
and spaces are passed between functions:
the functions ProjectiveClosure() and AmbientSpace() commute!
> A<a,b> := AffineSpace(GF(5),2);
> C := Curve(A,a^3 - b^4);
> AmbientSpace(ProjectiveClosure(C)) eq ProjectiveClosure(AmbientSpace(C));
true
The line which is the complement of the affine plane
A embedded in the projective closure of A.
The set of points at infinity defined over the base field of the curve C.
The number of these points can also be recovered by the
NumberOfPunctures() function in the plane case.
The i-th affine patch of the projective curve C. For ordinary projective
space,
the first patch is the one centred on the point (0:0: ... :0:1), the second
at the point (0:0: ... :1:0) and so on.
Usually one looks at the first affine patch of a curve.
If the curve is described, as below, using homogeneous coordinates x,y,z
then this is often realised by "setting z=1".
Note that we have to assign names to the coordinates explicitly on the affine
patches if we want them.
> P<x,y,z> := ProjectiveSpace(GF(11),2);
> C := Curve(P,x^3*z^2 - y^5);
> AffinePatch(C,1);
Curve over GF(11) defined by 10*$.1^3 + $.2^5
> C1<u,v> := AffinePatch(C,1);
> C1;
Curve over GF(11) defined by 10*u^3 + v^5
> SingularPoints(C);
{ (1 : 0 : 0), (0 : 0 : 1) }
One can also look at other patches. Indeed, sometimes it is necessary.
In this example, the curve C has an interesting singularity "at infinity",
the point (1 : 0 : 0).
If we want to view it on an affine curve then we must take one of the
other patches.
> C3<Y,Z> := AffinePatch(C,3);
> C3;
Curve over GF(11) defined by Y^5 + 10*Z^2
> IsSingular(C3 ! [0,0]);
true
Both affine curves C1 and C3 have the projective curve C as their
projective closure.
> ProjectiveClosure(C1) eq ProjectiveClosure(C3);
true
The functions in this section check whether a curve is written in a particular
normal form, and also whether it belongs to one
of the more specialised families of curve.
Returns true if the curve C is nonsingular plane curve of genus 1 in
Weierstrass form. This tests the coefficients of the polynomial of C.
The conditions guarantee a
flex at the point (0:1:0) either on C or on its projective closure.
These are precisely the conditions required by the linear equivalence algorithms
for divisors in a later section.
Returns true if the curve C is a hyperelliptic curve in plane
Weierstrass form. The conditions chosen are that the (a) first affine
patch be nonsingular, (b) the point (0:1:0) is the only point at infinity
and has tangent cone supported at the line at infinity and (c), the projection
of C away from that point has degree 2.
EllipticCurve(C,p) : Crv, Pt -> CrvEll, MapSch
EllipticCurve(C,p) : Crv, PlcCrvElt -> CrvEll, MapSch
See the description of EllipticCurve in Chapter ELLIPTIC CURVES.
IsHyperelliptic(C) : Crv -> BoolElt, CrvHyp, MapSch
Eqn: BoolElt Default: true
IsGeometricallyHyperelliptic(C) : Crv -> BoolElt, Crv, MapSch
Map: BoolElt Default: true
SetVerbose("IsHyp", n): Maximum: 2
The second function determines whether the curve C is a hyperelliptic curve
over the algebraic closure of its base field. If so and if Map is
true, a plane conic or the projective line and a degree 2 map from
C to it (all defined over the base field) are returned. The map is to the
line if the genus of C is even and to a conic if the genus is odd.
The first function
determines whether the curve C is hyperelliptic over its base field
K (ie has a degree 2 map to the projective line defined over K).
If so, and if the Eqn parameter is true, it also returns
a hyperelliptic Weierstrass model H over K and an isomorphic
scheme map from C to H.
Here, hyperelliptic entails genus ≥2.
The basic method in both cases is to find the image of C under the
canonical map
(using functions to be described later) and to check if this is of
arithmetic genus zero. If so, this image curve (which is rational normal)
is mapped down to a plane conic or the line by repeated adjunction maps.
For the second function, the final equation is determined by differential
computations in the function field of C once the explicit map to the
projective line, which gives the base x function, has been determined.
> P<a,b,c,d,e,f> := ProjectiveSpace(Rationals(),5);
> C := Curve(P,[
> a^2 + a*c - c*e + 3*d*e + 2*d*f - 2*e^2 - 2*e*f - f^2,
> a*c - b^2,
> a*d - b*c,
> a*e - c^2,
> a*e - b*d,
> b*e - c*d,
> c*e - d^2
> ] );
> boo,hy,mp := IsHyperelliptic(C);
> boo;
true
> hy;
Hyperelliptic Curve defined by y^2 = x^8 + x^6 + x - 1 over Rational Field
> mp;
Mapping from: Sch: C to CrvHyp: hy
with equations :
c*e - d^2 + d*f
-d*f + e*f + f^2
e*f
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
|