For every integer $x$ the equation Mod[x, 1] == 0 holds. While
Simplify[Mod[x, 1] == 0, Element[x,Integers]]
gives True,
Reduce[Mod[x, 1] == 0, x, Integers]
gives False. Why?
For every integer $x$ the equation Mod[x, 1] == 0 holds. While
Simplify[Mod[x, 1] == 0, Element[x,Integers]]
gives True,
Reduce[Mod[x, 1] == 0, x, Integers]
gives False. Why?
Reduce works fine for a slightly more sophisticated expression, e.g. :
Reduce[ ForAll[ x, x ∈ Integers, Mod[ x, 1] == 0], x]
True
however there is a bug in Solve :
Solve[ Mod[x, 1] == 0, x, Integers]
{}
therefore it is not surprising we have an analogical issue in Reduce :
Reduce[ Mod[x, 1] == 0, x, Integers]
False
Seemingly there has not been much clamor therefore it has not been a high priority to improve it.
One can work around these problems :
Reduce[ Mod[ a x, a] == 0 && a == 1, x, Integers]
C[1] ∈ Integers && a == 1 && x == C[1]
or simply
Reduce[ Mod[ x, 1] == a, x, Integers]
C[1] ∈ Integers && a == 0 && x == C[1]
Solve[ Mod[ x, 1] == a, x, Integers]
{{x -> ConditionalExpression[C[1], C[1] ∈ Integers && a == 0]}}
The above problems with Reduce and Solve were found in Mathematica 8. Before there had been :
ver. 7
Solve[ Mod[x, 1] == 0, x, Integers]
Solve::ifun: Inverse functions are being used by Solve, so some solutions may not be found; use Reduce for complete solution information. >>{{x -> InverseFunction[Mod, 1, 2][0, 1]}}
Reduce[ Mod[x, 1] == 0, x, Integers]
False
Now these bugs have been fixed :
ver. 9
Solve[ Mod[x, 1] == 0, x, Integers]
{{x -> ConditionalExpression[C[1], C[1] ∈ Integers]}}
Reduce[ Mod[x, 1] == 0, x, Integers]
C[1] ∈ Integers && x == C[1]
Solve now gives the correct result.
– Oleksandr R.
Dec 09 '12 at 18:00