|
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
As stated at the start of the chapter, one of our main initial aims in introducing
sheaf machinery has been to provide a way to compute the (rational) maps associated
to invertible sheaves in reasonable generality (see Section 7, Chapter 2 of
[Har77]) and similarly for effective Cartier divisors (as closed
subschemes) in the form of the map or their Riemann-Roch spaces.
This section describes the top level intrinsics
for this. We hope to add further functionality for the correspondence between
divisors and invertible sheaves in future releases.
S should be an invertible sheaf on scheme X. For efficiency, this is not
checked here, although if the user is unsure whether a potential S actually
is invertible (ie, locally free of rank one) he can use the IsLocallyFree
intrinsic.
The rational map from X into projective space associated to S is returned.
This can be thought of as X -> Proj(R) -> Prjr where
R is the graded
k-subalgebra of the graded ring direct-sum n ≥0 H0(X, S tensor n) generated
by the weight 1 subspace H0(X, S) - the space of global sections of S - and
the map to Prjr, where r + 1 is the dimension of the space of global sections,
is that induced by choosing a basis for the global sections. The divisor
map, as usual, is only unique to a linear change of coordinates of the codomain.
The map is defined on the open subscheme of X where S is generated by global
sections. Also returned is the image of the map on X.
In most cases, the map returned is a graph map of type MapSchGrph (see
Scheme Graph Maps). This computation naturally computes the graph of the map and
in complicated situations, it is not particularly efficient to convert this
to a usual MapSch which will be defined by very nasty, high degree polynomials
(often with a large base scheme) without some further specialised reduction routine.
The user can however convert to a MapSch with SchemeGraphMapToSchemeMap.
In cases when the sheaf has been constructed from a divisor via the
DivisorToSheaf intrinsic below with the GetMax parameter true, so
that a Riemann-Roch space has been stored, a traditional MapSch is returned.
If in doubt, the user can distinguish using the Type intrinsic.
The major stage of the computation is the determination of the graph of the
map. An ideal defining the graph can be written down directly from the relation
matrix of a minimal presentation of the global section submodule M0 of S, and
this ideal then only needs to be saturated with respect to an appropriate domain
variable. M0 is computed (and stored) as described earlier in the chapter.
DivisorToSheaf(X, I) : Sch, RngMPol -> ShfCoh
GetMax: BoolElt Default: true
RiemannRochBasis(X, I) : Sch, RngMPol -> SeqEnum, RngMPolElt, ShfCoh
X is an ordinary, projective scheme and I is an ideal of the coordinate ring
of the ambient of X that defines a subscheme D of X that is an effective Cartier
(locally principal) divisor of X. This means that D is purely of codimension 1 in X and that it is everywhere locally defined by a single equation. Again for efficiency, the
computationally difficult checks to show that D is locally principal within X are
not carried out. If X is a non-singular variety, then a closed subscheme of codimension
1 is automatically Cartier.
The function computes and returns the invertible sheaf corresponding to the divisor
class of D, commonly denoted ( L)(D) (see Section 6, Chapter 2 of
[Har77]). If GetMax is true, then the maximal module of ( L)(D)
is computed and an explicit basis for the Riemann-Roch space L(D) is computed and
stored along the way. This basis is of the form [G1/G, ..., Gn/G] where G and
the Gi are homogeneous polynomials of some degree d on the ambient of X and the
Gi/G are the usual rational functions restricted to X.
If instead of DivisorToSheaf, RiemannRochBasis is called, then the above
procedure is carried out and the basis of the Riemann Roch space is returned as
the sequence of numerators [G1, ..., Gn] and the denominator G, along with the
sheaf ( L)(D). If ( L)(D) has been computed from DivisorToSheaf and
returned as S, then the RiemannRoch basis can be recoverd at a later stage
from the attribute of S, rr_space. This attribute, if assigned, contains
a pair consisting of the above sequence of numerators and the denominator.
The algorithm used is based on the following observation. If we choose r > 0 such
that I contains a homogeneous polynomial G of degree r that doesn't lie in the
ideal of X, IX (which is a proper subideal of I), then there is a "complementary"
divisor E of X such that rH ~D + E, where H is a hyperplane divisor of
X. Then ( L)(D) simeq ( L)( - E)(r) and ( L)( - E) is represented
by the module IE/IX, where IE is the ideal of E, a subscheme of X (see
Prop 6.18 of the above reference). Once a suitable G is found, IE is computed
via a few ColonIdeal and Saturation calls. If the GetMax option is
on, r is chosen large enough that H1(IX(m)), m ≥r vanishes,
which guarantees that we
end up with a maximal representing module and can get a full basis of RiemannRoch
numerators with G as the denominator.
As a simple example, we consider a degree 3 rational scroll in Prj4. This
is a ruled surface that contains a family of disjoint lines. If l is a line
in the family, then the divisor map for ( L)(l) is a map to the projective
line, the fibres of which are the lines of the family. We take such a scroll X
and line l and get the Riemann-Roch space L(l) and the divisor map down to
P1.
> P4<a,b,c,d,e> := ProjectiveSpace(Rationals(),4);
> X := Scheme(P4,[a*b - c^2, a*d - c*e, c*d - b*e]);
> Il := ideal<CoordinateRing(P4)|[a,c,e]>; // ideal of l
> rr_seq,G, Sl := RiemannRochBasis(X,Il);
> rr_seq; G;
[
d,
e
]
e
> // 1 and d/e are a basis for rational functions in L(l)
> fib_mp := DivisorMap(Sl);
> fib_mp;
Mapping from: Sch: X to Projective Space of dimension 1
Variables: $.1, $.2
with equations : d
e
> // here fib_mp is not a graph map and is not maximally defined.
> // Extend to make it so.
> fib_mp := Extend(fib_mp);
> // fibres are lines
> (Codomain(fib_mp)![1,0])@@fib_mp;
Scheme over Rational Field defined by
a,
c,
e,
a*b - c^2,
a*d - c*e,
c*d - b*e
> (Codomain(fib_mp)![0,1])@@fib_mp;
c,
b,
d,
a*b - c^2,
a*d - c*e,
c*d - b*e
As a second example, we consider the degree 3 Del Pezzo surface example from the Del Pezzo chapter. There we mapped it to a degree 6 Del Pezzo by blowing down 3 disjoint lines in
an explicit fashion. We do the same thing here using sheaf calls.
First we get the surface X3 and the union of the 3 lines L123
> R3<x,y,z,t> := PolynomialRing(Rationals(),4,"grevlex");
> P3 := Proj(R3);
> //equation of the degree 3 surface:
> F := -x^2*z + x*z^2 - y*z^2 + x^2*t - y^2*t - y*z*t + x*t^2 + y*t^2;
> X3 := Scheme(P3,F);
> // get the ideal defing the union of the 3 lines:
> I1 := ideal<R3|[x,y]>; // line 1 L1
> I2 := ideal<R3|[z,t]>; // line 2 L2
> I3 := ideal<R3|[x-z,y-t]>; //line 3 L3
> I := I1*I2*I3; // (non-saturated) ideal of L1+L2+L3 = L123
Now we blow down to get the degree 6 Del Pezzo in Prj6. The divisor we
need for the map is H + L123 where H is a hyperplane section. We get this
simply by twisting the sheaf corresponding to L123 once
> S123 := DivisorToSheaf(X3,I);
> H6 := Twist(S123,1); // sheaf of H+L123
> mp,X := DivisorMap(H6);
> X;
Scheme over Rational Field defined by
y[1]*y[2] - y[2]*y[3] - y[4]*y[5] + y[1]*y[6] + 3*y[2]*y[6] - y[4]*y[6] + y[6]^2
+ y[1]*y[7] + 2*y[2]*y[7] - y[4]*y[7] - y[5]*y[7] + 3*y[6]*y[7],
y[2]^2 - y[2]*y[3] + 2*y[2]*y[6] + y[6]^2 + 2*y[2]*y[7] + 3*y[6]*y[7],
y[1]*y[3] - y[2]*y[3] + 2*y[2]*y[6] - y[5]*y[6] + y[6]^2 + y[2]*y[7] - y[4]*y[7]
+ 3*y[6]*y[7],
y[2]*y[4] - y[2]*y[6] + y[4]*y[6] + y[4]*y[7] + y[5]*y[7],
y[3]*y[4] - y[2]*y[6] - y[6]^2 - y[6]*y[7] + y[7]^2,
y[4]^2 - y[4]*y[6] + y[5]*y[6] + y[1]*y[7] - y[2]*y[7] + y[4]*y[7] + y[5]*y[7],
y[2]*y[5] - y[4]*y[6] + y[5]*y[6] - y[2]*y[7] + y[4]*y[7] + y[5]*y[7],
y[3]*y[5] - y[6]^2 - y[2]*y[7] - y[7]^2,
y[5]^2 - y[1]*y[6] + y[2]*y[6] - 2*y[4]*y[6] + y[5]*y[6] + y[1]*y[7] - y[2]*y[7]
> Dimension(X); Degree(X);
2
6
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
|