[Next][Prev] [Right] [Left] [Up] [Index] [Root]

Rational Points and Point Sets

There are two ways to think of points. If X is a scheme defined over a ring k and L is a k-algebra, then there is a set, called a point set and denoted X(L) which is the set of points of X having coordinates in L or, in Magma terminology, the parent of such points. Note that in Magma a k-algebra is interpreted to mean any ring which admits coercion from k or which is the codomain of a ring homomorphism whose domain is k. When thinking of points as a sequence of coordinates on some scheme this type of point should be used. It is created by coercing the sequence of coordinates into the required point set using a statement such as

> X(L) ! [1,2,3];
Alternatively, if the universe of the sequence is equal to the base ring of the scheme, one may simply coerce the sequence into the scheme.

> X ! [1,2,3];
When the universe of the sequence is the integers, Magma will coerce them into the base ring of the scheme and again this shorthand will work.

The word point always refers to an object whose parent is some point set.

When a scheme is defined over a finite field, there are intrinsics which list all of its points defined over that field or over any finite extension of it.

An alternative approach is to consider points, or sets of points, as schemes in their own right. They can be defined by equations, after all. We call such zero-dimensional schemes clusters. They are more general than simply collections of points since their ideals could be nonradical. They are discussed in the Section Zero-dimensional Schemes together with intrinsics which translate between points and clusters.

If p is a point, there are two ways of accessing its coordinates. The intrinsic Coordinates returns the sequence of all coordinates of p while p[i] returns the i-th coordinate alone. For example,

> p := X ! [1,2,3];
> Coordinates(p);
[ 1, 2, 3 ]
> p[1];
1
See Section Prelude to Points for descriptions of these and some other basic functions.
X(L) : Sch,Rng -> SetPt
PointSet(X,L) : Sch,Rng -> SetPt
X(m) : Sch,Map -> SetPt
PointSet(X,m) : Sch,Map -> SetPt
The point set of the scheme X of points whose coordinates lie in the ring L or in the codomain of the map m. The map m is a ring homomorphism from the base ring of X to some other ring. Coercion from the base ring of X to L must be possible if m is not given.
P eq Q : SetPt,SetPt -> BoolElt
Returns true if and only if the point sets P and Q where created on the same scheme and with the same map from the base ring of that scheme.
Scheme(P) : SetPt -> Sch
The scheme X associated to the point set P where P is of the form X(L) for some extension L of the base ring of X.
Curve(P) : SetPt -> Crv
The smallest scheme in the inclusion chain above the scheme associated to the point set P which is a curve.
Ring(P) : SetPt -> Rng
The ring L associated to the point set P where P is of the form X(L) for some scheme X.
RingMap(P) : SetPt -> Map
The map from the base ring of the scheme of P to the ring of the pointset P.
X ! Q : Sch,SeqEnum -> Pt
X(L) ! Q : SetPt,SeqEnum -> Pt
The point of the scheme X or the point set X(L) (where X is a scheme and L is some extension ring of its base ring) determined by the sequence of coordinates Q. The universe of the sequence Q must be the base ring of X, or the ring L or some ring from which coercion into one of these is possible.
p eq q : Pt,Pt -> BoolElt
Returns true if and only if the points p and q lie in some common scheme (possibly after coercion) and their coordinates are equal.
p in X : Pt,Sch -> BoolElt
Returns true if and only if the point p lies in the scheme X or is coercible into it.
Scheme(p) : Pt -> Sch
The scheme on which the point p lies.
Curve(p) : Pt -> Crv
The smallest scheme in the inclusion chain above the scheme on which the point p lies which is a curve.
Q in X : SeqEnum,Sch -> BoolElt
Returns true if and only if all of the points of the set or sequence Q lie in the scheme X or are coercible into it.
S subset X : Setq,Sch -> BoolElt
Returns true if and only if all points of the set S lie in the scheme X or are coercible into it.
IsCoercible(X,Q) : Sch,SeqEnum -> BoolElt,Pt
Returns true if and only if the sequence Q is the sequence of coordinates of some point of the scheme X. In that case, also return the point.
RationalPoints(X) : Sch -> SetIndx
RationalPoints(X,L) : Sch, FldFin -> SetIndx
RationalPoints(X,n) : Sch, RngIntElt -> SetIndx
RationalPoints(X,m) : Sch, Map -> SetIndx
An indexed set containing all the points of some point set of the scheme X which must be defined over a finite field. Which point set is listed depends on the arguments. If X is the only argument, then the base point set is listed. When there is a second argument, it determines the point set as being that of some finite extension of the base field. There are three cases: either the finite extension L is named explicitly; or the desired degree of the extension is used as the second argument; or a map of rings from the base field to the finite extension L is used as the second argument.
RationalPoints(X) : Sch -> SetIndx
An indexed set containing all the points of the scheme X whose coordinates lie in its base ring k which must a finite field.
HasNonsingularPoint(X) : Sch -> BoolElt,Pt
HasNonsingularPoint(X,L) : Sch,FldFin -> BoolElt,Pt
Return true if and only if the scheme X defined over a finite field contains a nonsingular point (defined over the finite field L if it appears as a second argument). In that case, also return such a point.

Example Scheme_scheme-points (H92E8)

In this example we define a scheme over a finite field and compute some points on it. Note that there are two point constructors used here. The first is simply X ! Q where Q is a sequence of integers (or base ring elements). In the second, we try to coerce a sequence Q whose elements do not lie in the base ring. The coercion into X cannot be used here. Instead one must be explicit about the intended point set. We have used the IsCoercible(X,Q) intrinsic which creates the point as a side-effect. One could also use the X(L) ! Q coercion to create the same point.

> A<x,y> := AffineSpace(FiniteField(7),2);
> X := Scheme(A,x^2 + y^2 + 1);
> X ! [2,3];
(2, 3)
> L<w> := ext< BaseRing(X) | 2 >;
> IsCoercible(X,[w^4,w^4]);
false
> IsCoercible(X(L),[w^4,w^4]);
true (w^4, w^4)
Finding those points was not simply good luck. In fact, we worked backwards and computed all points over the base field or L and chose one from each of those sets.

> RationalPoints(X);
{@ (3, 2), (4, 2), (2, 3), (5, 3), (2, 4), (5, 4), (3, 5), (4, 5) @}

> #RationalPoints(X,L); 48
> [ #RationalPoints(X,n) : n in [1..5] ]; [ 8, 48, 344, 2400, 16808 ]
The final line computes the number of points of X over extensions of its base field, although it does get very slow already by the time n is 5. Note that Magma has very fast machinery for computations like this for elliptic and hyperelliptic curves.

 [Next][Prev] [Right] [Left] [Up] [Index] [Root]