Zero-dimensional Schemes

This section describes intrinsics for creating zero dimensional schemes or clusters. It also discusses those functions which converts a finite set of points into the reduced zero dimensional having this support. Throughout this subsection, a lowercase p denotes a point of a scheme.

The word cluster refers to schemes that are known to be zero dimensional. In general, the intrinsic Cluster converts points to clusters while the function RationalPoints finds the points on a cluster which are rational over its base field.

Note that there are four constructors of the form Cluster(X,data) analogous to the four Scheme(X,data) constructors but which make an additional dimension test and type change before returning a cluster determined as a subscheme of X by the data of the second argument.

Cluster(p) : Pt -> Clstr
Cluster(X, p) : Sch, Pt -> Clstr;
Cluster(S) : SetEnum -> Clstr
Cluster(S) : SetIndx -> Clstr
Cluster(X, S) : Sch, SetEnum -> Clstr
Cluster(X, S) : Sch, SetIndx -> Clstr
The reduced scheme supported at the point p, or supported at the set of points S, as a subscheme of the scheme X if given.
RationalPoints(Z) : Sch -> SetEnum
RationalPoints(Z,L) : Sch, Rng -> SetEnum
The set of rational points of the cluster Z. If an extension of the base field L is given as a second argument, the set of points of Z(L), those points whose coordinates lie in L, is returned.
PointsOverSplittingField(Z) : Clstr -> SetEnum
If Z is a cluster this will determine some (not necessarily optimal) point set Z(L) in which all points of Z having coordinates in an algebraic closure of the base field lie and will return all points of Z(L).
HasPointsOverExtension(X) : Sch -> BoolElt
HasPointsOverExtension(X,L) : Sch,Rng -> BoolElt
Returns false if and only if all points in the support of the scheme X over an algebraic closure of its base field are already defined over its current base field, or all lie in the point set X(L) if the second argument L is given. This intrinsic is most useful when trying to decide whether or not to make an extension of the base field of X to reveal non-rational points. The base field of X does not need to be a finite field.
Degree(Z) : Clstr -> RngIntElt
The degree of the cluster Z. If Z is reduced, this is equal to the maximum number of points in the support over Z over some extension of its base ring.

Example Scheme_cluster-degree5 (H119E17)

In this example we intersect a pair of plane curves. (Note that much more specialised machinery for working with curves is available in Chapter ALGEBRAIC CURVES.) First we define two curves and find their points of intersection over the base field. The degree of the cluster Z is the usual numerical intersection number of the curves C and D. Here we are more interested in finding exactly those points that lie in the intersection.
> k := FiniteField(5);
> P<x,y,z> := ProjectiveSpace(k,2);
> C := Scheme(P,x^3 + y^3 - z^3);
> D := Scheme(P,x^2 + y^2 - z^2);
> Z := Intersection(C,D);
> IsCluster(Z);
true
> Degree(Z);
6
> RationalPoints(Z);
{ (1 : 0 : 1), (0 : 1 : 1) }
> HasPointsOverExtension(Z);
true
If C and D were rather general, that is, if Z was reduced, then we would expect 6 points in their intersection. We cannot expect that here, but the final line above does confirm that we have not yet seen all the points of intersection. We allow Magma to compute directly over a splitting field.
> PointsOverSplittingField(Z);
{ (0 : 1 : 1), ($.1^14 : $.1^22 : 1), ($.1^22 : $.1^14 : 1), (1 : 0 : 1) }
> L<w> := Ring(Universe($1));
> L;
Finite field of size 5^2
> PointsOverSplittingField(Z);
{ (0 : 1 : 1), (w^14 : w^22 : 1), (w^22 : w^14 : 1), (1 : 0 : 1) }
In this case we see that the support is not six points but only four.
V2.28, 13 July 2023