The problem may be this:

sage: S=Rationals()
sage: R=GF(7)
sage: from sage.categories.pushout import *
sage: pushout(R,S)
Ring of integers modulo 1
sage: R_tower = construction_tower(R)
sage: S_tower = construction_tower(S)
sage: R_tower
[(None, Finite Field of size 7), (QuotientFunctor, Integer Ring)]
sage: S_tower
[(None, Rational Field), (FractionField, Integer Ring)]
sage: R_tower[1][0].rank
7
sage: S_tower[1][0].rank
5

These ranks mean that FractionField is applied before the
QuotientFunctor, which is obviously not such a great idea: After
taking the fraction field there are not many ideals left to quotient
out by:

sage: R_tower[1][0](S_tower[1][0](ZZ))
Ring of integers modulo 1

The other composition would arrive at a desirable pushout:

sage: S_tower[1][0](R_tower[1][0](ZZ))
Finite Field of size 7

Larger finite fields don't participate in this game:

sage: construction_tower(GF(7^2,'a'))
[(None, Finite Field in a of size 7^2)]

so there the code relies on the coercion that exists from ZZ to GF,
which somehow extends (partially) to QQ.

I would think this example illustrates that FractionField should have
a higher rank than QuotientFunctor. Doing that ends up with
sage: L.parent()
Full MatrixSpace of 2 by 2 dense matrices over Ring of integers modulo
7
sage: T.parent()
Full MatrixSpace of 2 by 2 dense matrices over Finite Field of size 7

so it didn't quite produce the right parent, although

sage: pushout(QQ,GF(7))
Finite Field of size 7

-- 
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 http://groups.google.com/group/sage-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to