Re: Problems with easy simplifications

*To*: mathgroup at smc.vnet.net*Subject*: [mg54162] Re: [mg54143] Problems with easy simplifications*From*: "David Park" <djmp at earthlink.net>*Date*: Sat, 12 Feb 2005 01:57:14 -0500 (EST)*Sender*: owner-wri-mathgroup at wolfram.com

Antonio, Check the Attributes of the If statement. Attributes[If] {HoldRest, Protected} The second and third arguments are not evaluated. Why is this? Because sometimes the not choosen branch might be an invalid expression that would lead to an error message. Only the choosen branch is evaluated. In your example Mathematica can't determine if x < a so it chooses none of the branches and none of them are evaluated. You could overcome this by changing your definition. H[x_, a_, b_] := If[x < a, Evaluate[ a + b], Evaluate[a - b]] H[x, 0, 0] If[x < 0, 0, 0] David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ From: Antonio González [mailto:gonferh2o at esi.us.es] To: mathgroup at smc.vnet.net I have found some weird behaviors of Mathematica (5.0) related to the simplifications of easy expressions. Take, for instance the function H[x_, a_, b_] = If[x < a, a + b, a - b] If I try now to evaluate H[x,0,0] the result If[x < 0, 0 + 0, 0 - 0] (the values of a and b are irrelevat, a similar result is obtained, for instance, with a=1, b= 2, or any integer, real or complex values). I cannot force (at least in a simple way) Mathematica to make the addition or the substraction. The action of Simplify or FullSimplify leaves the expression unchanged while a Map of Simplify MapAll[Simplify, H[x, 0, 0]] produces If[x < 0, Simplify[Simplify[0] + Simplify[0]], Simplify[Simplify[ 0] + Simplify[Simplify[-1] Simplify[0]]]] Something even worse happens if a use values already defined. For instance c = 0; d = 0; H[x_] = If[x < c, c + d, c - d] produces If[x < 0, c + d, c - d] In this case, the addition is not necessary. c = 0; d = 0; H[x_] = If[x < c, c, d] leads to If[x < 0, c, d] Similar problems arise using the function Which. Any explanation or help with this malfunction would be welcome. -- Antonio (Eliminar el agua para responder por e-mail - Remove water to reply by e-mail)