The following functions give some basic constructions on sheaves.
Maximize: BoolElt Default: false
Maximize: BoolElt Default: true
The first intrinsic gives the tensor product (over OX) of two sheaves on the same scheme X. The second gives the nth tensor power of S if n > 0, the ( - n)th tensor power of the dual (see below) of S if n < 0 and the structure sheaf OX if n=0.Defining modules for these constructions are taken as the appropriate tensor products of modules for the constituent sheaves when the parameter Maximize is false. The user should note that this is the archetypal case where the module constructed to define the resulting sheaf can be far from maximal, even when the defining modules of S and T are maximal. The rank of the presentation of the tensor power of a module rises rapidly with n. Thus, it is usually a good idea to set Maximize to true, which means that the maximal module of the result is computed and also used as its defining module.
For the sheaf S on a scheme X, the function returns the dual sheaf (Hom)OX(S, OX).
For S and T sheaves on the same scheme X, the function returns the sheaf H = (Hom)OX(S, T). The module defining H is (Hom)(Mmax, Nmax), where Mmax and Nmax are the maximal modules of S and T. This module, MH, is the maximal module of H.Also returned is a map that takes a homogeneous element of MH (which can be recovered with Module(H) or FullModule(H)) of degree d to the sheaf homomorphism of degree d that it represents (see the next section for information about sheaf homomorphisms). All sheaf homomorphisms can be obtained this way.
For S and T sheaves on the same scheme X, this function returns the sheaf direct sum S direct-sum T.
Check: BoolElt Default: true
Given a sheaf S on a scheme X and a subscheme Y of X, the function returns the restriction of S to Y. A check that Y is a subscheme of X will be performed only if the parameter Check is true (the default).
> P<x,y,z,t> := ProjectiveSpace(Rationals(),3); > R := CoordinateRing(P); > X := Scheme(P,x*y-z^2); // singular projective quadric > IL := ideal<R|z,y>; // line y=z=0 on X > OL := DivisorToSheaf(X,IL); // associated sheaf O(L)We first make sure that OL is saturated.
> SaturateSheaf(~OL); > Module(OL); Graded Module R^2/<relations> Relations: [ y, -z], [ z, -x] > O2L := TensorProduct(OL,OL); // or TensorPower(OL,2) > Module(O2L); Graded Module R^4/<relations> Relations: [ y, 0, -z, 0], [ 0, y, 0, -z], [ z, 0, -x, 0], [ 0, z, 0, -x], [ y, -z, 0, 0], [ z, -x, 0, 0], [ 0, 0, y, -z], [ 0, 0, z, -x]Finally, we get the maximum module -- just that of OX(1)!
> FullModule(O2L); Reduced Module R^1/<relations> with grading [-1] Relations: [x*y - z^2]