Re: Re: Re: Hold and Equal

*To*: mathgroup at smc.vnet.net*Subject*: [mg73806] Re: [mg73770] Re: [mg73739] Re: [mg73715] Hold and Equal*From*: Carl Woll <carlw at wolfram.com>*Date*: Thu, 1 Mar 2007 06:08:12 -0500 (EST)*References*: <200702261112.GAA27677@smc.vnet.net> <200702271044.FAA23846@smc.vnet.net> <200702280928.EAA24217@smc.vnet.net>

Murray Eisenberg wrote: >OK, that does what I explicitly asked for, but what I asked for was an >oversimplified case of what I actually wanted... > >The trouble with my example is that the left-hand side of the >mathematical equality is an expression that Mathematica does not >automatically "evaluate". But suppose the left-hand side were, say, >Integrate[x^2,x]? Then when function step is applied to that, the >integral is actually evaluated on both sides of the equality produced. > >Moreover, if I try, say, > > step[Hold[Integrate[x^2,x]]] > >then Hold appears on both sides of the resulting equality. > >What I'm after is something that will allow me to show an equation of >the form, say, > > integral = evaluatedIntegral > >where the left-hand side uses the integral sign and a "dx" (as an >unevaluated expression), the right-hand side evaluates that integral, >and the entire expression appears in traditional mathematical form. > > > Make step HoldFirst (or HoldAll) SetAttributes[step, HoldFirst] Then, step[Integrate[x^2,x]] does what you want, although the explicit inclusion of Expand in the definition of step isn't necessary. Carl Woll Wolfram Research >Carl Woll wrote: > > >>Murray Eisenberg wrote: >> >> >> >>>How can I produce in an Output cell (under program control) an >>>expression like the following, >>> >>> (a+b)^2 = a^2+ 2 a b + b^2 >>> >>>where instead of the usual Equal (==) I get a Set (=), as in traditional >>>math notation? I want to input the unexpanded (a+b)^2 and have the >>>expansion done automatically. >>> >>>Of course, I can try something like the following: >>> >>> (a+b)^2 == Expand[(a+b)^2]) >>> >>>So how do I convert the == to =? Of course >>> >>> ((a + b)^2 == Expand[(a + b)^2]) /. Equal -> Set >>> >>>gives a Set::write error. And >>> >>> (Hold[(a + b)^2 == Expand[(a + b)^2]]) /. Equal -> Set >>> >>>doesn't actually evaluate the Expand part and leaves the "Hold" wrapper. >>> >>> >>> >>> >>Murray, >> >>How about using HoldForm? >> >>step[x_] := HoldForm[x = #] &[Expand[x]] >> >>step[(a+b)^2] >>(a+b)^2=a^2+2 b a+b^2 >> >>Carl Woll >>Wolfram Research >> >> >> > > >