extending limit



Barton Willis wrote:
> I was playing with the idea of appending a simplim%function for the
> hypergeometric
> functions. To start, I wrote some 100% fake code:
>
>   
[snip]
> Limit assumes continuity?
>
>   (%i14) limit(hypergeometric([a],[b],x),x,0);
>   (%o14) 1
>
> Limit doesn't even try limit-hg?
>
>   (%i16) limit(hypergeometric([a],[b],x),a,0);
>   (%o16) limit(hypergeometric([a],[b],x),a,0)
>
>   
This is caused by the following in simplimit:

(defmfun simplimit (exp var val &aux op)
  (cond
    ((eq var exp) val)
    ((or (atom exp) (mnump exp)) exp)
    ((and (not (infinityp val))
      ;; *** HERE ***
      (not (amongl '(%sin %cos %atanh %cosh %sinh %tanh mfactorial %log)
               exp))
      (not (inf-typep exp))
      (simplimsubst val exp)))

Since hypergeometric isn't among the list of "special" functions,
simplimsubst is called. 

This looks like a bug in simplimit.  The list of special functions needs
to expanded.  Or probably better, it should be removed and the rest of
the code adjusted accordingly so that the special limit functions can
decide what to do about continuity and such.

Ray