H=eulerPolynomialTable(M,low,high)
H=eulerPolynomialTable(T,low,high)
H=eulerPolynomialTable H'
If M is a multi-graded module representing a coherent sheaf F on $P^n := P^{n_0} x .. x P^{n_{t-1}}$, the script returns a hash table with entries a => sum_i h^i(F(a))*h^i \in ZZ[h,k], where k represents h^{-1}, where a is a multi-index, low<=a<=high in the partial order (thus the value is 0 when i is not in the range 0..sum n.) In case T is a Tate resolution corresponding to an object F in D^b(P^n), then the values returned are the polynomials of the hypercohomology groups of twists of F, and the values can be nonzero in a wider range.
In case the number of factors t is 2, the output of cohomologyMatrix is easier to parse. In general the script cohomologyHashTable gives the same information as this script, but in a less compact form.
The script computes a sufficient part of the Tate resolution for F, and then calls itself in the version for a Tate resolution.
If T is not a large enough part of the Tate resolution, such as W below, then the function collects only the contribution of T to the cohomology table of the Tate resolution, according to the formula in Corollary 0.2 of Tate Resolutions on Products of Projective Spaces.
|
|
|
|
|
|
We can print just the entries representing nonzero cohomology groups:
|
In the case of two factors (t=2), the same information can be read conveniently from a matrix
|
where the entry in the a= \{a_0,a_1\} place is sum_i h^i(F(a)*h^i \in ZZ[h].
In case of hypercohomology, we write k instead of h^{-1}, and use the cohomology ring ZZ[h,k].
The object eulerPolynomialTable is a method function.