Opened 10 years ago

# Decide what to do with e^(y=x)

Reported by: Owned by: kcrisman burcin minor sage-6.4 symbolics maxima parsing robertwb Reported upstream. Developers deny it's a bug.

### Description

This sage-support thread describes the following problem:

```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^y=e^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.

### comment:1 Changed 10 years ago by kcrisman

• Report Upstream changed from None of the above - read trac for reasoning. to 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.

### comment:2 Changed 8 years ago by jdemeyer

• Milestone changed from sage-5.11 to sage-5.12

### comment:3 Changed 8 years ago by vbraun_spam

• Milestone changed from sage-6.1 to sage-6.2

### comment:4 Changed 8 years ago by vbraun_spam

• Milestone changed from sage-6.2 to sage-6.3

### comment:5 Changed 7 years ago by vbraun_spam

• Milestone changed from sage-6.3 to sage-6.4
Note: See TracTickets for help on using tickets.