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.