solve remembers too much, asks odd questions.



maxima 5.21.0

solve(z=y^b,y)   asks if b is an integer.  type the same command again
and it doesn't ask if b is an integer, but assumes the previous result.
Is this intentional,  remembering that information? I think it is an error.

if b is not an integer, Maxima asks if z is positive, negative or zero,
which excludes the possibility that z is  complex.

Characterizing the solution set is not easy. Mathematica says y=z^(1/b) with
a warning about inverse functions.  Mathematica's Reduce[...] instead of
Solve, which is supposed to characterize all solutions, seems not to 
terminate.
(Mathematica 7.0)

What, then, is the minimal constraint on y and b such that ...

    y = (y^1/b)^b ??

Let's pick a simple example, b=1+i.

define  t(y) =  y - y^(1/b)^b.

If Maxima (for example) is doing the computation "correctly" can we
expect that t(y)==0 ?

define tt(y):rectform(ev(t(y),numer))  to make the results easier on the 
eye.

tt(1.0) is indeed 0.0  hurrah.

but tt(1.1) is not zero.  tt(0.9) is not zero. not even close.

tt(1.0+0.001*%i) is not zero.

plot2d(tt(x),[x,0,5]) suggests that tt(x) is almost NEVER zero, for real x.

when IS tt(y) equal to zero??

A solution is discussed here ..
http://www.cs.berkeley.edu/~fateman/papers/y=z2w.pdf

What does this mean?
(a) generalizing from real to complex cannot be done by handwaving, 
analogy, guesses
at what the user really wants, or just letting the program run and see 
what comes out.

(b) generally, if you want to talk about the range of a function,
you should be talking about the range of the function, not the domain.