Re: "Assuming"

*To*: mathgroup at smc.vnet.net*Subject*: [mg85611] Re: "Assuming"*From*: "David W.Cantrell" <DWCantrell at sigmaxi.net>*Date*: Thu, 14 Feb 2008 18:53:34 -0500 (EST)*References*: <fp0m11$5u7$1@smc.vnet.net> <fp192b$gju$1@smc.vnet.net>

dh <dh at metrohm.ch> wrote: > HI Markus, > > I think you are fooling yourself. Rather, I think you, Daniel, are fooling yourself. > Consider Simplify[(a^2 - 1)/(a - 1)] > > As a^2 - 1)== (a+1)(a-1) this will give (a+1). Naively interpreted (as, say, a beginning calculus student should do) (a^2 - 1)/(a - 1) should simplify to something equivalent to If[a == 1, Indeterminate, a + 1] Whether a CAS should interpret something like (a^2 - 1)/(a - 1) in a more sophisticated fashion is debatable, IMO. > This is true in general, for a==1 understood as limit. But of course Simplify should not -- and in fact does not -- "understand as limit" automatically. Here's a simple example: In[2]:= Simplify[Sin[a]/a, a == 0] Out[2]= Indeterminate That behavior is correct. OTOH, if Mathematica had been designed to "understand as limit" automatically under Simplify, then Out[2] should have been 1 instead. > Therefore, this has nothing to do with assumptions. But it arguably _should_ have had something to do with assumptions; that was part of the point Markus was making. > On the other hand, (a^2 - 1)/(a - 1) /. a -> 1 can not be calculated as > > it gives 0/0. Note that "/. and ->" mean replacement, not limit. If > > you want a limit, you have to say so: Limit[(a^2 - 1)/(a - 1), a -> 1] > > hope this helps, Daniel Compare the following: In[8]:= Assuming[x == 0, {x/x^2, x/x, x^2/x}] Out[8]= {1/x, 1, x} In[9]:= x = 0; {x/x^2, x/x, x^2/x} Out[9]= {Indeterminate, Indeterminate, Indeterminate} Of course, in Mathematica, Out[9] is correct. And arguably, Out[8] should have been the same as Out[9]. Here's a portion of a response of mine which appeared some years ago in this newsgroup. It's relevant to what Markus was asking about. ------------------------------------------------------- In a sense, there is something wrong. These simplifications are what David Stoutemyer called "misdemeanors" in his article "Crimes and Misdemeanors in the Computer Algebra Trade", _Notices of the American Mathematical Society_ 38:7 (1991) 778-785. In case anyone doesn't see why simplifying, say, x^0 to 1 is a misdemeanor: In Mathematica, 0^0 is regarded as being Indeterminate. Thus, without knowing that x is nonzero, Mathematica should not bluntly simplify x^0 to 1. Rather, it would seem that, in Mathematica, x^0 should simplify to, say, If[x == 0, Indeterminate, 1]. But such a result is normally considered to be too cumbersome to be practical; the "misdemeanor" simplification is considered preferable. All CASs known to me make such simplifications. ------------------------------------------------------- David W. Cantrell > markusbinder wrote: > > > Hi, > > > > > > I would appreciate some comments about the Assuming-function. Several > > examples using Mathematica 6 as follows: > > > > > > In[1]:= Assuming[a > 0, Simplify[a == -1]] > > > Out[1]= False > > > In[2]:= Assuming[a \[Element] Integers, Simplify[a == -1]] > > > Out[2]= a == -1 > > > In[3]:= Assuming[a \[Element] Integers && a > 0 && a < 2, Simplify[a^2< > > 1.1]] > > > Out[3]= True > > > In[4]:= Assuming[a \[Element] Reals && a > 0 && a < 2, Simplify[a^2 < > > 1.1]] > > > Out[4]= a < 1.04881 > > > > > > So far, everything seems pretty reasonable, but > > > > > > In[5]:= Assuming[a \[Element] Integers && a > 0 && a < 2, Simplify[(a^2 > > - 1)/(a - 1)]] > > > Out[5]= 1 + a > > > > > > whereas > > > > > > In[6]:= (a^2 - 1)/(a - 1) /. a -> 1 > > > Out[6]= Indeterminate > > > > > > I consider this as blunder (or bug?); I comprehend working with domains > > can be pretty tricky and of course I don't expect > > > > > > In[7]:= Simplify[(a^2 - 1)/(a - 1)] > > > > > > to yield > > > > > > Out[7]= "Beware, a != 1 neccessary!" > > > > instead of > > > > Out[7]= 1 + a. > > > > Am I tricked by some personal misconception of how Mathematica deals > > with Assuming plus fractions as shown above, or is this a mere flaw? > > > Thanks in advance for your corrections & suggestions. > > > > Best regards > > Markus Binder