# 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]/(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

## 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
• Methods
• "analyze(CoherentSheaf)" -- see analyze -- Compute the decomposition of a sheaf on P1
• "analyze(Module)" -- see analyze -- Compute the decomposition of a sheaf on P1
• "doubleDualMap(Module)" -- see doubleDualMap -- map from a module to its double dual
• "isNZD(RingElement,Module)" -- see isNZD -- tests whether a ring element is a non zerodivisor on a module
• "killH0(Module)" -- see killH0 -- removes 0-dimensional torsion
• "showSheafOnP1(CoherentSheaf)" -- see showSheafOnP1 -- Prints the analysis of a sheaf on P1
• "showSheafOnP1(Module)" -- see showSheafOnP1 -- Prints the analysis of a sheaf on P1

## For the programmer

The object AnalyzeSheafOnP1 is .