I think this is OK. log(exp(x)) != x, it equals x + 2*pi*I*n for whatever integer n give an imaginary part between 0 and 2*pi*I. But adding an imaginary value won't change what's imaginary.

Ahh, but there may be an issue with the fact that we don't consider 0 to be imaginary. log(exp(x)) = 0 when x = 2*pi*I, which is imaginary. IMHO this is a pretty good argument for making 0 imaginary. Otherwise, we have to check if x is an integer multiple of 2*pi*I, which is not easy to do in the assumptions system, even the new one.