You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
sage: var('y')
y
sage: (y==x).log()
log(y == x)
sage: (y==x).log().simplify() # just sends to Maxima and back to Sage
log(y) == log(x)
sage: (y==x).exp()
e^(y == x)
sage: (y==x).exp().simplify() # just sends to Maxima and back to Sage
TypeError: unable to make sense of Maxima expression 'e^(y=x)' in Sage
Basically, one can consider the problem in two ways - a Sage bug or a Maxima bug/feature. Depends on how you look at it.
Option 1: We don't expect an = sign inside of expressions in our parser in sage/misc/parser.py. Once you leave Parser.p_eqn, there is a lot of jumping around that happens, but it never gets back there, and that is the only place that replaces = with ==. So we should fix that.
Option 2: Maxima erroneously doesn't change e^(y=x) to e<sup>y=e</sup>x. With log, it does:
sage: var('y'); a = (y==x).log()
sage: a._maxima_()
log(y)=log(x)
But with exp, it doesn't:
sage: var('y'); a = (y==x).exp()
y
sage: a._maxima_()
%e^(y=x)
For now putting the upstream as 'none of the above' since it's not clear the bug is upstream.
Upstream: Reported upstream. Developers deny it's a bug.
For now I'm putting this as "upstream denies bug" because the sense on the list was not unanimous that it should always happen; certainly one doesn't always want to expand the ==, though for exp one might want to.
Robert Dodier had a partial fix:
Well, log is declared to distrubute over lists, matrices, and equations,
while exp is not so declared.
You can get the desired effect like this in a Maxima session,
or just put the Lisp code in maxima-init.lisp.
:lisp (setf (get '%exp 'distribute_over) '(mlist mequal))
(Note that this also declares that exp distributes over lists;
I hope that's not controversial. Exp shouldn't distribute over
matrices since exp(matrix) has another interpretation.)
However, this would not work with %e^(y=x), only exp(y=x), apparently.
This sage-support thread describes the following problem:
Basically, one can consider the problem in two ways - a Sage bug or a Maxima bug/feature. Depends on how you look at it.
e^(y=x)
toe<sup>y=e</sup>x
. With log, it does:But with exp, it doesn't:
For now putting the upstream as 'none of the above' since it's not clear the bug is upstream.
Upstream: Reported upstream. Developers deny it's a bug.
CC: @robertwb
Component: symbolics
Keywords: maxima parsing
Issue created by migration from https://trac.sagemath.org/ticket/11651
The text was updated successfully, but these errors were encountered: