+1 to this.
Sage Enhancement Proposal: Change comparisons that involve
elements of the symbolic ring to return True or False if both sides
of the symbolic comparison are constants and the comparison can
be definitely determined. [...]   There would be a discussion on sage-devel,
probably some voting, and then it would get done.

On Fri, May 16, 2008 at 6:03 AM, Rhys Ulerich <[EMAIL PROTECTED]> wrote:
> In every CAS I've used, the tendency to reduce true symbolic equations to
> boolean True drives me nuts.
>
> What if the user wants to start from a known true equation and then
> manipulate both sides to obtain an identity of some sort?  Automatic
> reduction to a boolean value disallows this use case.
>
> I vote for requiring the bool cast previously mentioned.
>
> - Rhys
>
> On Fri, May 16, 2008 at 12:57 AM, William Stein <[EMAIL PROTECTED]> wrote:
>>
>> On Thu, May 15, 2008 at 10:42 PM, John H Palmieri
>> <[EMAIL PROTECTED]> wrote:
>> >
>> >
>> >
>> > On May 15, 9:56 pm, "William Stein" <[EMAIL PROTECTED]> wrote:
>> >> On Thu, May 15, 2008 at 9:48 PM, John H Palmieri
>> >> <[EMAIL PROTECTED]> wrote:
>> >>
>> >>
>> >>
>> >> > Is this a bug?
>> >>
>> >> > sage: 3 == pi
>> >> > 3 == pi
>> >> > sage: i == i
>> >> > I == I
>> >>
>> >> > Shouldn't this return "False" and "True", respectively?
>> >>
>> >> Those are symbolic equations:
>> >>
>> >> sage: type(I == I)
>> >> <class 'sage.calculus.equations.SymbolicEquation'>
>> >>
>> >> It's just a more general case of:
>> >>
>> >> sage: var('a,b,c,x')
>> >> (a, b, c, x)
>> >> sage: a*x^2 + b*x + c == 0
>> >> a*x^2 + b*x + c == 0
>> >> sage: type(a*x^2 + b*x + c == 0)
>> >> <class 'sage.calculus.equations.SymbolicEquation'>
>> >> sage: solve(a*x^2 + b*x + c == 0, x)
>> >> [x == (-sqrt(b^2 - 4*a*c) - b)/(2*a), x == (sqrt(b^2 - 4*a*c) -
>> >> b)/(2*a)]
>> >
>> > Yes, except I, pi, and e are constants, not variables.
>>
>> They are elements of the symbolic ring:
>>
>> sage: parent(I)
>> Symbolic Ring
>> sage: parent(pi)
>> Symbolic Ring
>> sage: parent(e)
>> Symbolic Ring
>>
>> I'm not claiming to tell you the ultimate way things "should be".  I'm
>> only
>> explaining why they work the way they were and they do.
>>
>> > I suppose "bug" is not the right word, but I would content that this
>> > behavior is not at all what beginning users will expect.  I mean, if I
>> > can do 'e**(i * pi)' and get -1, I would expect to be able to do '3 ==
>> > pi' and get "False".
>> >
>> > Or maybe I should say, if I can do 'a = 5; a == 7' and get "False", I
>> > would expect to be able to do '3 == pi' and get "False".  Why is pi
>> > treated as a symbolic variable and not as a number?
>>
>> Pi is an element of the symbolic ring.  What ring would you want
>> it to be part of?  There is no "ring of numbers" in Sage.   There could
>> be I suppose, but there isn't at present.
>>
>> > (Think about this from the beginning user's point of view.  If they
>> > see odd behavior, they're going to be confused.  A goal should be to
>> > not let this happen, or to provide a good way for them to figure out
>> > why the behavior was actually reasonable in the first place. How do
>> > you expect someone to react when they type in '3 == pi'?  If they're
>> > puzzled, what do you reasonably expect them to be able to do to
>> > clarify things?)
>>
>> I would prefer "3 == pi" to return False.  See below.   Want to make
>> a Sage Enhancement Proposal and implement it?  :-)  It would
>> go something like this:
>>
>> Sage Enhancement Proposal: Change comparisons that involve
>> elements of the symbolic ring to return True or False if both sides
>> of the symbolic comparison are constants and the comparison can
>> be definitely determined. [...]   There would be a discussion on
>> sage-devel,
>> probably some voting, and then it would get done.
>>
>> >
>> >> That said, maybe something so obvious as I == I would best be
>> >> simplified
>> >> to True.  But then people would argue that it is very inconsistent that
>> >> sometimes symbolic equations are simplified to True/False and sometimes
>> >> they aren't.
>> >>
>> >> In all cases you can do bool( a symbolic equation ) to get True or
>> >> False.
>> >>
>> >> sage: bool(I == I)
>> >> True
>> >>
>> >> > I know this
>> >> > works:
>> >>
>> >> > sage: 3 == pi.n()
>> >> > False
>> >> > sage: 3 == RR(pi)
>> >> > False
>> >>
>> >> > but I sort of expect pi to act like the number pi when used with
>> >> > things like == or <, without using the .n() decoration.
>> >>
>> >> Nope.  Pi is symbolic.
>> >>
>> >> I'm certainly open to doing some simplification to True/False of
>> >> symbolic
>> >> equalities though, when we can do so.  I think the main reason we don't
>> >> now is simply that nobody implemented it.  Comments welcome.
>> >>
>> >>  -- William
>> > >
>> >
>>
>>
>>
>> --
>> William Stein
>> Associate Professor of Mathematics
>> University of Washington
>> http://wstein.org
>>
>>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to