Representing the case "no result"



On Tue, Jun 9, 2009 at 1:26 PM, Dieter Kaiser <drdieterkaiser at web.de> wrote:

> ...defint throws a Maxima error, when a divergent integral is found. My
> suggestion was not to throw a Maxima error, because it is not an error
> to have a divergent integral. It does not make sense to break and to
> have a look in the routine which has detected the divergent integral.
>
> The question was: What should be the return value instead of throwing an
> error?
>
> Here is a list of suggestions so far:
>
> 1. A symbol 'divergent
> 2. An empty list
> 3. An expression like (($NOOBJECT))
> 4. A tagged expression like (($NOOBJECT) gensym)
>
> We get a next proposal:
>
> 5. An element NoObject[i] of an array of NoObjects
>

Another possibility: something like 'divergent('integrate(x,x,0,inf)).  The
main problem with that is that Maxima will happily simplify
divergent('integrate(x,x,0,inf)) - divergent('integrate(x,x,0,inf)) => 0.
Then again, it will also simplify 'integrate(x,x,0,inf) -
'integrate(x,x,0,inf) => 0.

If 'divergent('integrate...) is too big, we can have it print as an
abbreviation by default, e.g. 'divergent!.  Same thing, by the way, for
'divergent(?G2342): nothing says we have to *print* the ?G2342.


> My first idea was to search a general and user friendly expression which
> Maxima does not change or use in further calculations. Therefore the
> empty list.
>

But this gives no information about what exactly went wrong, and an empty
list is a perfectly good object.

          -s