The way cartesian products of combinatorial free modules are
constructed, the monomials are identified by pairs of integers rather
than single digits. This means when we're looping through monomial(i)
for i=0,1,...,n in a CartesianProductEJA, that nothing is happening:
monomial(i) is always zero. It wants e.g. monomial((i,j)) instead.
So, switch all of those to gens()[i] which works everywhere.
This fixes rank computations in cartesian product algebras.