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.

Use the function sheaf to convert a graded module to a coherent sheaf, and module to get the graded module back again.

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 |

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 |

- HH^ZZ CoherentSheaf -- cohomology of a coherent sheaf on a projective variety
- HH^ZZ SumOfTwists -- coherent sheaf cohomology module