On 2018-06-12, Jeroen Demeyer <j.deme...@ugent.be> wrote: >> However, >> these iterated polynomial ring constructions are quite inefficient. > > True, but I don't see that as an argument to have no coercion.

## Advertising

It is, if the absence of a direct coercion triggers the construction of a pushout that uses a more efficient implementation than the two rings under consideration. However, I doubt that there is coercion rule that is both mathematically sound and gives preference to "efficient" parents. >> I thus tend to kind of proposing the following: >> - All default (partial) conversions between polynomial rings are >> preserving names, as that's less surprising than position preserving >> maps. > > The problem is what you do with R[x] -> R[y]? We have always allowed > that as a conversion. Yes. I'd tend to believe that R[y](x) should return 0 (because x->0 is the only way to map R[x]->R[y] by name), or should raise an error. Fortunately that conversion is currently not a coercion. >> - If P1,P2 are polynomial rings over R, then a coercion from P1 to P2 is >> a *name* preserving homomorphism of graded-rings-with-monomial-ordering. >> Hence, it is name preserving, degree preserving, and maps P1 to >> an ordered sub-ring of P2. That's of course very strict, but I think >> this would work best with categorial constructions. > > What does "degree preserving" mean? Polynomial rings are graded rings and I mean morphisms in the category of graded monomial algebras with a monomial ordering. Indeed it is possible to assign degrees to the generators of a multivariate polynomial ring (unless I am totally misremembering - at least in Singular one can assign degrees!). So, we can map variable x of P1 to variable x of P2, provided that deg(x) in P1 coincides with deg(x) in P2, and provided that the whole story is also compatible with the monomial orderings of P1, P2 --- or we can map x (in P1) to 0 (in P2), which has no degree. > And what would this rule imply for > coercions R[x][y] -> R[x,y]? I wrote somewhere in my previous post that I think that R[x][y] is a polynomial ring in variables x,y, and the "natural" ordering is lexicographic with y>x. Hence, this rule implies that the name preserving default conversion map from R[x][y] to PolynomialRing(ZZ,['y','x'],order='lex') is a coercion, but the name preserving maps from R[x][y] to PolynomialRing(ZZ,['x','y'],order='lex') resp. to PolynomialRing(ZZ,['y','x'],order='deglex') are no coercions. Caveat: I am not 100% convinced that "lex with y>x" really is the most natural choice for R[x][y]. Best regards, Simon -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.