Any sheaf on P1 is the direct sum of line bundles-- and cyclic skyscraper sheaves represented by modules of the form k[x,y]/(l^{m}) where l is an kirreducible homogeneous polynomial and m is a non-negative integer. The routine "analyze" computes the twists and the annihilators l^{m} that appear in the decomposition, starting from a coherent sheaf on P1 or a graded module over a polynomial ring on 2 variables.
i1 : k = ZZ/5 o1 = k o1 : QuotientRing |
i2 : S = k[a,b] o2 = S o2 : PolynomialRing |
i3 : M = S^1/ideal(a^3)++S^{-1}/(ideal b^2)++S^1/(ideal b^2)++ S^{-1,1} o3 = cokernel {0} | a3 0 0 | {1} | 0 b2 0 | {0} | 0 0 b2 | {1} | 0 0 0 | {-1} | 0 0 0 | 5 o3 : S-module, quotient of S |
i4 : L = analyze M; |
i5 : twists = L_0 o5 = {1, -1} o5 : List |
i6 : anns = L_1 3 2 2 o6 = {-2a , b , b } o6 : List |
i7 : analyze sheaf M 3 2 2 o7 = {{1, -1}, {a , b , b }, {1} | 0 0 0 1 0 |, | a3 0 0 |} {-1} | 0 0 0 0 1 | | 0 b2 0 | | 0 0 b2 | o7 : List |
The script uses a linear nonzerodivisor, which would not exist over a finite field in the case where every point of P1 is the support of one of the skyscraper components.
This documentation describes version 0.1 of AnalyzeSheafOnP1.
The source code from which this documentation is derived is in the file AnalyzeSheafOnP1.m2.