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 -~----------~----~----~----~------~----~------~--~---