![[next]](next.gif)
![[previous]](previous.gif)
![[up]](up.gif)
![[top]](top.gif)
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})
)
)
![[next]](next.gif)
![[previous]](previous.gif)
![[up]](up.gif)
![[top]](top.gif)