# AnalyzeSheafOnP1 -- Describe a graded module over k[x,y] without 0-dimensional torsion

## Description

Any sheaf on P1 is the direct sum of line bundles-- and cyclic skyscraper sheaves represented by modules of the form k[x,y]/(lm) where l is an kirreducible homogeneous polynomial and m is a non-negative integer. The routine "analyze" computes the twists and the annihilators lm 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```

## Caveat

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.

## Version

This documentation describes version 0.1 of AnalyzeSheafOnP1.

## Source code

The source code from which this documentation is derived is in the file AnalyzeSheafOnP1.m2.

## Exports

• Functions and commands
• analyze -- Compute the decomposition of a sheaf on P1
• doubleDualMap -- map from a module to its double dual
• isNZD -- tests whether a ring element is a non zerodivisor on a module
• killH0 -- removes 0-dimensional torsion
• showSheafOnP1 -- Prints the analysis of a sheaf on P1