I think you would traverse the input expression tree once to collect all assumptions stored in that tree into a set. You would then use that set during the computation (maybe this goes into ask?). Probably a tree would cache its set of assumptions after the first traversal. In what case would facts change during a computation/query?
It doesn't strike me as the slow part of assumptions. In any case it's something that you could slowly remove as code developed - fewer and fewer bits of code would depend on the assumptions field. But I don't like this idea anyway. I mostly don't like the idea of adding an extra field to Basic. It makes it substantially less basic. On Wed, Apr 10, 2013 at 11:01 AM, Tom Bachmann <[email protected]> wrote: > On 10.04.2013 16:56, Matthew Rocklin wrote: > >> Old and new assumptions differ in a few ways. >> >> 1. They store assumptions in different places (this is the main issue >> here I think) >> 2. They represent assumptions differently >> 3. They represent relations differently >> 4. They infer/compute differently >> >> I don't particularly like this idea, but one could consider a solution >> that changes 2,3,4 but doesn't change 1. Alongside the .args tuple, >> Basic could also hold an .assumptions frozenset as a field. >> Computations that use assumptions could then check both the global >> collection and all assumptions in the expression tree. This might be an >> intermediate step in our development. >> >> > I thought about that, but it is not obvious how to make it work. I suppose > you would need to take the transitive closure of all assumptions. I.e.: > > - take all facts, extract all symbols into a list L > -0append the symbols in the expression being queried to L > -for every object in L, read out the assumptions frozenset, and append it > to facts > - start over if the facts have changed > > This seems potentially quite slow. > > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to > sympy+unsubscribe@**googlegroups.com<sympy%[email protected]> > . > To post to this group, send email to [email protected]. > Visit this group at > http://groups.google.com/**group/sympy?hl=en-US<http://groups.google.com/group/sympy?hl=en-US> > . > For more options, visit > https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> > . > > > -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sympy?hl=en-US. For more options, visit https://groups.google.com/groups/opt_out.
