I need to find the conditions for the real part of a complex number to be negative. I thought Reduce would be perfect for this, but it gives redundant output (even after simplification). For example:

In[543]: Reduce[{Re[-1 - Sqrt[a - b] ] < 0, a > 0, b > 0}, {a, b}, Complexes]
Out[543]: a > 0 && (0 < b < a || b >= a)  

As a and b are assumed to be real because they appear in an inequality, there needs to be no further assumption about the relation between a and b, the result I expect is:

Out[543]: a > 0 && b > 0  

is there a good reason why that is not obtained? The (in my eyes) redundant results accumulate for more complex expressions and I need to reduce quite a few of them. Is there a trick to get the expected result? I played around with choosing Reals as the domain and choosing no Domain at all, but nothing really gives me what I want. By the way I am analyzing the stability of fixed points by checking eigenvalues...a very common task.

2

There are 2 answers

0
Szabolcs On BEST ANSWER

I don't know why Mathematica won't return the result you are expecting in one step, but here's how to obtain it in two steps:

Mathematica graphics

Generally, the two functions that can deal with inequalities in a general way are Reduce and LogicalExpand. (But my knowledge is very limited in this area!) I believe (Full)Simplify will only use the latter one.


A comment on setting domains in Reduce:

Note that the documentation says: "If dom is Reals, or a subset such as Integers or Rationals, then all constants and function values are also restricted to be real." Hence if you were to specify the domain as Reals as in @belisarius's answer, Reduce would return 0 < b <= a which is necessary for Sqrt[a-b] to be real as well.

3
murray On

Wrap the Re[...] expression with ComplexExpand and you'll get the expected result a > 0 && b > 0.