Re: Gross Bug in Simplify
- To: mathgroup at smc.vnet.net
- Subject: [mg32601] Re: Gross Bug in Simplify
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Thu, 31 Jan 2002 01:45:25 -0500 (EST)
- Organization: Universitaet Leipzig
- References: <a38b1s$1r$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
- Sender: owner-wri-mathgroup at wolfram.com
Hi,
Mathematica is a bit stupid because it can't read your mind.
Hopefully future versions will improve this deficit.
1= f[u]^0 and f[u]=f[u]^1
But your rule
f[u__]^v_ ^:= f[u]
say f[u]^0 is f[u]. and
1-f[u] -> f[u]^0 -f[u] -> f[u]-f[u] ->0
Mathematica make *exactly* what you say, but
it make not what you *mean*
In[]:= f[u__]^v_ ^:= f[u] /; v>1
If you formulate the rule correct
In[]:= Simplify[f[4] - 1]
Out[]=1-f[4]
In[]:=Simplify[{1 - f[4], 1 - 7 f[4]^2, 1 + f[4], 1 - x f[4]}]
Out[]={1 - f[4], 1 - 7 f[4], 1 + f[4], 1 - x f[4]}
> There is a destructive bug in Mathematica (v4.1, win2000) in which Simplify
> misparses expressions m + n f[__], where m and n are numeric, as (m+n)
> f[__]. One can only wonder how many other rule combinations, with or
> without Simplify, are also faulty.
A programming system is never protected against the errors of its
users.
> The following example is a stripped-down version of some rules for f =
> Kronecker delta, which explains why the upvalue rule is needed. It is
> specifically this rule that seems to be causing the problem with Simplify.
> However, it's not the upvalue itself -- the problem remains if Power is
> Unprotected and the rule is replaced by Power[f[u__], v_] :> f[u].
>
> In[1]:=
> Clear[f];
> Simplify[1-f[4]]
> f[u__]^v_ ^:= f[u];
> Simplify[{1-f[4], 1 - 7 f[4], 1 + f[4], 1 - x f[4]}]
>
> Out[2]=
> 1-f[4]
>
> Out[4]=
> {0,-6 f[4],2 f[4],1-x f[4]}
>
> Doesn't WRI test all its built-in functions by running special diagnostic
> code on them round the clock? It's hard to imagine how a bug like this
> could have gone undetected!
WRI tests Mathematica and Mathematica is right here.
Regards
Jens