4
$\begingroup$

Consider:

Expre10 = (B^2/C + 2 B + B^2/D + (B C)/D + (B D)/C) + 
   1 (C + D) - (A \[Beta] \[Sigma])/(B C D) (C + D);
Assuming[{A > 0, B > 0, C > 0, 
  D > 0, \[Beta] > 0, \[Sigma] > 0, (A \[Beta] \[Sigma])/(B C D) <=  
   1}, Simplify[Expre10 > 0]]

Returns the inequality:

B (B + C) (B + D) > A [Beta] [Sigma]

But we clearly see if (A \[Beta] \[Sigma])/(B C D) <= 1 holds then our inequality will always be true, so why am I getting the wrong output?

$\endgroup$
7
  • 1
    $\begingroup$ Aren't $C$ and $D$ reserved Mathematica commands? I wouldn't recommend using capital letters as variable names for this very reason. $\endgroup$
    – Moo
    Commented Sep 23, 2021 at 12:50
  • $\begingroup$ @Moo I didn't know, however I still get the same results with different letters $\endgroup$
    – Math
    Commented Sep 23, 2021 at 12:55
  • $\begingroup$ Look closer. The result you got is structured like (X > Y) > 0. To see why this is wrong, imagine doing (2 > 1) > 0 which returns True > 0 - this is incorrect. Your Expre10 already contains a > sign and your Simplify is adding on this extra > 0 at the end. $\endgroup$
    – flinty
    Commented Sep 23, 2021 at 12:59
  • $\begingroup$ I made a typo! Its still not resulting true. $\endgroup$
    – Math
    Commented Sep 23, 2021 at 13:03
  • 2
    $\begingroup$ C and D are protected system symbols. Best practice is to avoid single capital letters for your own variables. Recommended practice is to avoid starting your variable/function names with a captial. See mathematica.stackexchange.com/a/18395/4999, point 4. $\endgroup$
    – Michael E2
    Commented Sep 23, 2021 at 13:37

1 Answer 1

8
$\begingroup$

Simplify is at root an expression tree minimizer, equipped with some algebraic and logical transformations. As such, it may have the transformations needed to reach your goal, but its main goal is to apply transformations that result in smaller expression trees. It is also possible that it may not try the transformation needed to get to your goal. Functions whose purpose is to solve algebraic systems, such as Reduce, are generally more robust. They tend not to mind if all the cases to consider get quite complicated. Whereas Simplify is like a first-year university student who feels it's time to give up when things get complicated, Reduce is like a graduate student determined to impress their professor.

Expre10 = (B^2/C + 2 B + B^2/D + (B C)/D + (B D)/C) + 
     1 (C + D) - (A β σ)/(B C D) (C + D) /. C -> c /. 
   D -> d;
Assuming[{A > 0, B > 0, c > 0, 
   d > 0, β > 0, σ > 0,
   (A β σ)/(B c d) <= 1}, 
 Reduce[$Assumptions \[Implies] Expre10 > 0, {}, Reals]]

(*  True  *)

Specifying the domain Reals is key here, too.

$\endgroup$
0

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