Bug in lower limit of integration ?



Henry,

> (%i8) integrate(r,z,-sqrt(20-r^2),sqrt(20-r^2));
>      2
> Is  r  - 20  positive, negative, or zero?
>
> positive;
> Defint: Lower limit of integration must be real.

I don't see any bugs here. Maxima wants to ensure that the
limits of integration are real. In the absence of any info about r
(as supplied by assume), Maxima asks the user via the function asksign.


> (%i9)  integrate(r,z,-sqrt(20-r^2),sqrt(20-r^2));
> Defint: Lower limit of integration must be real.
>  -- an error.  Quitting.  To debug this try debugmode(true);

OK, this is a known bug: the previous asksign result, which caused an error,
wasn't cleaned up, and so it causes the same error.


> (%i1)  integrate(r,z,-sqrt(20-r^2),sqrt(20-r^2));
>      2
> Is  r  - 20  positive, negative, or zero?
>
> negative;
>
> When I answer negative, it works
>
> (%o1)                          2 r sqrt(20 - r^2 )

Well, that seems correct: r^2 - 20 < 0 iff 20 - r^2 > 0,
which implies the limits of integration are real.


asksign queries pop up in all kinds of places in Maxima;
I find it obnoxious. I'd rather see something like

  if 20 - r^2 in reals then <foo> else undefined ('integral (<blah blah blah>))

although Maxima is not quite capable of that yet.

FWIW
Robert Dodier