investigating limit(abs(x),x,0) bug



After changing the mabs-subst function I get limit(abs(x),x,0) = 0 and 
no tests break. I replaced
(COND ((ZEROP1 D)  (SETQ D (BEHAVIOR A VAR VAL))
			       (if (ZEROP1 D) (THROW 'MABS 'RETN))))
with
(if (AND (ZEROP1 D) (ZEROP1 (BEHAVIOR A VAR VAL)))
		(SETQ EXP (MAXIMA-SUBSTITUTE A `((MABS) ,ANS) EXP)))
I still don't understand what this BEHAVIOR function does. The MAXIMA 
documentation says that the algorithm described in Wangs's Ph.D thesis. 
My quesion is, is the thesis available online somethere? I don't think I 
can find it in the nearest library here in Russia.
--
Andrei Zorine

Stavros Macrakis wrote:
>>In limit.lisp there's unreacheble code, I think. It's placed in the 
>>mabs-subst. It's (COND ... ((AND A D) (COND ((ZEROP1 D)... The second 
>>COND is never touched if D is zero. I don't understand this special 
>>treating of abs(0). Any comments?
> 
> 
> 1) I don't understand what you mean by "The second COND is never
> touched".  That clause is invoked in processing limit(x*abs(x),x,0), for
> example -- though Limit still doesn't get the answer there!
> 
> 2) You might also want to look at the code that is supposed to call
> both-side (see my bug report #782046) for limit's handling of abs -- why
> isn't both-side being invoked for various abs cases?
> 
>      -s
> 
> 
> 
>