I found the FGP_Module to be the most useful implementation of finitely generated Z-modules:
sage: M = ZZ^2 sage: Q = M / M.span([ 2*M.gen(0) ]); Q Finitely generated module V/W over Integer Ring with invariants (2, 0) sage: type(Q) <class 'sage.modules.fg_pid.fgp_module.FGP_Module_class_with_category'> sage: [ q.additive_order() for q in Q.gens() ] [2, +Infinity] Homs work, too: sage: N = ZZ^1 sage: Q.hom([0,N.gen(0)]) Morphism from module over Integer Ring with invariants (2, 0) to module with invariants (0,) that sends the generators to [(0), (1)] -- To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org