On 3/8/07, Jay Belanger <belanger at truman.edu> wrote:
> "Stavros Macrakis" <macrakis at alum.mit.edu> writes:
> > Well, IEEE 754 is about floating-point, so 1^inf above was shorthand for
> 1.0^inf.
> But Maxima isn't always about floating point, so 1 and 1.0 are different.
I agree, I was being sloppy.
> Now here's the problem in Maxima. Unless we do a global analysis of every
> expression
> > (what Limit does), then expressions will simplify in the usual bottom-up
> way. What's
> > more, the expression may only be built piece by piece, so the whole
> expression may no
> > longer be accessible.
> >
> > So if you start with an expression like (1-1/inf)^inf, it will simplify
> to (1-0)^inf
> > then to 1^inf, which it is being proposed should simplify to 1. But
> following the
> > semantics I believe we all agree on for expressions with multiple inf's,
> the original
> > expression must be interpreted as limit( (1-1/x)^y, [x,y], inf),
> > which is IND.
>
> So if an expression involves inf, every constant c should be treated
> as an expression g(x) with lim g(x) = c? Ouch, that sounds awkward
> and unnecessarily complicated; when I type in "1", I mean "1", not
> "limit(1-1/x),x,inf)".
>
Agreed that when you type in 1, you mean 1. The problem comes when we start
enabling simplifications like 1/inf => 0. Then as far as Maxima is
concerned, it can't tell the difference between the 1 you typed in and the 1
that comes from 1+1/inf. Now I believe we agree that (1+1/inf)^inf must be
UND, since after all (1+1/x^a)^x = inf if a<1, %e if a=1, and 1 if a>1, so
how do we avoid the incorrect simplification (1+1/inf)^inf => 1?
As I say, there are sophisticated ways to avoid it (keep track of
infinitesimals -- though of course that doesn't cover all cases) and there
are simple ways (just failsafe to UND).
What would you propose?
-s