This section contains examples of the use of the scheme machinery that are broader than those brief illustrations of intrinsics in the main text. They show how these functions can be used in collaboration with one another to build computer experiments which back up mathematical intuition.
This example constructs a cluster as the intersection of two twisted cubics in space. It uses a pair of curves whose equations are very closely related. Their union admits an automorphism which interchanges the two curves, fixing the cluster.
> k := Rationals(); > P<x,y,z,t> := ProjectiveSpace(k,3); > M1 := Matrix(CoordinateRing(P),2,3,[y,t,x,t,x,z]); > M2 := Matrix(CoordinateRing(P),2,3,[y,x,t,x,t,z]); > C1 := Scheme(P,Minors(M1,2)); > C2 := Scheme(P,Minors(M2,2)); > Z := Intersection(C1,C2); > MinimalBasis(Z); [ x*t - y*z, x*z - t^2, x*y - t^2, -x^2 + z*t, -x^2 + y*t ]Anyone knowing about Pfaffians can have fun trying to realise these equations as the five maximal Pfaffians of a skew-symmetric 5 x 5 matrix. Although this example is a bit degenerate, it is reasonable to think of it as a hyperplane section of an elliptic curve of degree 5 (living in P4) so the ideal of equations will be Gorenstein. Given the Buchsbaum--Eisenbud structure theorem for Gorenstein codimension 3 rings, we are not surprised to see this Pfaffian format. In this example we will settle for confirming that this scheme Z is a cluster of degree 5 and finding its support.
> IsCluster(Z); true > Degree(Z); 5 > IsReduced(Z); true > RationalPoints(Z); {@ (1 : 1 : 1 : 1), (0 : 0 : 1 : 0), (0 : 1 : 0 : 0) @} > HasPointsOverExtension(Z); trueAs expected, the scheme Z is zero-dimensional and has degree 5. Since it is reduced, its support will comprise five separate points over some extension of the base field. We locate these points by hand by considering the Gröbner basis of the ideal of Z. The last element of a lexicographical Gröbner basis usually suggests a field extension that is relevant to the scheme. So we extend the base field by roots of this polynomial and look for the support over that field.
> GB := GroebnerBasis(ChangeOrder(Ideal(Z),"lex")); > GB[#GB]; z^3*t - t^4 > L<w> := ext< k | U.1^2 + U.1 + 1 > where U is PolynomialRing(k); > RationalPoints(Z,L); {@ (w : -w - 1 : -w - 1 : 1), (-w - 1 : w : w : 1), (1 : 1 : 1 : 1), (0 : 1 : 0 : 0), (0 : 0 : 1 : 0) @} > HasPointsOverExtension(Z,L); falseThe final line confirms that we have found all the points of Z. That was already clear since Z has degree 5 and we see five points, but in other cases, especially when the cluster is not reduced, it might not be so obvious.
Now we look at the union of the two twisted cubics.
> C := Union(C1,C2); > C; Scheme over Rational Field defined by x^3 - x*y*t - x*z*t + t^3 -x*t + y*zThis curve C is a 2, 3 complete intersection, numerology that is familiar from canonical curves of genus 4. We already know that C is not such a curve since it has two components. Indeed, we already know that these components are nonsingular and meet in five points. Clearly these points must be singular points of C.
> SC := SingularPointsOverSplittingField(C); > SC; { (1 : 1 : 1 : 1), (-r2 - 1 : r2 : r2 : 1), (0 : 0 : 1 : 0), (-r1 - 1 : r1 : r1 : 1), (0 : 1 : 0 : 0) } > Ring(Universe(SC)); Algebraically closed field with 2 variables Defining relations: [ r2^2 + r2 + 1, r1^2 + r1 + 1 ]Magma has automatic Gröbner basis based machinery for working in the algebraic closure of the rationals (the so-called D5 method). Here we see it in action. The roots that we made explicitly when computing with Z are the new symbols r1 and r2 --- they are the two conjugate roots of the quadratic equation list as the `Defining relations'. Since r1not= r2, we see that the singular points really are the points of Z as expected.
From the definition of the matrices M1 and M2 we can see that the union and intersection of C1 and C2 should be invariant under the automorphism of P which exchanges x and t. We realise that automorphism here and confirm what we expect by comparing various ideals.
> phi := iso< P -> P | [t,y,z,x],[t,y,z,x] >; > IsAutomorphism(phi); true > Ideal(C2) eq Ideal(phi(C1)); true > Z eq phi(Z); true > Ideal(Z) eq Ideal(phi(Z)); trueNote that the basic equality test `eq' for schemes returns true in the penultimate line, even though the two arguments were created independently.
The five points of Z obviously have (Sym)5 as their permutation group (or (Sym)2 x (Sym)3 over the rationals). How much of that is realised by automorphisms of the union C? We try to realise some elements of this symmetric group.
> S5 := SymmetricGroup(5); > QL := RationalPoints(Z,L); > rho := S5 ! [ Index(QL,phi(p)) : p in QL ]; > rho; (1, 2)Of course, this permutation is simply the action of the Galois group of L.
> GaloisGroup(L); Permutation group acting on a set of cardinality 2 (1, 2)We make another automorphism: using C explicitly in the constructor ensures that the image of the map is contained in C.
> psi := iso< C -> C | [x,z,y,t],[x,z,y,t] >; > eta := S5 ! [ Index(QL,psi(p)) : p in QL ]; > eta; (4, 5) > G := sub< S5 | rho,eta >; > #G; 4Since these two permutations commute and the small collection of five points is already partitioned by a Galois group action, this example is too simple to use Magma's substantial group theory machinery. But one can imagine at this stage finding complicated elements of G and realising them by compositions of the easily recognised automorphisms ρ and η.
In this example, we construct something that we know is an elliptic curve in space. The point is to realise that within Magma by making a new curve of the right type and understanding the translation between the two types, at least to some degree. Something very similar would also works for the canonical models of curves of genus 4, although one has to take care handling the image of the natural projection.
> P<x,y,z,t> := ProjectiveSpace(Rationals(),3); > X := Scheme(P,[x*y-z*t,x^2 + 2*z^2 - y*t]); > Dimension(X); 1 > IsNonsingular(X); true > p := X ! [0,1,0,0];Next we simply project from this given point p.
> Y,pr,q := ProjectionFromNonsingularPoint(X,p); > bool,C := IsCurve(Y); > bool; true > q := C ! q; > q; (0 : 1 : 0) > Degree(C); 3 > IsNonsingular(C); true > P2<a,b,c> := Ambient(C); > C; Curve over Rational Field defined by a^3 + 2*a*b^2 - b*c^2Since there was a conic (two, in fact) among the equations of the scheme X, the projection from p is necessarily birational to a plane curve. And since p is a nonsingular point, it has a definite rational image point on the projection which is called q above. Since we know that X has genus 1 (as an external fact) and that the projection is birational we already know that the image curve C is the plane elliptic curve we desire. (It is interesting to try this calculation with a curve of higher genus, like the canonical model of a curve of genus 4.)
But we have made no effort to find a good model for C. At this point we can use Magma intrinsics to find a better model for C since we have the rational point q lying on C.
> EllipticCurve(C,q); Elliptic Curve defined by y^2 = x^3 + 32*x over Rational Field Mapping from: Crv: C to Elliptic Curve defined by y^2 = x^3 + 32*x over Rational Field given by a rule Mapping from: Elliptic Curve defined by y^2 = x^3 + 32*x over Rational Field to Crv: C given by a ruleThe result is a very nice model of an elliptic curve in Weierstraß form. The mapping types returned by this function are not yet fully integrated Scheme maps. But this will be added to Magma in due course, after which computations can be done on the good elliptic model and related to the original scheme X.