Constructing Schemes

As shown in the examples in the introduction to this chapter, schemes are defined inside some ambient space, either affine or projective space, by a collection of polynomials from the coordinate ring associated with that space. Schemes may also be defined inside other schemes using polynomials from the coordinate ring of the bigger scheme or polynomials from the ambient space.

There is very little difference between creation methods for affine and projective schemes. Of course, in the projective case, the defining polynomials are checked for homogeneity or if an ideal is used, a check is made that its basis contains only homogeneous elements. Otherwise, the only check made at the time of creation is that the polynomials used to define the scheme really do lie in, or are coerced automatically into, the coordinate ring of the chosen ambient space.

Saturation:

As mentioned in the introduction, for schemes in projective spaces, there is a largest ideal which defines that scheme. Technically speaking, if I is any homogeneous defining ideal, this maximal one can be obtained from I by removing the primary components whose radical contains a certain redundant ideal of the ambient coordinate ring. This redundant ideal defines sets of points that are illegal projectively. For example, in ordinary projective space, there is one illegal point with all coordinates 0 and this is defined by the redundant ideal (x1, ..., xn). The operation to remove these primary components is ideal saturation of I by the redundant ideal, so we refer to the maximal defining ideal as saturated and a scheme X as saturated if its current ideal (as returned by DefiningIdeal(X)) is known to be the maximal one.

There are several basic functions that rely on the defining ideal of a scheme X being saturated. The most important are IsReduced, IsIrreducible, Prime/Primary Components, eq for any projective schemes and Dimension, f(X) (map images) for multi-graded projective schemes.

As the process of saturation may be quite expensive in higher dimensional ambient spaces, the ideal of X is not saturated until the saturation property is required and once saturation has been performed, this is recorded internally. Additionally, scheme constructions like Union will automatically produce a result marked as saturated if that can be deduced from the construction method and the saturation state of the argument schemes. In particular, any ambient or scheme defined by a single equation in an ambient is marked as saturated on construction. The ProjectiveClosure of an affine scheme is also saturated by construction.

Furthermore, for all of the basic Scheme and Curve constructors where saturation of the ideal generated by the defining equations is not automatic, there is a Saturated parameter that the user can set to be true to mark the initial defining ideal as saturated without further checking.

Scheme(X,f) : Sch,RngMPolElt -> Sch
Scheme(X,F) : Sch,SeqEnum -> Sch
Scheme(X,I) : Sch,RngMPol -> Sch
Scheme(X,Q) : Sch,RngMPolRes -> Sch
    Nonsingular: BoolElt                Default: false
    Reduced: BoolElt                    Default: false
    Irreducible: BoolElt                Default: false
    GeometricallyIrreducible: BoolElt   Default: false
    Saturated: BoolElt                  Default: false
Create the scheme inside the scheme X defined by the vanishing of the polynomial f, or the sequence of polynomials F, or the ideal of polynomials I, or the ideal in the denominator of the quotient ring Q = R/I. In each case, the polynomials must be elements of the coordinate ring of A or automatically coercible into it.

If any of the optional parameters are set to true, Magma will assume without checking that the scheme has the corresponding property. This may enable subsequent calculations to be done faster; note that if the assumption is not correct, arbitrary misbehaviour may result. The option Saturated only makes sense when the ambient is projective, and refers to the defining ideal rather than the scheme.

Cluster(X,f) : Sch,RngMPolElt -> Clstr
Cluster(X,F) : Sch,SeqEnum -> Clstr
Cluster(X,I) : Sch,RngMPol -> Clstr
Cluster(X,Q) : Sch,RngMPolRes -> Clstr
    Saturated: BoolElt                  Default: false
Create the 0-dimensional scheme inside the scheme X defined by the vanishing of the given polynomials. These can be given as the single polynomial f, or the sequence of polynomials F, or the ideal of polynomials I, or the ideal in the denominator of the quotient ring Q = R/I. In each case, the polynomials must be elements of the coordinate ring of X or automatically coercible into it.

Example Scheme_schemes-creation (H119E11)

In this example we simply create three schemes. The first is an ambient space A, the affine plane, while the others are subschemes of A.
> A<x,y,z> := AffineSpace(Rationals(),3);
> X := Scheme(A,x-y);
> X;
Scheme over Rational Field defined by
x - y
> Y := Scheme(X,[x^2 - z^3,y^3 - z^4]);
> Y;
Scheme over Rational Field defined by
x^2 - z^3
y^3 - z^4
x - y
> Ambient(Y) eq A;
true
Note that since Y was created as a subscheme of X it inherits the equations of X. The ambient space of Y is still considered to be A.
Spec(R) : RngMPolRes -> Sch,Aff
The scheme (Spec)(R) associated to the affine algebra R. A new affine space Spec(Generic(R)) will be created as the ambient space of this scheme.
Proj(R) : RngMPolRes -> Sch,Prj
The scheme (Proj)(R) associated to the affine algebra R which will be interpreted with its grading (which will be the standard grading by degree if no other has been assigned). A new projective space Proj(Generic(R)) will be created as the ambient space of this scheme.
EmptyScheme(X) : Sch -> Sch
EmptySubscheme(X) : Sch -> Sch, MapSch
The subscheme of X defined, for an affine scheme X by the trivial polynomial 1, or by maximal ideal (x1, ..., xn) for a projective scheme X. The returned scheme is marked as saturated.
X meet Y : Sch,Sch -> Sch
Intersection(X,Y) : Sch,Sch -> Sch
The intersection of schemes X and Y in their common ambient space. This simply concatenates their defining equations without testing for emptiness.
X join Y : Sch,Sch -> Sch
Union(X,Y) : Sch,Sch -> Sch
The union of schemes X and Y in their common ambient space. This is formed by creating the intersection of their defining ideals which is done using a Gröbner basis computation. If both X and Y are saturated then the result is as well and is marked as such.
& join S : [Sch] -> Sch
The union of the schemes in the sequence S in their common ambient space.
Difference(X, Y) : Sch, Sch -> Sch
Returns the scheme that is obtained by taking the closure of the result of removing {(X meet Y)} from the scheme X, counting multiplicity. The ideal of the result will be the colon ideal of the ideal of X and the ideal of the scheme Y. If X is saturated then the result is as well and is marked as such.
Complement(X, Y) : Sch, Sch -> Sch
This is like Difference except that all points of {(X meet Y)} are removed from scheme X, irrespective of multiplicity, and the closure is returned. It corresponds to saturation rather than colon ideal.If X is saturated then the result is as well and is marked as such.
RemoveLinearRelations(X) : Sch -> Sch, MapIsoSch
Convenience function that takes linear relations between variables on X and uses them to eliminate variables. The intrinsic is currently only available for X in ordinary projective space. The result is scheme Y that lies in a lower dimensional projective space that can be identified with the smallest linear subspace of the ambient of X that contains X. Y is returned along with the (linear) scheme isomorphism from X to Y.
Blowup(X,Y) : Sch, Sch -> Sch, MapSch
Blowup(X,p) : Sch, Pt -> Sch, MapSch
    Ordinary: BoolElt                   Default: true
    Xirred: BoolElt                     Default: true
The first intrinsic constructs the scheme obtained from blowing up subscheme Y of scheme X (see Section 7, Chapter II of [Har77]). The second is a user convenience special case that blows up the subscheme consisting of a point p (and all of its conjugates if it is not defined over the base field) in a pointset X(K).

Currently X must lie in an ambient that is affine, ordinary projective or product projective. If parameter Ordinary is true (the default), and X is projective, then the result of the blow-up is embedded in ordinary projective space via the Segre embedding. Otherwise, the result will lie in an ambient that is the direct product of the ambient of X and an ordinary projective space.

The final saturation of the blowup procedure can be performed more efficiently when the scheme X is known to be irreducible. Since this is the commonest case for users, it is assumed by default. If it is not known, the parameter Xirred should be set to false. Note that if X is not irreducible, the intrinsic can actually fail to perform the computation in which case an appropriate error message is given. Technically, for this implementation, the success relies on finding a relative set of generators for the ideal of Y modulo the ideal of X which give non zero-divisors on X.

The second return value in each case is the blow-down map from the blow-up back to X.

An example is given below. For another example, see the second minimal model example following the description of CanonicalCoordinateIdeal in the chapter on algebraic surfaces.

The implementation makes use of the ReesIdeal intrinsic.

LocalBlowUp(X,Y) : Sch, Sch -> SeqEnum
A useful variant of the above blow up intrinsics is this local version that does not globally embed the result but returns a sequence of affine patches that cover the blow-up. Here X must be affine and Y, as usual is the subscheme to be blown up. If X is not a variety, it is assumed that the defining polynomials of Y that do not lie in the defining ideal of X, are non-zero divisors modulo that ideal. The return value is a sequence of pairs <S, mp> where S is an affine scheme which is an open patch of (i.e. it is Zariski-open in) the complete blow-up and mp is the blow down map from S back to X. Here, the birational blow-down maps come with their inverses.

Example Scheme_remove (H119E12)

The behaviour of Difference is shown.
> A2<x,y>:=AffineSpace(Rationals(),2);
> C:=Scheme(A2,(x*y)); //union of the x- and y-axis
> X2:=Scheme(A2,x^2);  //y-axis with double multiplicity
> Difference(X2,C); //y-axis with mult. 1.
Scheme over Rational Field defined by
x
> O:=Scheme(A2,[x,y]);
> Difference(C,O);
Scheme over Rational Field defined by
x*y
Removing "ambient" spaces is tricky: Everything is removed.
> Difference(C,A2);
Scheme over Rational Field defined by
1
> A3<x,y,z>:= AffineSpace(Rationals(),3);
> C:=Scheme(A3,Ideal([x,z])*Ideal([y,z])); //again, union of x- and y-axis
> Z:=Scheme(A3,[z]); //the x,y plane
> Difference(C,Z);
Scheme over Rational Field defined by
x,
y,
z
As one can see, the Z-plane is removed with multiplicities: all that's left is the origin, which has multiplicity 2 in C and only multiplicity 1 in Z.

Example Scheme_sch-blowup-ex (H119E13)

We give an example of blowing-up a line (isomorphic to (P)1) in projective 3-space (P)3. The inverse image of the line in the blow-up X is isomorphic to the ruled surface (P)1 x (P)1 which is embedded in X as a quadric cone.
> P3<x,y,z,t> := ProjectiveSpace(Rationals(),3);
> L := Scheme(P3,[z,t]); //the line to be blown up
> X,mp := Blowup(P3,L);
> P<[a]> := Ambient(X); X;
Scheme over Rational Field defined by
a[5] - a[8],
-a[6]*a[7] + a[5]*a[8],
-a[4]*a[7] + a[3]*a[8],
-a[2]*a[7] + a[1]*a[8],
-a[4]*a[5] + a[3]*a[6],
-a[2]*a[5] + a[1]*a[6],
-a[2]*a[3] + a[1]*a[4]
> Y := L @@ mp;  // the inverse image of L
> Dimension(Y);
2
> MinimalBasis(Ideal(Y));
[
    a[8],
    a[7],
    a[6],
    a[5],
    a[2]*a[3] - a[1]*a[4]
]
Saturate(~X) : Sch ->
If the scheme X is projective and is not already saturated, saturate its defining ideal.
AssignNames(~X,N) : Sch,SeqEnum ->
Assign the strings in the sequence N to the ambient coordinate functions of the scheme X.
X . i : Sch,RngIntElt -> RngMPolElt
Name(X,i) : Sch,RngIntElt -> RngMPolElt
The ith coordinate function of the ambient space of the scheme X. The dot notation X.i may also be used.
V2.28, 13 July 2023