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.
