A plane curve C is defined by the vanishing of a single polynomial f in one of the available ambient planes:
C: (f = 0) subset A.
The polynomial f must be an element of the coordinate ring of A. The notation C for a curve and f for its defining equation will be maintained. The coefficient ring of the parent of f will be denoted k. Irrespective of type, the ambient space will be denoted A.
These are the most basic methods of creating a curve. For specialised types --- conics, elliptic curves, hyperelliptic curves --- there are additional functions documented in the corresponding chapters. Curves may also be created implicitly, such as when they arise as the images of maps.
Create the plane curve f=0 in the ambient plane A where f is a polynomial in the coordinate ring of A.
Create the plane curve in the ambient plane A determined by the ideal I of the coordinate ring of A.
The line through the distinct points p, q, or the points of S if they are collinear. If the points are points of a curve rather than the ambient space, the line will be interpreted as the tangent line in the case that the points are equal.
The conic in the projective space P through the points of the set S if such a conic exists and is unique. The traditional setup here is where S is a set of 5 points in general position, which means by just that no 3 of them are collinear. If the resulting conic curve is nonsingular, then it will be returned as a special type. See Chapter RATIONAL CURVES AND CONICS for details of the special functions that apply in that case.
Create the union of the curves C and D. The result will usually be non-irreducible, so although it will be interpreted as a curve, most of the advanced functions below will not apply to it.
Let A be some ambient space in Magma. For example, think of A as being the affine plane. Let k be its base ring and R_A its coordinate ring. If m: k -> L is a map of rings (a coercion map, for instance) then there is a new ambient space denoted A_L and called the base change of A to L which has coordinate ring R_A but with coefficients L instead of k. (Mathematically, one simply tensors R_A with L over k. In Magma the equivalent function at the level of polynomial rings is ChangeRing.) There is a base change function described below which takes A and L (or the map k -> L) as arguments and creates this new space A_L. Note that there is a map from the coordinate ring of A to that of A_L determined by the map m.
This operation is called base extension since one often thinks of the map m as being an extension of fields. Of course, the map m could be many other things. One key example where the name extension is a little unusual would be when m is the map from the integers to some finite field.
Now let X be a scheme in Magma. Thus X is defined by some polynomials f_1, ..., f_r on some ambient space A. Given a ring map k -> L there is a base change operation for X which returns the base change of X to L, denoted X_L. This is done by first making the base change of A to L and then using the map from the coordinate ring of A to that of A_L to translate the polynomials f_i into polynomials defined on A_L. These polynomials can then be used to define a scheme in A_L. It is this resulting scheme which is the base change of X to L.
If one has a number of curves in the same ambient space and wants to base change them all at the same time, a little care is required. The function which takes a curve and a map of rings as argument will create a new ambient space each time so is unsuitable. Better would be to base change the ambient space and then use the base change function which takes the curve and the desired new ambient space as argument. (This latter base change function appears to be different from the other ones. In fact it is not. We described base change above as a function of maps of rings. Of course, there is a natural extension to maps of schemes. With that extension, this final base change intrinsic really is base change with respect to map of ambient spaces.)
The base change of the curve C to the new base ring K. This is only possible if elements of the current base ring of C can be coerced automatically into K. The resulting curve will lie in a newly created plane (see the example below).
The base change of the curve C by the map of base rings m. Again the resulting curve will lie in a newly created plane.
The base change of the curve C to a curve in the new ambient space A. The space A must be of the same type as the ambient of C and its base ring must either admit coercion from the base ring of C or have the map m between the two explicitly given.
The base change of C, where the base ring of C is a finite field to the finite field which is a degree n extension of the base field of C.
> A<x,y> := AffineSpace(Rationals(),2);
> C := Curve(A,y^2 - (x^2+1)^3);
> SingularPoints(C);
{}
> HasSingularPointsOverExtension(C);
true
Here we assume that the user knows which extension to move to.
The first method of finding the points is to search in the particular
point set as follows.
> Qi<i> := QuadraticField(-1);
> SingularPoints(C,Qi);
{ (i, 0), (-i, 0) }
The second method is to create a new curve by base change and search in
the base ring point set there. For a single calculation
this method is rather clumsy, but if further computation was to take
place at these points it might be preferable.
> B<u,v> := BaseChange(A,Qi);
> Ci := BaseChange(C,B);
> SingularPoints(Ci);
{ (i, 0), (-i, 0) }
The first few functions below recover data from the ambient space of the curve (and could equally well be applied to the ambient space). Any curves lying in the same ambient space will return identical results when evaluated in these functions. The remaining functions recover data about the equation defining the curve.
The coordinate ring of a curve is described here, but its function field is discussed much later in Section Function Fields.
The ambient space containing the curve C.
The base ring of the curve C. This is recovered as the base ring of the ambient plane. The third function will report an error if the base ring is not a field.
The defining polynomial of the curve C.
The ideal in the coordinate ring of the ambient space defining the curve C.
The coordinate ring of the curve C. Even creating this requires the use of Gröbner basis techniques.
The smallest scheme in the inclusion chain above C which is a curve. If C is a curve this will return C. If some other scheme has been created as a subscheme of a curve then this curve will be returned.
The degree of the defining polynomial of the curve C.
The ideal of of partial derivatives of the defining polynomial of the curve C.
The matrix of partial derivatives of the defining polynomial of the curve C.
The symmetric matrix of second partial derivatives of the defining polynomial o
> A<x,y,z> := ProjectiveSpace(Rationals(),2);
> C := Curve(A,z*y^2 - x^3 - x*z^2 - z^3);
> IsNonSingular(C);
true
> Ideal(C);
Ideal of Polynomial ring of rank 3 over Rational Field
Lexicographical Order
Variables: x, y, z
Basis:
[
-x^3 - x*z^2 + y^2*z - z^3
]
> IsPrincipal($1);
true x^3 + x*z^2 - y^2*z + z^3
Next we compute the determinant of the Hessian matrix of C.
That is a polynomial which we use to create another curve D.
The intersection of C and D are the points of inflection, or flexes,
of C.
Over an algebraic closure there will be nine of these, but we only
see one --- the family "flex at infinity" --- over the rationals.
> M := HessianMatrix(C);
> Determinant(M);
24*x^2*z + 24*x*y^2 + 72*x*z^2 - 8*z^3
> D := Curve(A,Determinant(M));
> IntersectionPoints(C,D);
{ (0 : 1 : 0) }
Returns true if and only if the equation defining the curve C has no multiple factor.
Returns true if and only if the equation defining the curve C has at least one multiple factor.
Returns true if and only if the defining polynomial of the curve C does not factor over the base field.
Returns true if and only if the curve C contains at least one singularity over an algebraic closure of its base field.
Returns true if and only if the curve C has no singularities over an algebraic closure of its base field.[Next][Prev] [Right] [Left] [Up] [Index] [Root]