On Mon, Jun 21, 2010 at 9:40 PM, Aaron S. Meurer <asmeu...@gmail.com> wrote: > > On Jun 21, 2010, at 10:31 PM, Ondrej Certik wrote: > >> Hi Christian, >> >> On Mon, Jun 21, 2010 at 8:24 PM, Christian Muise >> <christian.mu...@gmail.com> wrote: >>> I was asked to update the list with my progress daily until Friday, so I'll >>> keep this quick. >>> I've pushed hard against the branch to remove the old assumptions, and as >>> of a few minutes ago I've managed to get the sympy/core working smooth: >>> ======= tests finished: 329 passed, 6 expected to fail, in 12.57 seconds >>> ======= >>> - Commit: 5e76a479db9f5ad2c55a >>> This is in contrast with the state of affairs just after the discussion >>> late last week: >>> tests finished: 306 passed, 22 failed, 5 expected to fail, >>> 1 expected to fail but passed, 1 exceptions, in 8.12 seconds >>> - Commit: 91bcb155b24fd354cfdc >>> And this is the stats on my netbook for the master branch (just in case >>> those times looked a little high): >>> ======= tests finished: 390 passed, 7 expected to fail, in 11.58 seconds >>> ======= >>> Few things worth noting: >>> - Most of the default assumption handling occurs now in the Expr class. It >>> dispatches to the global_assumptions if there is a straight up assumption >>> referring to the current query (<var>.is_foo), then attempts to >>> _eval_is_foo, and in some cases check's related is_foo2's. >>> - Instead of commenting out / deleting the tests that used assumptions, I >>> rewrote them to use global assumptions. There may be more in the core that >>> I've missed, but once they're stripped from the constructor those should >>> surface. This flies against the recommended path, but I think they test >>> important things and we can always place them some place else (it's easy to >>> locate all instances in the testing files). >>> - I found that from time to time an expression would be cached, and then the >>> symbol would be used later with different assumptions. This proved to be >>> /extremely/ problematic and hard to debug. Would it be worth modifying the >>> cache so that all expressions related to a symbol (eg. x) are dumped when >>> the Symbol('x') is called again? >> >> This is a phenomenal progress! Thanks for this. Yes, you have just >> discovered another problem, why I so desperately want to get the old >> assumptions gone --- caching. And exactly because of the bugs that you >> posted, the cache has to be either fixed or removed. >> >> I would be more than happy if we can remove all caching altogether, >> but since it currently would slow sympy down, Well, maybe not anymore. >> We should do some tests. But let's say we need to keep the cache (at >> least optional). >> >> Do I understand correctly, that now the expressions don't remember >> their assumptions themselves, but you need to use either local or >> global assumptions? If so, I would just store the pure expression in >> the cache and only store the result in some form, that is independent >> of the assumptions. Or maybe with the assumptions themselves -- e.g. >> both an expression and the assumptions. >> >> Ondrej > > Aren't some results dependent on assumptions? I don't see how you can cache > independent of assumptions and not have problems.
For example: 1) check that there are no global or local assumptions set 2) store the expression retrieve: * check 1) * use cache Ondrej -- You received this message because you are subscribed to the Google Groups "sympy" group. To post to this group, send email to sy...@googlegroups.com. To unsubscribe from this group, send email to sympy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sympy?hl=en.