The main reason to implement algebraic varieties is support the computation of sheaf cohomology of coherent sheaves, which doesn't have an immediate description in terms of graded modules.
In this example, we use
cotangentSheaf to produce the cotangent sheaf on a K3 surface and compute its sheaf cohomology.
i1 : R = QQ[a,b,c,d]/(a^4+b^4+c^4+d^4);
|
i2 : X = Proj R
o2 = X
o2 : ProjectiveVariety
|
i3 : Omega = cotangentSheaf X
o3 = cokernel {2} | c 0 0 d 0 a3 b3 0 |
{2} | a d 0 0 b3 -c3 0 0 |
{2} | -b 0 d 0 a3 0 c3 0 |
{2} | 0 b a 0 -d3 0 0 c3 |
{2} | 0 -c 0 a 0 -d3 0 b3 |
{2} | 0 0 -c -b 0 0 d3 a3 |
6
o3 : coherent sheaf on X, quotient of OO (-2)
X
|
i4 : HH^1(Omega)
20
o4 = QQ
o4 : QQ-module, free
|
Use the function
sheaf to convert a graded module to a coherent sheaf, and
module to get the graded module back again.
i5 : F = sheaf coker matrix {{a,b}}
o5 = cokernel | a b |
1
o5 : coherent sheaf on X, quotient of OO
X
|
i6 : module F
o6 = cokernel | a b |
1
o6 : R-module, quotient of R
|