# cotangentSheaf(NormalToricVariety) -- make the sheaf of Zariski 1-forms

## Description

For a normal variety, the sheaf of Zariski 1-forms is defined to be the double dual of the cotangent bundle or equivalently the extension of the sheaf of 1-forms on the smooth locus to the entire variety (the complement of the smooth locus has codimension at least two because the variety is normal). By construction, this sheaf is reflexive with rank equal to the dimension of the variety. When the underlying variety is smooth, this is simple the sheaf of 1-forms or the cotangent bundle. For more information, see Theorem 8.1.5 in Cox-Little-Schenck's Toric Varieties.

On a non-degenerate normal toric variety, the sheaf of Zariski 1-forms is associated to the kernel of a map from the character lattice tensor the total coordinate ring to the direct sum over the rays of the quotient of the total coordinate ring by the ideal generated by the corresponding variable.

 i1 : PP3 = toricProjectiveSpace 3; i2 : OmegaPP3 = cotangentSheaf PP3 o2 = cokernel {2} | x_2 0 0 x_3 | {2} | x_0 x_3 0 0 | {2} | -x_1 0 x_3 0 | {2} | 0 x_1 x_0 0 | {2} | 0 -x_2 0 x_0 | {2} | 0 0 -x_2 -x_1 | 6 o2 : coherent sheaf on PP3, quotient of OO (-2) PP3 i3 : assert (prune cotangentSheaf PP3 === cotangentSheaf (PP3, Minimize => true)) i4 : L = prune exteriorPower (3, OmegaPP3) 1 o4 = OO (-4) PP3 o4 : coherent sheaf on PP3 i5 : assert (L === OO toricDivisor PP3) i6 : assert (L === prune cotangentSheaf (dim PP3, PP3))
 i7 : X = hirzebruchSurface 2; i8 : OmegaX = cotangentSheaf X o8 = cokernel {2, 0} | 2x_1x_3 | {-1, 2} | x_0 | {-1, 2} | -x_2 | 1 2 o8 : coherent sheaf on X, quotient of OO (-2, 0) ++ OO (1, -2) X X i9 : L = prune exteriorPower(dim X, OmegaX) 1 o9 = OO (0, -2) X o9 : coherent sheaf on X i10 : assert (L === OO toricDivisor X) i11 : assert (L === prune cotangentSheaf(dim X, X))
 i12 : Y = normalToricVariety ({{1,0,0},{0,1,0},{0,0,1},{0,-1,-1},{-1,0,-1},{-2,-1,0}}, {{0,1,2},{0,1,3},{1,3,4},{1,2,4},{2,4,5},{0,2,5},{0,3,5},{3,4,5}}); i13 : assert (not isSmooth Y and not isProjective Y) i14 : OmegaY = cotangentSheaf Y o14 = cokernel {2, 0, 2} | x_2x_4 2x_0x_4 0 0 0 0 3x_0x_2 0 0 | {2, 2, 0} | -x_1x_5 0 x_0x_5 0 0 0 0 0 3x_0x_1 | {0, 2, 3} | 0 -x_1x_3 -x_2x_3 0 3x_1x_2 0 0 0 0 | {2, 2, 2} | x_3 0 0 3x_0 0 0 0 0 0 | {2, 2, 3} | 0 -x_5 0 0 0 0 0 3x_2 0 | {2, 2, 3} | 0 0 -x_4 0 0 3x_1 0 0 0 | {2, 2, 4} | 0 0 0 -x_4 2x_4 -2x_3 x_3 0 0 | {2, 3, 3} | 0 0 0 -x_5 -x_5 0 0 x_3 -x_3 | {3, 2, 3} | 0 0 0 0 0 -x_5 -x_5 -2x_4 -x_4 | 1 1 1 1 2 1 1 1 o14 : coherent sheaf on Y, quotient of OO (-2, 0, -2) ++ OO (-2, -2, 0) ++ OO (0, -2, -3) ++ OO (-2, -2, -2) ++ OO (-2, -2, -3) ++ OO (-2, -2, -4) ++ OO (-2, -3, -3) ++ OO (-3, -2, -3) Y Y Y Y Y Y Y Y i15 : prune exteriorPower(dim Y, OmegaY) 1 o15 = OO (-3, -3, -4) Y o15 : coherent sheaf on Y i16 : assert (prune exteriorPower(dim Y, OmegaY) === OO toricDivisor Y)