x * (a=b) => x*a = x*b
x + (a=b) => x+a = x+b
(a=b)^2 => a^2 = b^2
so why do we have
x . (a=b) => x . (a=b) (??)
rather than x . a = x . b
(a=b)^^2 => (a=b)^^2 (??)
etc.
I do understand why we have
f(a=b) => f(a=b) rather than f(a)=f(b)
... because in general f may be an operation on
equations. Some operations nonetheless do distribute
over "=", notably
diff, taylor, limit,
cabs, rectform, realpart, imagpart, etc.
integrate is particularly clever, adding an
integration constant
though mathematical functions such as sin, log, etc. do
not.
The distribution over an equation has been implemented in mdot.lisp revision 1.9 for the operators "." and "^^".
Closing this bug report as fixed.
Dieter Kaiser