# analyze -- Compute the decomposition of a sheaf on P1

## Synopsis

• Usage:
L=analyze M
• Inputs:
• M, ,
• M, ,
• Outputs:
• L, a list, L_0 = map from M to double dual of M, L_1 is the smith normal form pres of the torsion of M

## Description

The routine decomposes the sheaf associated to M into a direct of twists of the structure sheaf and cycle torsion part modules. It returns a list L ={freegens, anns, e, D} where:

freegens is the list of the twists;

anns is the list of annihilators;

e is the map from M' to its double dual, where M' = is the result of reducing M mod 0-dimensional torsion, if necessary;

D is a presentation of the torsion part in the appropriate version of Smith normal form.

To compute this Smith normal form, we dehomogenize with respect to a linear form that is a nonzerodivisor on M', use the routine smithNormalForm, and then rehomogenize. To find this nonzerodivisor we try first the first variable, then the second, then up to 100 random choices

The routine returns an error if the base ring is not a polynomial ring in 2 variables over a field or if after 100 tries it finds no linear form that is a nonzerodivisor on the module.

 i1 : setRandomSeed 0 o1 = 0 i2 : S = ZZ/101[a,b] o2 = S o2 : PolynomialRing i3 : mm = ideal vars S o3 = ideal (a, b) o3 : Ideal of S i4 : M0 = mm^3*S^{3} ++ S^{-1}; i5 : M1 =S^1/ideal(a^3)++S^{-1}/(ideal b^2)++S^1/(ideal b^2) ; i6 : M = M0++M1; i7 : L = analyze M0; i8 : freegens = L_0 o8 = {1, -3} o8 : List i9 : anns = L_1 o9 = {} o9 : List i10 : e = L_2 o10 = {1} | 0 0 0 0 1 | {-3} | a3 a2b ab2 b3 0 | o10 : Matrix i11 : D = L_3 o11 = 0 o11 : Matrix 0 <--- 0