Sometimes you start working on a ticket thinking "this is just a few hours of work" when it turns out to be a huge can of worms...

Coercion for multi-variate polynomials might fall in this category. There are several strange things and bugs. The best example so far:

sage: R.<x,y> = QQ[]
sage: QQ["y,x"](x)

sage: R.<x,y> = QQbar[]
sage: QQbar["y,x"](x)

So depending on the base ring, you get different maps
R[x,y] -> R[y,x]. In both cases, Sage considers this map a coercion.

I would like to forget the current situation and simply start from scratch thinking which maps should be coercions. I don't have a good idea so far, I wonder if somebody else does.

I'd like to say that the following should be coercions:
R -> R[x,y]
R[x] -> R[x,y]
R[y] -> R[x,y]
R[x][y] -> R[x,y]

But not the following:
R[x,y] -> R[x][y]
R[x,y] -> R[y,x]
R[x,y][z] -> R[x][y,z]

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 post to this group, send email to
Visit this group at
For more options, visit

Reply via email to