Handling branch cuts for hypergeometric functions



When I get a non-trivial asksign question, I often answer it by
assuming "typical" values for the parameter.  For example, if it asks
the sign of x^3-y^2, I'll consider that in my problem x is roughly
10^2 and y is roughly 1, so clearly it's positive.

What if we made that approach more systematic?

That is, you could declare a "typical value" of a variable somehow,
and asksign quesions would use those typical values, something like
this:

      declare(x,typical_value,10^2)$
      declare(y,typical_value,1)$

       asksign(x^3-y^2)
       Asksign called on x^3-y^2; with typical values x=100 and y=1,
         evaluates to 999999; returning POS.

Even better if you could declare them during the asksign exchange:

      asksign(x^3^-y^2)
       Is x^3-y^2 pnz?
       _x == 10^3;
       Asksign called on x^3-y^2; with typical value x=1000,
          evaluates to 1000-y^2, value unknown.
       Is 1000-y^2 pnz?
       _y == 1;
       Asksign called on x^3-y^2; with typical values x=1000 and y=1,
          evaluates to 999999; returning POS.

Of course, this typical value thing would be much less useful if we
had interval arithmetic, or if assume/is knew how to use interval
analysis, e.g.

      assume(x>500,x<5000,y>1/10,y<10)$
      asksign(x^3-y^2)$
        ........currently doesn't know

Thoughts on this half-baked notion?

It would surely be better and more general simply to improve
assume/is.  Is the above too ugly to try in the meantime?

          -s