Description

In src/sage/rings/polynomial/multi_polynomial_ring_generic.pyx, the method completion() constructs a PowerSeriesRing either from variable names or from an polynomial ring element. The latter must be changed for #10483. Moreover, the error checking also needs to be improved.

I ask because it feels like we should pass names off to normalize_names

There is a different here for names than the PolynomialRing constructor for example: the names are not arbitrary names, they refer to an element of self. The fact that we actually allow to give an element, not just a string, is another example of that.

I would argue that giving an element is actually recommend, because it makes sense mathematically: you have a ring and you are completing it w.r.t. a given element from that ring.

For me, the main reason to allow strings is to allow the C.<...> = R.completion() syntax.

I ask because it feels like we should pass names off to normalize_names

There is a different here for names than the PolynomialRing constructor for example: the names are not arbitrary names, they refer to an element of self. The fact that we actually allow to give an element, not just a string, is another example of that.

I would argue that giving an element is actually recommend, because it makes sense mathematically: you have a ring and you are completing it w.r.t. a given element from that ring.

For me, the main reason to allow strings is to allow the C.<...> = R.completion() syntax.