@asmeurer
For this piece of code
>>> x = Symbol('x', real=True)
>>> bool( x > S(2) )
TypeError: can not determine the truth value of Relational
I think, even if this returns an error then it should "not" be TypeError.
Since a real number comparison is there in this. What are your views on
this ?
On Saturday, May 16, 2015 at 3:33:53 AM UTC+5:30, Aaron Meurer wrote:
>
> 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]
> <javascript:>> 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] <javascript:>.
> > To post to this group, send email to [email protected]
> <javascript:>.
> > 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/c3b02652-f2a7-489b-a403-953ea035aaa8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.