# [sage-devel] Re: Coercion for multi-variate polynomials

```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.```
```
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