When using a quotient ring, make it a global variable, otherwise you'll end up in the base ring. When you work with a list of polynomials, best store them as a 1xn matrix, this way, they're all in the same ring:
M2 can easily create a ring with many variables R = ZZ[vars(0..10)] But I need my variables to be called x1, ..., x10 (in particular, not x_i) l = apply(10, i-> value concatenate("x",toString i)) I make strings "xi" and applying value turns the strings into symbols, the correct input for a ring: R = ZZ[l] gens R