Usage:
<cotan ideal Omega
This script sets Omega to the graded module
representing the cotangent sheaf of the
variety defined by the given ideal.
Parameters:
ideal = 1xn matrix
Output values:
Omega = module over the base ring of ideal
The matrix Omega returned is actually a presentation
over the polynomial ring of the module
coker I/I^2 --> OmegaP,
where I is the given ideal, in the polynomial
ring R, and OmegaP is the module corresponding
to the cotangent sheaf of the ambient projective
space, restricted to the subscheme Z(I). OmegaP
is computed as the kernel of the map
(R/I)(-1)^(n) --> R/I,
where n is the number of variables of R,
so it is a module of depth 2.
One would really like to compute the module
\sum H^0( Omega(n) ) directly here. Of course it can be
obtained from the computed Omega by using
<cohomology 0 Omega j Omega'
but one actually has the desired module already in
some cases:
If I is a prime then I^2 is primary iff the
map I/I^2 --> OmegaP is a
monomorphism. If this is satisfied and R/I has
depth >=1, then (sinced OmegaP then has depth >=1) the
computed module will have depth >= 2 if depth I/I^2 >= 3,
and depth >= 1 if depth I/I^2 >= 2.
Thus if I is a complete intersection, and
depth R/I >= 3 (resp 2) then depth Omega >= 2 (resp 1).
Caveats:
This script must be modified to work directly in the
multihomogeneous case (subvariety of Pr x Ps...);
there one computes OmegaP as the
kernel of the direct sum of the the maps corresponding
to the different sets of variables. See the script
cotan_bihom form the bihomogeneous case