This subsection describes tests for several important properties of coherent
sheaves. It contains an isomorphism test that, combined with DivisorToSheaf,
can be used as a test for linear equivalence of Cartier divisors.
Given a sheaf S on ordinary projective scheme X, this function returns
true if and only if S is a locally free sheaf on X of constant rank
and, if so, also returns its rank.
Our original implementation was very fast but unfortunately incorrect!
We have modified it to the algorithm described below which uses an
"{étale stratification" of X.
The more straightforward method
uses Fitting ideals of the module M (or Mmax) of S. If the
possible rank is d (as determined from Hilbert polynomials),
it is required to check that the saturation of the dth Fitting
ideal is the full ring and that the (d - 1)th lies in the
saturated ideal of X. This is now the default method, but can be
extremely slow and use a large amount of memory. Our alternative
method is much slower than it was but we still find that it can be much faster than
the Fitting ideal method for a low dimensional X in a high dimensional ambient
and a sheaf S whose (maximal) module has a presentation with a
reasonably large minimal number of both generators and relations.
To use the alternative method, the user can set the UseFitting parameter to false.
For this method, it is assumed that X is equidimensional (all of its primary components have
the same dimension), (locally) Cohen-Macaulay and connected. Magma
does not check these conditions. The alternative method is described below.
The equidimensional and locally Cohen-Macaulay assumptions imply that
X is faithfully flat over P0 = Proj(R0) for a Noether normalisation
R0 of the coordinate ring of X. Standard flatness
properties mean that S being locally free over X implies that it is locally
free as a sheaf over P0, which is just a full projective space.
Serre's criterion (see [Ser55]) states that the latter is true if
and only if all intermediate cohomology rings Hi(P0, S(q)) vanish for
q ll 0. If Mmax is the maximal graded module of S, this translates
to all intermediate Ext(Mmax, R0) R0-modules being finite length,
which in turn translates to the dual complex to the minimal free resolution
of Mmax as an R0-module, having finite-length homology groups at all
intermediate places. Rather than actually computing homology modules,
we can further translate this condition into a number of equality tests for Hilbert
polynomials of cokernels of the maps between free modules in the dual complex. This
operation seems to be fairly fast and efficient in practice.
The above gives a necessary condition for local freeness over X (and gives the rank)
but it is only sufficient over the Zariski open subset of X over which X -> P0 is unramified. We have adapted it to be applied inductively over a chain of
closed subschemes of X, which is what we refer to as the {étale stratification
of X. At each level, we have a subscheme Y of X and a possibly empty
collection of polynomials {Fi} which are non-zero divisors on Y and such that
a chosen Noether normalisation of Y is unramified (equivalently, {étale)
outside of the subschemes Yi defined by Fi adjoined to the equations of Y.
These subschemes lie at the next level down. The conditions imply that all of the
Yi are equidimensional and Cohen-Macaulay. For Yi of positive dimension,
we apply the above test to the restriction of S to Yi, checking that the
rank is the same as the rank determined for X at the top level if the test is
passed and also that Fi is not a zero-divisor on the module of the restricted sheaf.
For Yi of dimension 0, we perform a more direct test.
The overall algorithm generally takes much longer than just applying the main test
to X. The {étale stratification can take some time to compute when
X lies in higher dimensional ambients. However, the main problem is that
the degrees of the Yi increase as we go down the chain (the subscheme
defined by Fi has the degree of Yi multiplied by the degree of Fi
as its degree) and in practice (mainly working with surfaces X), the
most time is taken in the bottom level checks on high degree zero-dimensional
subschemes.
Once computed, the {étale stratification is stored with X, so does not
need to be recomputed for tests on other sheaves.
However, it relies on finding Noether normalisations at each level that are
generically unramified, i.e. separable. Currently we do not check the condition
and it can fail in small positive characteristic leading to a crash or wrong
results.
For S and T coherent sheaves on the same base scheme X, this function
returns true if and only if S is isomorphic to T or (for the second
intrinsic) to a Serre twist T(d) of T. In either case, an isomorphism is
returned, if one exists and for the second intrinsic, the twist d is also
returned as the second return value (so the isomorphism is between S and T(d)).
For the implementation, we first do a quick Hilbert polynomial check and then a
Betti number check for the maximal modules Mmax and Nmax of S and T.
This gives necessary conditions for an isomorphism and the possible d in the
"with twist" case. Then we look for an isomorphism in the finite dimensional
space of homomorphisms between Mmax and Nmax. We could have chosen to
work with the homomorphisms between the truncated modules with gradings greater
than or equal to N, for some N greater than or equal to the regularity of
any defining modules for the two sheaves, but these have much larger presentations
in general so the computation of homomorphisms is slower.
To look for isomorphisms, we look at the "zero degree" subblocks of the matrices
giving a basis to the space of all homomorphisms. This reduces the problem to
determining whether there is an invertible matrix in a space of n x n matrices
over the base field. This is known to be a difficult problem in general and
currently our implementation is rather weak at this point. We hope to improve
it for future releases.
Given a sheaf S on an ordinary projective scheme X, this function returns
true if and only if the maximal graded module Mmax of S is a
Cohen-Macaulay module over the coordinate ring of X.
A scheme X is called arithmetically Cohen-Macaulay if and only if its
coordinate ring is a Cohen-Macaulay ring. This is then true if and only if
its coordinate ring is equal to the maximal module of OX and the
intrinsic returns true for OX.
This is a fairly straightforward computation once Mmax has been determined.
If we already know the structure of Mmax as a module over a Noether
normalisation of the coordinate ring of X, it is an immediate freeness
check. Otherwise it is a straightforward depth calculation from a minimal
free resolution of Mmax as a graded module over the coordinate ring of
the ambient of X.