I'd like it if only `Atom`s had the extra data and all other Basics
computed assumptions from their leaves and potentially their class.

Is it possible to keep Symbol.assumptions stored in Symbol.args ?  That way
we keep the simple tree structure.  We'd need to be more careful about
is_Atom checks rather than relying on empty args.


On Sun, Apr 14, 2013 at 3:48 AM, Tom Bachmann <e_mc...@web.de> wrote:

> Just NB: the reason why I don't like Symbol('x', positive=True) to return
> PositiveObject(Symbol('x')) is that (a) it hides facts from the inference
> engine, and (b) for this to scale beyond Symbol and Dummy, every client
> will have to be prepared to strip the PositiveObject wrapper in order to
> deal with the wrapped object.
>
> Neither of these is a very strong argument - (a) just shows a shortcoming
> of the ask() implementation, and (b) would be does not really apply as long
> as we are just trying to emulate the old behaviour.
>
> Tom
>
>
> On 14.04.2013 00:13, Aaron Meurer wrote:
>
>> This looks very good so far. I have just some comments, which perhaps
>> should be forked into another one of your mini-threads
>>
>> - If you are planning on making any changes to the cache, you might
>> want to take a look at bin/test -C and see what sorts of issues
>> currently exist with it.  There is also a caching label in the
>> tracker.
>>
>> - Regarding Symbol('x', positive=True), I think this requires some
>> thought. I am beginning to think that actually the best way to do this
>> is to keep doing it like we do it now (modulo some refactoring of the
>> Symbol class).
>>
>> I think perhaps there needs to be a separate set of global
>> assumptions, which are assumptions that never change. For example,
>> Q.positive(pi) (from my understanding this currently works by calling
>> .evalf(); we should see if it's faster to do that or to store a bunch
>> of Q.positive(pi) and so on explicitly, but anyway, not all custom
>> object assumptions can be generalized like this) never changes, and so
>> it should never be cleared, and additionally any facts resulting from
>> it should never be cleared.
>>
>> In general, we want to allow objects to define their own assumptions
>> about themselves, so that things can remain modular, and so that
>> objects in user-land can work as first-class citizens with the
>> assumptions. So, given that, I think that Symbol('x', positive=True)
>> should be no different. This "keeps the assumptions in the core", but
>> really, the issue is the inference code in the core. So I would just
>> leave Symbol('x', positive=True) alone for now, and refactor how it
>> works internally once we have a good API for how custom objects define
>> their own assumptions on themselves.
>>
>> - It occurs to me that another advantage of using the "switch" method
>> for switching over to the new assumptions is that it will become clear
>> exactly what sorts of behaviors we are going to have to deprecate or
>> completely remove, giving us an idea of the impact on users in the
>> next release.
>>
>> Aaron Meurer
>>
>>
>>
>> On Sat, Apr 13, 2013 at 4:18 PM, Tom Bachmann<e_mc...@web.de>  wrote:
>>
>>> Hi,
>>>
>>> I have spent the last couple of days writing up a more coherent
>>> proposal. It
>>> is now in a readable state, see [1]. Any comments would be appreciated.
>>> (The
>>> proposal is still slightly rough, in particular there are a few TODO
>>> notes,
>>> and I haven't written anything yet about stretch goals.)
>>>
>>> Matthew:
>>> I have not forgotten your email from april 10,
>>>
>>>  It might be nice to have a couple representative bugs/issues.  What are
>>>> the sorts of problems that we're facing?
>>>>
>>>> What is a specific piece of code that would break?
>>>> What is an important routine that would run much more slowly?
>>>>
>>>
>>>
>>> I just have not had time do work out an answer, yet.
>>>
>>> Anyone else, if I have not addressed one of your concerns, please let me
>>> know.
>>>
>>> Thanks,
>>> Tom
>>>
>>> [1]
>>> https://github.com/sympy/**sympy/wiki/GSOC-2013-**
>>> Application-Tom-Bachmann:-**Removing-the-old-assumptions-**module<https://github.com/sympy/sympy/wiki/GSOC-2013-Application-Tom-Bachmann:-Removing-the-old-assumptions-module>
>>>
>>> --
>>> 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%2bunsubscr...@googlegroups.com>
>>> .
>>> To post to this group, send email to sympy@googlegroups.com.
>>> 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 
> sympy+unsubscribe@**googlegroups.com<sympy%2bunsubscr...@googlegroups.com>
> .
> To post to this group, send email to sympy@googlegroups.com.
> 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 sympy+unsubscr...@googlegroups.com.
To post to this group, send email to sympy@googlegroups.com.
Visit this group at http://groups.google.com/group/sympy?hl=en-US.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to