Simon,

Many thanks for your patient answers.

> > However if all coercion maps involved are injective then
> > can't I expect == to be preserved?
>
> Why do you think that all coercions are injective? The coercion from ZZ
> to GF(2) is certainly not injective.

I meant not that all coercions were injective, but
that all the coercion maps involved in my situation were
injective homomorphisms.

I suppose it would be hard in general for the
coercion mechanism to keep track of such details on the fly
(remember whether all the maps used so far been injective).

> > Since the coercion from S to FractionField(R)
> > is injective, the pushout must necessarily be
> > FractionField(R).
>
> Here is the problem:
>
>   sage: S.<x> = LaurentPolynomialRing(QQ)
>   sage: R = S.polynomial_ring()
>   sage: K = R.fraction_field()
>   sage: K.has_coerce_map_from(S)
>   False
>
> There are two possibilities: Either the "obvious" embedding of S into K
> would create problems with the axioms above. Probably it is fine.
>
> Or it was forgotten to teach Sage that it is fine.
>
> Note that conversion from S to K is implemented:
>   sage: K(x)
>   x
>   sage: K(1/x)
>   1/x
>
> So, the only problem is that Sage does not think (yet) that this
> conversion qualifies as coercion. I am not sure how to fix it. The first
> one might think of is the method K._coerce_map_from_: This is where
> the existence of basic coercion maps is defined. However, K is a generic
> fraction field - it would be very bad style to have tests for "Laurent
> polynomial rings" in a very general method.

Yeah, how can K generally know about some "random" subring like S?
I understand that part.

--Mark

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to