# HH^ZZ SumOfTwists -- coherent sheaf cohomology module

## Synopsis

• Function: cohomology
• Usage:
HH^i(F(>=d))
• Inputs:
• i, an integer
• an instance of the type SumOfTwists, F(>=d), notation representing the sum of the twists F(n) for all n greater than or equal to d, where F is a coherent sheaf on a projective variety X.
• Optional inputs:
• Degree (missing documentation) => ..., default value 0,
• Outputs:
• , M over the homogeneous coordinate ring of the variety X which agrees, at least in degrees n greater than or equal to d, with the graded module that in degree n is thei-th cohomology group of F(n).

## Description

The command computes a module over the homogeneous coordinate ring of the variety X which agrees, at least in degrees n greater than or equal to the given d, with the graded module that in degree n is thei-th cohomology group of F(n).

To discard the part of the module M of degree less than d, use the truncate(ZZ,Module) command as truncate(d,M).

Use HH^i(F(>d)) to request the twists strictly greater than n.

Note: use HH^i(F(*)) to try to compute the whole graded module. The computation will fail if the module is not finitely generated.

As a first example we look at the cohomology of line bundles on the projective plane

 i1 : X = Proj(QQ[x_0..x_2]) o1 = X o1 : ProjectiveVariety i2 : HH^0(OO_X^1(>=0)) 1 o2 = (QQ[x ..x ]) 0 2 o2 : QQ[x ..x ]-module, free 0 2 i3 : HH^1(OO_X^1(>=0)) o3 = 0 o3 : QQ[x ..x ]-module 0 2 i4 : HH^2(OO_X^1(>=-3)) -- this should change to * once implemented o4 = cokernel {-3} | x_2 x_1 x_0 | 1 o4 : QQ[x ..x ]-module, quotient of (QQ[x ..x ]) 0 2 0 2 i5 : TruncDual = HH^2(OO_X^1(>=-4)) o5 = cokernel {-4} | x_2 x_1 0 0 x_0 0 0 0 | {-4} | 0 0 x_2 x_0 0 x_1 0 0 | {-4} | 0 0 0 0 -x_2 -x_2 x_1 x_0 | 3 o5 : QQ[x ..x ]-module, quotient of (QQ[x ..x ]) 0 2 0 2 i6 : hilbertFunction(-4, TruncDual) o6 = 3 i7 : hilbertFunction(-3, TruncDual) o7 = 1

As a second example we compute the H^1 cohomology module T of the Horrocks-Mumford bundle on the projective fourspace. T is an artinian module with Hilbert function (5,10,10,2):

 i8 : R = QQ[x_0..x_4]; i9 : a = {1,0,0,0,0} o9 = {1, 0, 0, 0, 0} o9 : List i10 : b = {0,1,0,0,1} o10 = {0, 1, 0, 0, 1} o10 : List i11 : c = {0,0,1,1,0} o11 = {0, 0, 1, 1, 0} o11 : List i12 : M1 = matrix table(5,5, (i,j)-> x_((i+j)%5)*a_((i-j)%5)) o12 = | x_0 0 0 0 0 | | 0 x_2 0 0 0 | | 0 0 x_4 0 0 | | 0 0 0 x_1 0 | | 0 0 0 0 x_3 | 5 5 o12 : Matrix R <--- R i13 : M2 = matrix table(5,5, (i,j)-> x_((i+j)%5)*b_((i-j)%5)) o13 = | 0 x_1 0 0 x_4 | | x_1 0 x_3 0 0 | | 0 x_3 0 x_0 0 | | 0 0 x_0 0 x_2 | | x_4 0 0 x_2 0 | 5 5 o13 : Matrix R <--- R i14 : M3 = matrix table(5,5, (i,j)-> x_((i+j)%5)*c_((i-j)%5)) o14 = | 0 0 x_2 x_3 0 | | 0 0 0 x_4 x_0 | | x_2 0 0 0 x_1 | | x_3 x_4 0 0 0 | | 0 x_0 x_1 0 0 | 5 5 o14 : Matrix R <--- R i15 : M = M1 | M2 | M3; 5 15 o15 : Matrix R <--- R i16 : betti (C=res coker M) 0 1 2 3 4 5 o16 = total: 5 15 29 37 20 2 0: 5 15 10 2 . . 1: . . 4 . . . 2: . . 15 35 20 . 3: . . . . . 2 o16 : BettiTally i17 : N = transpose submatrix(C.dd_3,{10..28},{2..36}); 35 19 o17 : Matrix R <--- R i18 : betti (D=res coker N) 0 1 2 3 4 5 o18 = total: 35 19 19 35 20 2 -5: 35 15 . . . . -4: . 4 . . . . -3: . . . . . . -2: . . . . . . -1: . . . . . . 0: . . 4 . . . 1: . . 15 35 20 . 2: . . . . . 2 o18 : BettiTally i19 : Pfour = Proj(R) o19 = Pfour o19 : ProjectiveVariety i20 : HorrocksMumford = sheaf(coker D.dd_3); i21 : T = HH^1(HorrocksMumford(>=-1)) o21 = cokernel {-1} | x_4 x_2 0 0 x_0 0 0 0 x_3 0 0 0 0 0 x_1 | {-1} | 0 -x_3 x_1 0 0 x_4 x_2 0 0 0 0 x_0 0 0 0 | {-1} | 0 0 0 x_3 -x_2 x_0 0 x_1 0 0 0 0 0 -x_4 0 | {-1} | 0 0 0 0 0 0 -x_4 -x_2 x_1 x_0 x_3 0 0 0 0 | {-1} | 0 0 0 0 0 0 0 0 0 0 x_4 -x_3 x_2 x_1 x_0 | 5 o21 : R-module, quotient of R i22 : apply(-1..2, i-> hilbertFunction(i,T)) o22 = (5, 10, 10, 2) o22 : Sequence

## Caveat

The computation will fail if the module is not finitely generated. Also the version HH^i(F(*)) is not yet implemented.