Re: Replacement Rule with Sqrt in denominator

*To*: mathgroup at smc.vnet.net*Subject*: [mg114679] Re: Replacement Rule with Sqrt in denominator*From*: Jack L Goldberg 1 <jackgold at umich.edu>*Date*: Sun, 12 Dec 2010 05:47:32 -0500 (EST)

Andrzej you're 100% correct and indeed in the application in which this came up I eventually realized the problem and worked around it in essentially the same way you suggested. Getting around it is one thing but why it happens is another. After all, such behavior is really poor design. Why should I have to spend hours on this "feature" until I discovered that the FullForm of input 2<=x<=4 is not the same as the FullForm of the output of Reduce[2<=x<=4]? The Reduce function was imbedded in 50 lines of code and the error did not immediately suggest itself because there were many references to other functions throughout the code which could have been the culprit. This suggests that EVERY functions that returns 2<=x<=4 as output must be examined to see its FullForm before it can be used further, especially if one wants Part of the expression. Andrzej keep in mind the surprise factor here. Two functions return 2<=x<=4 but their outputs have different FullForms! Well maybe I'm nuts but this is bad functionality IMO. I can't help wondering whether there are other examples of this kind and when they are going to bite me. Jack Quoting Andrzej Kozlowski <akoz at mimuw.edu.pl>: > > On 11 Dec 2010, at 07:52, Jack L Goldberg 1 wrote: > >> >> a) Input as typed: 2<=x<=4. Look at its fullform. On my Mac >> running ver. 7 of Mathematica, I get returned, >> LessEqual[2,x,4]. >> >> b) Now type in Reduce[2<=x<=4]. You will get >> Inequality[2,LessEqual,x,LessEqual,4]. >> >> These are are different expressions! How can one program replacement >> rules when one can not be sure of the FullForm? These structures are >> entirely different. Which fullform can one assume is the one >> Mathematica sees >> in some complicated module wherein one step is a replacement rule? >> >> Jack Goldberg >> Mathematics >> University of Michigan >> > > O.K. but I don't see anything here that in any way contradicts > anything that has been said about the need for > for looking at FullForm before trying pattern matching. Actually, it > is also an argument against using Copy and Paste. To see that, > evaluate Reduce[2<=x<=4]. Now, copy the output and paste it into > another cell and wrap FullForm around it, then evaluate. You will > get LessEqual[2,x,4]. > > I don't see this as a problem, do you? You can certainly match both > forms with a single pattern: > > {2 <= x <= 4, Reduce[2 <= x <= 4]} /. > (a_) <= x <= (b_) | Inequality[a_, LessEqual, x, LessEqual, b_] :> {a, b} > > {{2, 4}, {2, 4}} > > > Andrzej Kozlowski > > > > >