Sheaf Homomorphisms

This section describes some basic functionality for homomorphisms between sheaves defined on the same scheme. A sheaf homomorphism is represented by a module homomorphism between representing modules (defining, maximal or global section modules) for the two sheaves. Strictly, only (degree 0) homomorphisms that preserve the module gradings should be allowed but, for flexibility, we allow "homogeneous" homomorphisms that uniformly shift the grading by d and should be thought of as sheaf homomorphisms from the domain sheaf to the dth Serre twist of the codomain sheaf. We then say that the homomorphism is of degree d as for module homomorphisms.

There are some basic constructors and accessor functions, a function to "expand" a chain of homomorphisms to a single homomorphism and image, kernel and cokernel functions. The type of a sheaf homomorphism is ShfHom. Note that this is NOT a Map subtype, so that a sheaf homomorphism doesn't automatically inherit all of the usual map properties.

SheafHomomorphism(S, T, h) : ShfCoh, ShfCoh, ModMPolHom -> ShfHom
Given sheaves S and T on the same scheme X and a module homomorphism h between M0 and N0, this function returns a sheaf homomorphism from S to T. Here M0 is one of the defining, maximal or global section modules of S and N0 is a similar module for T. The homomorphism h must be a homogeneous module homomorphism as returned by IsHomogeneous and if d is its degree then the homomorphism returned is really one from S to T(d) in the category of OX-sheaves.

For the construction of sheaf homomorphisms see also SheafHoms.

Domain(f) : ShfHom -> ShfCoh
The domain of the sheaf homomorphism f.
Codomain(f) : ShfHom -> ShfCoh
The codomain of the sheaf homomorphism f.
Degree(f) : ShfHom -> RngIntElt
The degree of the sheaf homomorphism f as defined in the introduction to this section.
ModuleHomomorphism(f) : ShfHom -> ModMPolHom
The underlying homogeneous graded module homomorphism of the sheaf homomorphism f.
Kernel(f) : ShfHom -> ShfCoh, ShfHom
Given a sheaf homomorphism f, this function returns the kernel of f and its inclusion homomorphism into the domain of f.
Image(f) : ShfHom -> ShfCoh, ShfHom, ShfHom
Given a sheaf f, this function returns the image, I, of f and two sheaf homomorphisms g and h. If f has degree d and S, T are its domain and codomain, then I is a subsheaf of T(d). The second return value g is the restriction of f from S to I and the third return value h is the inclusion of I in T(d), so that g also has degree d and h has degree 0.
Cokernel(f) : ShfHom -> ShfCoh, ShfHom
Given a sheaf homomorphism f, this function returns the cokernel of f and also the quotient homomorphism from the codomain to it.

Strictly speaking, if f has degree d and S, T are its domain and codomain, here we are taking f to be a homomorphism from S(d) <- T rather than from S <- T(d).

Expand(hms) : SeqEnum[ShfHom] -> ShfHom
If hms = [h1, ..., hn] is a sequence of sheaf homomorphisms, then this function returns the composition of homomorphisms h1 * h2 * ... hn. The domain of h2 must be the codomain of h1 etc. and the stronger condition that the underlying module homomorphisms must be composable also holds. So the domain of ModuleHomomorphism(h2) must be the codomain of ModuleHomomorphism(h1) etc.
V2.28, 13 July 2023