On Mon, Jan 18, 2016 at 6:32 AM, Oscar Benjamin
<
oscar.j....@gmail.com> wrote:
> On 15 January 2016 at 15:06, Aaron Meurer <
asme...@gmail.com> wrote:
>>
>> In the released version (0.7.6.1), the systems are independent. In
>> master, the new assumptions (ask(), Q) read the old assumptions on
>> Symbols (is_positive, positive=True).
>>
>> For performance purposes, this was done in a way that prevents the new
>> assumptions from noticing contradictions (it was added to the old ask
>> handler system instead of the new satask handler system). This will
>> hopefully change in the future, but there are some performance issues
>> that need to be worked out with the satask system.
>
> Does this mean that there is a third (newer) assumption system?
From a user point of view no. Internally, there is a newer backend to
the new assumptions (ultimately the plan is to have multiple backends
with varying degrees of performance and computational power).
>
>> For now, I would recommend using the old assumptions. However, you can
>> play with the new assumptions. The goal in making the new assumptions
>> read the old was to make this easier to do.
>
> But it also makes it a confusing mish-mash of the two. What's the
> eventual goal here?
The eventual goal is to merge the two, so that one calls the other.
Then it won't matter which one you use. It will just be a question of
which syntax you prefer. For now, we have that in one direction (the
new system calls the old).
If you only use the old assumptions, you can more or less ignore the
new system, which is what I recommend for normal usage. The new system
is still in a stage where you can play with it and see if it helps you
solve your problem, but for real world work, you should use the old
system.
There are some things that are not expressible in the old system, and
the new system also has (potentially) far more deductive power. If you
come across a problem like that you might consider looking at the new
system. But don't be surprised if things aren't actually implemented
yet (for example, the new system has the potential to make it much
easier to work with inequality based assumptions, like "assume x > y",
but none of it is actually implemented yet).
The other reason to do this is that almost none of the code in SymPy
itself uses the new assumptions; it's all still using the old
assumptions. This likely won't change until we get to a point where
the old system calls the new one (i.e., they are merged into one
system).
Aaron Meurer
> To view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/CAHVvXxTJhd5gGULjDJU1sjyrfTxS3WLOLWH-ubxN2MMuKtvuMw%40mail.gmail.com.