L=analyze M
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 0dimensional 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.











The object analyze is a method function.