I agree. If bool(x > 2) raises TypeError then so should bool(And(a >
2, a < 2)).

Aaron Meurer

On Fri, May 15, 2015 at 5:01 PM, Duane Nykamp <[email protected]> wrote:
> Yes, it turned out to mess it up for my use case.  It would just confuse
> folks using my application if And(a>2, a<3) ended up always being true when
> a is symbolic.
>
> My solution was to make a derived class off And and add the methods
>
>     def __nonzero__(self):
>         raise TypeError("cannot determine truth value of And")
>
>     __bool__ = __nonzero__
>
>
> This means, that if the And was not evaluated to a boolean (i.e., it is
> still an And), then it shouldn't have a truth value.  It works fine, except
> for the following strange behavior in ipython (this is with my customized
> And function):
>
> In [9]: expr=And(a>2, a<3)
>
> In [10]: ?expr
> [snip]
> TypeError: cannot determine truth value of And
>
> But, it does act as it is supposed to, so I'm fine with it for my purpose.
> However, I'm not what the right way would be to make such a change to the
> actual sympy code if folks agree this is the correct behavior.  I assume one
> would want ?expr in ipython to work correctly.  (I'm also not sure to which
> of the parent classes of And one should add this behavior.)
>
> Duane
>
>
>
>
>
> On Friday, May 15, 2015 at 4:34:21 PM UTC-5, Joachim Durchholz wrote:
>>
>> I agree that `bool(And(a>2, a<3))` and `bool(a>2)` should show analogous
>> behaviour.
>> At least that's what I'd assume from my current understanding of
>> assumptions and evaluation in SymPy. I'd like to defer to the real
>> experts on these components (I think that's @asmeurer and @certik).
>
> --
> 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.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sympy/9043ddaf-1958-4bf4-9119-c5ea66c4fc13%40googlegroups.com.
>
> For more options, visit https://groups.google.com/d/optout.

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CAKgW%3D6KMEh6h%2Bz%2B5Gr%2B9ueLeyeVzC57DtCWGLqQ%3D6aeNzeVkpQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to