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.
The arithmetic genus of the curve C. Recall that for a plane projective curve of degree d this number is (d - 1)(d - 2)/2. If the curve C is affine, then 0 is returned.
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.
The nonsingular points of the curve C defined over its base ring whose tangent lines have intersection at least 3 with C.
Returns true if and only if the curves C and D are defined by identical ideals in the same ambient space. (In fact, this simply compares defining polynomials of the two curves up to a factor so no Gröbner basis calculations are needed.)
Returns true if and only if the curve C is contained in the curve D.
In Magma, any affine plane 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 in the plane will return projective curves in the projective closure of the plane. Conversely, a projective plane has three standard affine patches. These will also appear as the ambient spaces of the standard affine patches of a projective curve.
The projective plane that is the projective closure of 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 space 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.
The i-th affine patch of the projective curve C. The first patch is the one centred on the point (0:0:1), the second at the point (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 first of these functions create selfmaps of the affine plane. Such a map f can be used to move a curve around the plane simply by applying it to the curve. See Chapter SCHEMES on schemes for more details about maps.
These are the basic automorphisms of the affine plane A taking (x, y) to (x, y), (x - a, y - b), (y, x) and (x + q(y), y) respectively, where p is the point (a, b) and q is a polynomial on A involving y only.
The image of C under the change of coordinates which translates p to the point (0:1:0) in the projective plane and makes the tangent line there equal to the line at infinity. An error is reported if p is a singular point of C. The change of coordinates map is given so that other curves can be mapped by the same change of coordinates.
> P<x,y,z> := ProjectiveSpace(Rationals(),2); > C := Curve(P,x^3 + y^3 + z^3); > p := C ! [1,-1,0]; > IsFlex(C,p); true 3The point we have chosen is a flex --- the second return value of 3 is the local intersection number of the curve C with its tangent line at p. We use the intrinsic TranslationToInfinity to make an automorphism of P which takes the point p to the point (0:1:0) and takes the curve C to a curve which has tangent line z=0 at the image of p.
> C1,phi := TranslationToInfinity(C,p); > phi(p); (0 : 1 : 0) > C1; Curve over Rational Field defined by x^3 + 3*y^2*z - 3*y*z^2 + z^3This is almost a Weierstrass form already. It is a pleasant exercise to make coordinate changes which `absorb' some of the coefficients. Or one can use the intrinsic EllipticCurve to make the entire transformation in one go.
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 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 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.
Return an elliptic curve in Weierstra ss form on which the point p is the flex at infinity. The second return value is a map taking a point of C (or a sequence of coordinates corresponding to a point of C) to the corresponding point of the elliptic curve. The third return value is the inverse map.
Model: MonStgElt Default: "Simple"
The arguments are a nonsingular cubic affine or projective curve together with a point p lying on it. The return values are[Next][Prev] [Right] [Left] [Up] [Index] [Root]The parameter Model is used to decide which particular Weierstra ss form should be used. It can be one of the following strings : "Simple", "Natural", "Minimal", "Integral" or "Simplified". The first two are naive: "Simple" means that the algorithm stops after making p in C a flex at the point (0:1:0) while "Natural" means that it continues to complete a square and cube to simplify the equation a little if C is not defined over a field of characteristic 2 or 3. The other three are described in Section Alternative Models. They provide good models defined over the rationals or finite fields.
- an elliptic curve W in Weierstra ss form isomorphic to C; intrinsics from the elliptic curve modules can be applied to W
- a map of the ambient projective space which when restricted to W (or its projective closure) is an isomorphism of W with C taking the flex (0:1:0) at infinity to the point p.
Notice that if p is not a flex of C, then the resulting ambient map will not be defined at the point (0:1:0). (Of course, on restriction to W this map extends to a regular map, but that is not enabled.) If what is desired is an elliptic curve E together with a pair of maps which transfer points between C and E, then the intrinsic EllipticCurve(C,p) should be used.