Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Can someone explain to me why the following does not simplify to True (as all constituents are positive)?

FullSimplify[a+b/(c+(d-e)^2)>0,Assumptions->And@@Thread[{a,b,c,d,e}>0]]

Most special cases including e=0 or a=b,... do simplify correctly.

What I eventually want to do is to simplify expressions of the kind

Abs[a+b/(c+(d-e)^2)],

which should evaluate to a+b/(c+(d-e)^2) under given assumptions.

Any workarounds?

Edit
What I ended up doing for larger expressions was this:

expr[Abs[a+b/(c+(d-e)^2)]]/.Abs[x_]/;Simplify@Reduce[$Assumptions&&x>0]:>x

It's not particularly pretty, but it works. Thanks to ssch for the idea!

share|improve this question

2 Answers 2

up vote 5 down vote accepted

One workaround is to use Reduce instead, and simplify that with FullSimplify:


assum=And @@ Thread[{a, b, c, d, e} > 0];
Reduce[assum && a + b/(c + (d - e)^2) > 0]
(* Out: e > 0 && d > 0 && c > 0 && b > 0 && a > 0 *)
FullSimplify[%, assum]
(* Out: True *)
share|improve this answer
    
Good idea! Should have thought of that... –  sebhofer Jul 9 '12 at 18:10
    
I just realized that this actually doesn't help me. What I would like is Mathematica to simplify Abs[a + b/(c + (d - e)^2)] for given assumptions. –  sebhofer Jul 9 '12 at 18:25

Either of the below logical formulations will handle this. Generic simplifiers might or might not react well to logical expressions.

In[21]:= Resolve[
 ForAll[{a, b, c, d, e}, 
  Implies[And @@ Thread[{a, b, c, d, e} > 0], 
   a + b/(c + (d - e)^2) > 0]]]

Out[21]= True

In[20]:= Resolve[
 ForAll[{a, b, c, d, e}, And @@ Thread[{a, b, c, d, e} > 0], 
  a + b/(c + (d - e)^2) > 0]]

Out[20]= True
share|improve this answer
    
That's very interesting to know! I didn't even know Resolve existed. But is there also a way to simplify Abs[...]? Of course I could do a replacement and apply your trick (or ssch's) but that's not very elegant. –  sebhofer Jul 9 '12 at 19:24
    
Might be a straightforward way but none is coming to mind right now. –  Daniel Lichtblau Jul 9 '12 at 19:43

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.