       Re: Re: Re: Hold and Equal

• To: mathgroup at smc.vnet.net
• Subject: [mg73806] [mg73806] Re: [mg73770] Re: [mg73739] Re: [mg73715] Hold and Equal
• From: Carl Woll <carlw at wolfram.com>
• Date: Fri, 2 Mar 2007 06:01:49 -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
>>
>>
>>
>
>
>

```

• Prev by Date: Re: Regression
• Next by Date: Re: Overlaying a grid on graphics to guide placement
• Previous by thread: Re: Re: Hold and Equal
• Next by thread: Re: Hold and Equal