Re: Gross Bug in Simplify
- To: mathgroup at smc.vnet.net
- Subject: [mg32643] Re: Gross Bug in Simplify
- From: "Alan Mason" <swt at austin.rr.com>
- Date: Fri, 1 Feb 2002 02:03:02 -0500 (EST)
- References: <a3api0$49r$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
"Andrzej Kozlowski" <andrzej at platon.c.u-tokyo.ac.jp> wrote in message news:a3api0$49r$1 at smc.vnet.net... > I can't see why you claim this is a bug and that it is caused by > > > Simplify misparses expressions m + n f[__], where m and n are > > numeric, as (m+n) > > f[__] > > It seems to me that what you are seeing is just a special case of the > following: > > In[1]:= > z/:z^v_=z; > > > > In[2]:= > Simplify[1-z] > > Out[2]= > 0 > > This seems to me entirely correct, since z==1 is the only complex number > with the property that z^(anything)==z. Thus it would appear that your > function f[z__] ought to have the value 1 for all arguments. This is > consistent with all your outputs. Maybe I am missing your point, but > mathematically at least there appears to be nothing wrong here. > Hello. To be sure, I can get things to work by adding a condition to the rule: In[33]:= \[Delta][u__]^v_ ^:= \[Delta][u] /; v \[NotEqual] 0 ; Simplify[(1-\[Delta][i,\[Mu]]) \[Delta][j,\[Mu]]] Out[34]= -(-1+\[Delta][i,\[Mu]]) \[Delta][j,\[Mu]] It seems counterintuitive to have to add the condition, even granting that Mathematica always treats f^0 as 1, even for symbols f. But your logic doesn't explain why my original rule (without the condition) gives In[51]:= Clear[\[Delta]] SetAttributes[\[Delta], Orderless]; \[Delta][u__]^v_ ^:= \[Delta][u] ; Simplify[(2- x \[Delta][i,\[Mu]]) \[Delta][j,\[Mu]]] Out[54]= (2-x \[Delta][i,\[Mu]]) \[Delta][j,\[Mu]] Clearly in this case, Mathematica isn't treating delta[__] as 1. Also, the phenomenon in question occurs only with Simplify-- not with other functions such as Expand, e.g. Perhaps someone can account for the behavior illustrated in the following notebook; I am unable to do so. I continue to think it's a "gross bug" in Simplify. :=)) Sincerely, Alan In[1]:= Clear[\[Delta]] SetAttributes[\[Delta], Orderless]; \[Delta][u__]^v_ ^:= \[Delta][u] ; Simplify[(2 - \[Delta][i,\[Mu]]) \[Delta][j,\[Mu]]] Simplify[(2- x \[Delta][i,\[Mu]]) \[Delta][j,\[Mu]]] Expand[(2- \[Delta][i,\[Mu]]) \[Delta][j,\[Mu]]] Out[4]= \[Delta][i,\[Mu]] \[Delta][j,\[Mu]] Out[5]= (2-x \[Delta][i,\[Mu]]) \[Delta][j,\[Mu]] Out[6]= 2 \[Delta][j,\[Mu]]-\[Delta][i,\[Mu]] \[Delta][j,\[Mu]] In[7]:= Clear[\[Delta]]; \[Delta][u__]^v_ ^:= \[Delta][u] /; v \[NotEqual] 0; Simplify[(2-\[Delta][i,\[Mu]]) \[Delta][j,\[Mu]]] Out[9]= -(-2+\[Delta][i,\[Mu]]) \[Delta][j,\[Mu]]