On 2018-06-12, Jeroen Demeyer <j.deme...@ugent.be> wrote:
>> 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
> 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].
You received this message because you are subscribed to the Google Groups
To unsubscribe from this group and stop receiving emails from it, send an email
To post to this group, send email to firstname.lastname@example.org.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.