Re: "Assuming"

*To*: mathgroup at smc.vnet.net*Subject*: [mg85788] Re: "Assuming"*From*: "David W.Cantrell" <DWCantrell at sigmaxi.net>*Date*: Fri, 22 Feb 2008 05:04:10 -0500 (EST)*References*: <fp0m11$5u7$1@smc.vnet.net> <fp192b$gju$1@smc.vnet.net> <fp2khg$pka$1@smc.vnet.net> <fp3ui0$9jt$1@smc.vnet.net> <200802171221.HAA01121@smc.vnet.net> <fpdvhm$rra$1@smc.vnet.net>

Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote: > In fact there is a perfectly clear mathematical sense in which it is > true that (a^2 - 1)/(a - 1) is exactly equal to a-1. (You intended a+1.) Of course. And _precisely to exclude that sense_ in regard to my comments, I had said, early in my original response, "Naively interpreted (as, say, a beginning calculus student should do)... Whether a CAS should interpret something like (a^2 - 1)/(a - 1) in a more sophisticated fashion is debatable, IMO." > Consider the > field of fractions of the ring of polynomials in F[a], where F can be > the field of rationals or reals or complexes and a is what is > sometimes called "an indeterminate". In other words, its elements are > rational functions of the form p(a)/q(a). Then, in this field of > fractions (a^2 - 1)/(a - 1) is exactly equal to a+1. If you are > algebraically minded (like myself) than you may like to think of > Mathematica itself as a (admittedly rather unusual) algebraic > structure generated by all syntactically correct symbols and the n-ary > operations Times and Plus, and subject to certain relations. Note that > almost anything in Mathematica can be "added" to or multiplied by > almost anything else and we get things such as: > > In[1]:= Simplify[("dog"^2 - 1)/("dog" + 1)] > Out[1]= "dog" - 1 > > Well, clearly "dog" being a string, can't be set equal to 1 or > anything else, it is simply a Mathematica expression (in this case a > string) but the rules for Plus, Times and Simplify apply all the same. > This is what I mean when I say that I like to think or Mathematica in > algebraic sense - to put it somewhat crudely all that Mathematica does > is to perform certain "dumb" algebraic transformations using certain > rules. It certainly does not "take limits" or do any other of the sort > of more sophisticated mathematical thinking that is required when > dealing with limits (you can't really talk of limits unless you have > some sort of topology and "dumb algebraic manipulation" is not taking > limits even if it looks like it. Right. > So I think there is no need to consider the fact that a^2/a returns 1 (You intended a.) > as any kind of "misdemeanor", even the most minor one. > > However, things get somewhat more subtle when assumptions are > involved. In the case, > > In[2]:= Assuming[x == 1, Simplify[(x^2 - 1)/(x - 1)]] > Out[2]= 2 > > it would, ideally, be preferable to get some other answer, since now > one could argue that under the assumption that x is the real number 1, > we are no longer working in a field of rational functions but rather > in the field of real numbers, where the expressions is not defined > (or,arguably, could be defined as Indeterminate). Mathematica does not > do this because it is much more efficient to perform any algebraic > cancellations that can be performed before substituting values. So the > practical considerations win over strict mathematical correctness > (perhaps). But in any case, once this behaviour is understood as a > "principle" of "computer algebra", one can use it just as reliably as > any other formal algebraic rule. That behavior should be mentioned somewhere in the documentation. For all I know, it _is_ mentioned somewhere; if that is the case, then I agree with you that there is no "misdemeanor". But even then, I still think it's debatable whether that behavior is ideal. But if it were considered to be ideal, then one could go further, using a system in which any function having removable singularities at which the function is Indeterminate are taken to be equivalent to the corresponding function having those singularities removed. Then, for example, in such a system, 0^Abs[x] and Sin[x]/x would be equivalent to 0 and Sinc[x], resp. In regard to the latter, note that In[9]:= FunctionExpand[Sinc[x]] Out[9]= Sin[x]/x One person mentioned to me in a private email about this thread "...most mathematicians I know consider it a given that all removable singularities are removed. I simply don't understand why Simplify simply doesn't make this assumption..." I suppose he meant only removable singularities _at which the function is Indeterminate_. But I do know of a case where Mathematica goes even further, removing a singularity at which the function is defined as a number: In[17]:= FullSimplify[UnitStep[-x^2]] Out[17]= 0 despite the fact that correctly In[18]:= UnitStep[-x^2] /. x -> 0 Out[18]= 1 Perhaps the simplification above is considered a bug, perhaps not. David

**References**:**Re: "Assuming"***From:*"David W.Cantrell" <DWCantrell@sigmaxi.net>