# Inequalities with assumptions and constraints

I'm using Mathematica 8

I've been searching the net without luck for this specific solutions:

Suppose I have an inequality f(x;M,m)>0 where I KNOW that M>4m and m>0. How can I let Mathematica know this so that when solving the inequality using Reduce I don't get twenty irrelevant solutions, but instead only solutions where 0<4m

I've used assumptions and so on but without luck, for instance:

Assuming[m > 0, Reduce[(x + m)*(x - m) < 0]]


Produces;

x \[Element] Reals && (m < -Sqrt[x^2] || m > Sqrt[x^2])


m<-Sqrt is unnecessary here, so why does Mathematica write it out? How can we stop it?

-
Like Reduce[{(x + m)*(x - m) < 0, m > 0}]? – J. M. Apr 11 '13 at 18:24
Hey thanks for the tip...it works. Also it seems that one can have several constraints by using a simple comma. Thanks man! – Ker Apr 11 '13 at 18:27
Just fit everything into a list: Reduce[{equation, inequality1, inequality2, ...}] – J. M. Apr 11 '13 at 18:28

Assumptions and the command Assuming (which makes assumptions locally), don't affect Reduce. A good way to check whether a given command (say Solve) is affected by Assuming is to look through the Options for that function and see if Assumptions is among them. If not, then Assuming won't work either (at least to my knowledge).
So if you want to use Reduce inside Assuming and make sure that Reduce obeys the assumptions, you could include them in the list of expressions as follows:
Assuming[m > 0, Reduce[{$Assumptions, (x + m)*(x - m) < 0}]] (* ==> m > 0 && -Sqrt[m^2] < x < Sqrt[m^2] *)  Here I'm invoking the variable $Assumptions in a list together with the inequality that I want Reduce to work with.