--------------------------------------------------
From: "Richard Fateman" <fateman at cs.berkeley.edu>
Sent: Thursday, September 09, 2010 8:20 PM
To: "Richard Hennessy" <rich.hennessy at verizon.net>; "Maxima - list" <Maxima at math.utexas.edu>
Subject: Re: [Maxima] inf - inf = 0 ??
> On 9/9/2010 4:49 PM, Richard Hennessy wrote:
> ....
>
>
>>
>> Why do you insist that inf can be added, subtracted, multiplied and exponentialized (or squared). It is not a
>> number, don't apply the "numbers only" simplifiers to it.
>
> In fact, it is not the "numbers only" simplifier that is at issue. It is the "symbols" simplifier that must be
> modified to check, at some
> cost, for such special items.
>
> For any symbol x the simplifier does transformations like x+x -> 2*x. x/x -> 1. x-x=0. etc.
>
>>
>> inf - inf = inf - inf
>> inf + inf = inf + inf,
>> inf - inf = inf - inf
>> minf + minf = minf + minf
>> minf - minf = minf - minf
>> inf - minf = inf - minf
>> minf - inf = minf - inf
>> infinity + inf = infinity + inf
>>
>> Just leave it as is.
>
> Here's (one of) the problems. You can no longer simplify x-x ->0. The symbol x might be one of those nasty
> items.
> Worse, x might be an indeterminate or "variable", and later could be assigned a value like infinity. So instead of
> having
> a value 0, you have to say "0 unless x is a nasty item"
>
Well, I guess this is too weak, something could be done about it with featurep and declare.
declare(infinite, feature);
done
declare([inf,minf,infinity],infinite);
done
x:inf;
featurep(x, infinite);
I don't know how much is already being done behind the scenes with inf, minf, etc . . .
A (programmer) user could try to work this out, I am not sure if I could do it. I don't know if I could figure out all
the possibilities.
> You don't actually need infinity to get in trouble, since x/x->1 is really "1 unless x is zero".
When asked Maxima could display something like iif(notequal(x,0), 1). iif() is a new simplifying function in pw.mac.
iif(true, a, b) -> a, iif(false, a, b) -> b. iif(x>0,-x,x) can be changed to abs(x) with pw.mac conversion functions
for example. Its intent was for pw. Something like it could be used. I like this
a/a = iif(notequal(a, 0), 1, 'und);
limit(a*x,x,inf) = iif(notequal(a,0), inf, 0);
Typing a/a could optionally put notequal(a,0) on a list like conditions list. The second line need not affect this
list. The list would not be the facts list. That would be an error. This has to be a new list that Maxima does not
have yet. inf is probably already on a number of Maxima lists that I don't see. So maybe most of this work is already
done. I don't know.
I am digressing here, so I will stop now. These are just a few thoughts on the subject.
Rich
> The choice "just leave it as is" is untenable unless you have an extremely weak system model.
> For example, represent and operate on polynomials with integer coefficients. No division allowed.
>
>
> Certainly too weak to be a serious alternative to Maxima.
>
> RJF
>