Synopsis:
Code:
-- ../../../Macaulay2/m2/modules.m2:409-417 rank Module := M -> ( if isFreeModule M then numgens M else if degreeLength ring M === 0 and isField ring M then numgens prune M else ( f := poincare M // poincare ring M; T := (ring f)_0; substitute(f,{T=>1}) ) )