Re: Gross Bug in Simplify
- To: mathgroup at smc.vnet.net
- Subject: [mg32653] Re: [mg32585] Gross Bug in Simplify
- From: "Fred Simons" <f.h.simons at tue.nl>
- Date: Fri, 1 Feb 2002 16:10:58 -0500 (EST)
- References: <200201300819.DAA29963@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
During the long time I am using Mathematica I met many bugs, but after some thinking in most cases I found that it was not a bug in Mathematica but a bug in understanding. I think the same applies to the Gross Bug in Simplify. To me it seems to be regular behaviour with respect to a rule that from a mathematical point of view makes no sense. It has nothing to do with the indicated pattern matching. Let us have a closer look at the example. A substitution rule is defined for expressions with head Power. So when entering expressions such as 2 - f[4] nothing happens since Power is not involved in the evaluation. But since Simplify has a curious effect, somewhere during the simplification expressions with head Power must occur. We can ask Mathematica to print these cases. Unprotect[Power]; Power[x___] := Null /; (Print["Power"[x]]; False) ClearAll[f]; Simplify[ 3 + 4 f[4] ] results in the printing of Power[f[4],0] Power[f[4],1] So it seems that during simplification Mathematica replaces the integer 1 with f[4]^0 and f[4] itself with f[4]^1. By defining f[u__]^v_ ^:= f[u] we allow Mathematica to replace the number 1 with f[4]. It is not Mathematica that introduces this strange substitution! Anyway, 3 + 4 f[4] now simplifies along the lines 3*1+4f[4], 3f[4]+4f[4], 7f[4]. That 1-x f[4] does not simplify to (1-x)f[4] is because of the latter expression is not simpler. It is an interesting puzzle to explain why 5+f[3]-f[4] now simplifies to 5 f[3] f[4], a product! Fred Simons Eindhoven University of Technology