Operations on inf



On 3/9/07, Jay Belanger <belanger at truman.edu> wrote:

> "Andrey G. Grozin" <A.G.Grozin at inp.nsk.su> writes:
> ...
> > Following your reasonong,
> > 0*x = 0 for all x
> > also should be preserved.
>
> Which, if inf is to be treated as a number on which arithmetic can be
> performed, is reasonable.


I am not sure what that means.  You can't adjoin INF to the "numbers on
which arithmetic can be performed" without either breaking some of the field
axioms or throwing in a huge bucket of infinities and infinitesimals.  Since
no one has a concrete proposal to do the latter, we are forced to break some
axioms.

The Maxima objects INF, UND, etc. have in the past not participated in
arithmetic at all -- they have been outside the arithmetic system, and serve
to indicate objects that can't be represented in arithemetic.  Once you have
an INF in the system, you are committing yourself to losing information (I
think we all agree that 1/(2*inf) = 1/(3*inf) = 0, and that 1/(1/2*inf)) is
not 2 (or 3), but UND.)

If you start doing things like 0*inf=0 and 1^inf=1, you are arbitrarily
adding back information into the system, essentially guessing what the
answer should be. I would rather be failsafe, and acknowledge that these are
not well-defined, just like 0^0 (scary to disagree with Knuth, but...).

There is a simple way out, I suppose. You don't ever give normal finite
results when the inputs involve INF; you give some special object, e.g.
1/inf => zeroa (terrible name, but that's what Limit currently uses), and
1+zeroa stays 1+zeroa.  1/infinity has to be zeroC or something.  Then,
presumably, you make sure that (1+zeroa)^inf either doesn't simplify, or
simplifies to UND.  Are we willing to deal with that complexity?

                 -s