In this section functions which determine global properties of curves such as their genus and whether their equation has a particular form are presented.
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.
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.
> A<x,y> := AffineSpace(GF(3),2); > C := Curve(A,y^2 - x^3 - 1); > Genus(C); 0 > ArithmeticGenus(C); 1Now 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.
> 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.
> 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]); trueBoth 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.
See the description of EllipticCurve in Chapter ELLIPTIC CURVES.
Eqn: BoolElt Default: true
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