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 \(d\)th 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 \(M_0\) and \(N_0\), this function returns a sheaf homomorphism from \(S\) to \(T\). Here \(M_0\) is one of the defining, maximal, or global section modules of \(S\) and \(N_0\) 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 \({{\cal O}_X}\)-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) \leftarrow T\) rather than from \(S \leftarrow T(d)\).

Expand(hms): SeqEnum[ShfHom] -> ShfHom

If \(hms = [h_1,\ldots,h_n]\) is a sequence of sheaf homomorphisms, then this function returns the composition of homomorphisms \(h_1 * h_2 * \ldots h_n\). The domain of \(h_2\) must be the codomain of \(h_1\) 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.