Re: Related quastions. Question 2

• To: mathgroup at smc.vnet.net
• Subject: [mg57542] Re: Related quastions. Question 2
• From: dh <dh at metrohm.ch>
• Date: Wed, 1 Jun 2005 06:01:28 -0400 (EDT)
• References: <d7dp49\$qav\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Hello Kazimir,
you want to automatically thread over Equal.
There is a small pitfall, you can not thread over Set, otherwise
equation = .. ==  ..
will not work.
Well, this can be done be redefining Equal like e.g.:

Unprotect[Equal];
f_[x1___, Equal[y1_, y2___], x2___] ^:= Equal[f[x1, y1, x2], f[x1,
y2,x2]] /; f =!= Set

This defines an UpValue for Equal that threads any operator except Set
over Equal.
Here is a (silly?) example:

eq= x == (a+b)^2
eq - (a^2+2 a b + b^2) gives -a^2-2*a*b-b^2+x ==-a^2-2*a*b-b^2+(a+b)^2
eq - (a^2+2 a b + b^2) //Expand  gives -a^2-2*a*b-b^2+x == 0

Sincerely, Daniel

Kazimir wrote:
> Dear Bob,
>
> you gave the example
>
> Print["Equation to solve for x"]
> a x + b == c
> Print["Subtract b from each side"]
> # - b & /@ %%
> Print["Divide each side by a"]
> #/a & /@ %%
>
> It works but i do not like very much expressions with  %%, as I should
> not insert more lines before it or I have to modify this symbol. I
>
> expr= (a x + b == c)
>
> and then make a transform like expr1 =  expr - b. It clearly does not
> work. Could you advise me a mathematical operartion over expression
> which would return a x == c - b .
>
> The best thing I found was
> expr = (a x + b == c)
> Distribute[#1 - b &@expr, Equal]
> however, it does not work in all cases that I need.
>