Basic Constructions

The following functions give some basic constructions on sheaves.

TensorProduct(S, T) : ShfCoh, ShfCoh -> ShfCoh
    Maximize: BoolElt                   Default: false
TensorPower(S, n) : ShfCoh, RngIntElt -> ShfCoh
    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.

Dual(S) : ShfCoh -> ShfCoh
For the sheaf S on a scheme X, the function returns the dual sheaf (Hom)OX(S, OX).
SheafHoms(S, T) : ShfCoh, ShfCoh -> ShfCoh, Map
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.

DirectSum(S, T) : ShfCoh, ShfCoh -> ShfCoh
For S and T sheaves on the same scheme X, this function returns the sheaf direct sum S direct-sum T.
Restriction(S, Y) : ShfCoh, Sch -> ShfCoh
    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).

Example Sheaf_cons_exs (H120E3)

We look at the well-known example of a ruling L on a (singular) projective quadric cone X in P3. We find the associated invertible sheaf OX(L) using the DivisorToSheaf intrinsic. The tensor square of this sheaf is OX(2L) which is just isomorphic to the OX(1) Serre twist of the structure sheaf, as 2L is a hyperplane section. We verify this by getting the tensor and inspection. Of course we need to saturate the result, illustrating that the basic tensor power of maximal modules usually does not result in a maximal module.
> 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]
V2.28, 13 July 2023