On 6/22/07, Gonzalo Tornaria <[EMAIL PROTECTED]> wrote: > I'm just working on "fixing the old model", i.e. correctly implement > some base extension stuff with recursion that fixes at least 90% of > the examples which were broken. > > Additionally, I'm not touching any of the has_coerce_map_from() and > _coerce_() stuff at all, my new code uses these to decide on things, > so improvements on those will be useful.
Robert B -- are you working on this, i.e., _coerce_ and has_coerce_map_from, etc.? My impression is that it would be *very* good if somebody did. I would love to work on it, but I don't have time now, since I spent all my time on the notebook, and I'll be teaching the next two weeks. You had numerous very good ideas about improving _coerce_impl last time we talked... -- William > I'm not using change_ring() at all. base_extend() is very well > defined. My new functions, for lack of a better name, are: > > - base_extend_recursive() do a base_extend() but recursively try to > extend inside (e.g. Z[x][y] extends by Q by a base_extend() of its > base() ) > > - base_extend_canonical() does a base_extend_recursive() but only if > it is canonical; effectively it means that it also tries > base_extend_recursive() in the opposite direction and it fails if that > one succeeds. > > Gonzalo > > > On 6/21/07, Robert Bradshaw <[EMAIL PROTECTED]> wrote: > > > > I've started working on the new model for coercion too. I believe > > base extension was only one of the many functors that was going to be > > implemented. > > > > A note on your code, base_extends() is always supposed to be > > canonical. change_ring() is for possibly non-canonical "base- > > extensions," so I'm not sure why you have the two separate functions. > > > > If there was any more development the last couple days of SD4, could > > someone update the wiki? I added a diagram of the current rules for a > > small group of rings. > > > > - Robert > > > > On Jun 19, 2007, at 9:03 PM, Gonzalo Tornaria wrote: > > > > > Here is a prototype for the tricky part of the coercion (recursive > > > base extension). > > > It seems to catch all the examples I came up with. Please test, and > > > add more examples if needed. I will be rewriting this in py > > > > > > Note that this doesn't work for multivariate polynomials (the tests > > > use recursive univariate polys), but it should work as soon as > > > canonical coercions from ZZ[x] to ZZ[x,y] are implemented and > > > ZZ[x,y].has_coerce_map_from(ZZ[x]) returns true. > > > > > > I've also got bin_op_c mostly worked out for add/sub/mul/div, this > > > recursive base extend is a requirement, so I'll be having a patch > > > soon. The patch essentially adds a step of trying recursive base > > > extension in both directions, and use the result if exactly one of the > > > two work. There is some other stuff with division as well (try > > > "ZZ[x](x) / Mod(2,5)" to see what I mean), but I think I also have > > > this sorted out. > > > > > > Best, Gonzalo > > > > > > > > > > <bext.py> > > > > > > > > > > > > > -- William Stein Associate Professor of Mathematics University of Washington http://www.williamstein.org --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~----------~----~----~----~------~----~------~--~---