The question above.

Sort of yes, because there is a better algorithm for rings, known under umbrella name of Grobner Basis. It works the nicest for commutative algebras, but there are various versions for algebras over Euclidian domains, associative algebras, Lie algebras etc. What is the ring you are after? 


Yes, this is implemented as the Vector Enumeration in magma: http://magma.maths.usyd.edu.au/magma/htmlhelp/text942.htm#9432 This is also included in GAP. 

