# Why does Mathematica not seem to know that $i^x$ cannot be equal to $0$?

I am experiencing a curious behaviour of Simplify when handling expressions involving powers of $\mathbf{i}$, such as $\mathbf{i}^x$ where $x$ is unknown.

For example, when I take the equation 2^x a == 0, and I ask Mathematica to simplify it for me by calling Simplify[2^x a == 0], it rightly answers that the original equation is equivalent to a==0; hence clearly Mathematica's Simplify "knows" that taking a power of something non-zero cannot produce a zero. However, if I ask about I^x a == 0, then the result of Simplify is merely I^x a == 0, i.e. what I started with. This remains true after adding the assumption that $x$ is an integer or changing Simplify to FullSimplify (i.e. FullSimplify[I^( x) a == 0, Assumptions -> {Element[x, Integers]}]. It would be much more convenient if

This is obviously not a serious problem, but it can be a nuisance when I need to simplify a number of equations and would like to quickly see the result in a relatively uncluttered form. Also, I am curious about why things work the way they do, i.e. why complex powers are treated so much differently than real powers. Thank you for any solution to the problem, and/or explanation of this phenomenon. (A solution would be a way to "teach" Mathematica to eliminate factors like I^( x) in equations like I^( x)*(something)==0).

-
Well, I think in your example the two problems are mathematically different. As $x$ goes to $-\infty$, $i^x$ certainly takes the values $1$ and $-1$ infinitely often (for $x$ congruent to $4$ and $2$ modulo $4$, respectively). After replacing $I$ by $2I$ in your example, the limit comes out as $0$. –  Feanor Oct 31 '13 at 0:15
On V 9.01, I get Simplify[2^x a == 0] as 2^x a ==0 not a==0 ? screen shot !Mathematica graphics –  Nasser Oct 31 '13 at 0:28
@Nasser: I'm using V 8.0. I didn't realise this would differ between versions. –  Feanor Oct 31 '13 at 0:30

We can actually 'teach' Simplify using the option TransformationFunctions.

dropPows[Power[_?NumericQ, _] a_ == 0] := a == 0

Simplify[I^x a == 0, TransformationFunctions -> {Automatic, dropPows}]
(* a == 0 *)
-
Thanks! It works as I was hoping it would. –  Feanor Oct 31 '13 at 0:12

Maybe this is a difference in versions (9.0.1), but when I do:

FullSimplify[2^x a == 0, x \[Element] Reals]
a == 0

Replacing 2 with I gives the same answer

FullSimplify[I^x a == 0, x \[Element] Reals]
a == 0
-