I am trying to symbolically Reduce the following (admittedly complicated) inequality:

x = (b1 - 
     b2) (1 - b1 + 
      b2)^2 ((b1 - b2) ((b1 - b2)^2 + (2 - 3 b1 + 3 b2) bMax) + 
     2 (1 - b1 + b2)^2 bMax Log[1 - b1 + b2]);

FullSimplify[Reduce[x > 0 && 0 < b1 < b2 < bMax && bMax > 0]]

When I run this code, I am told "This system cannot be solved with the methods available to reduce."

The workaround described in this post is not working for me, as I still ultimately receive the same error when evaluating an inequality involving the Log term. Is there any other way reduce the inequality symbolically (i.e., analytically)?

  • 1
    $\begingroup$ There appears to be an extra "> 0" at the end of your definition of $x$. $\endgroup$
    – LouisB
    Sep 24, 2022 at 23:22
  • $\begingroup$ @LouisB Whoops, sorry, I fixed it! $\endgroup$
    – MathIsHard
    Sep 24, 2022 at 23:32

1 Answer 1


I do not know if a single Reduce call will do it, but I can help OP with analyzing this problem.

A simple observation is that OPs expression only depends on the difference b2-b1. Therefore, let us replace this by a new symbol that I will call u. The assumptions that OP has given imply 0<u<bMax that we will use below.

Replace b2-b1 with u as follows:

(* u (1+u)^2 (u^3+bMax u (2+3 u)-2 bMax (1+u)^2 Log[1+u]) *)

Note that the expression does not contain b1 and does not contain b2. The first factor is positive, u>0. The second factor is positive, (1+u)^2>0. Therefore the inequality x2>0 is equivalent to the third factor being positive. Let me use Reduce for just that problem:

reduce[bMax_] := Reduce[u^3+bMax u (2+3 u)-2 bMax (1+u)^2 Log[1+u]>0 && 0<u<bMax];

The idea is that if we provide a number for bMax, then there us only one variable left, namely u, and then Reduce is much more likely to produce something useful. Here are two examples

(* 0 < u < 3/2 *)

(* False *)

In the first example, all u are allowed, meaning all u that satisfy the obvious inequality 0<u<bMax. In the second example, no u is allowed. By experimenting a little bit, the following picture emerges:

  • If 0 < bMax <= 3/2, then all u that satisfy 0<u<bMax are allowed.
  • If bMax >= threshold, then no u is allowed. The threshold is near 2.16258..., a symbolic expression is given below.
  • If 3/2 < bMax < threshold, then the variable u must lie in an interval of the form lower[bMax] < u < bMax. The function lower[bMax] is defined below.

Here is an example from the third case:

(* 1.57...<u<2 *)

The lower bound is some Root object.

Code to produce the lower bound directly would be

lower[bMax_]:=u/.First[Solve[{u^3+bMax u (2+3 u)-2 bMax (1+u)^2 Log[1+u]==0,u>0},u]];

The threshold mentioned above is that value bMax where lower[threshold] becomes equal to threshold. Explicit code for this is

   u^3+bMax u (2+3 u)-2 bMax (1+u)^2 Log[1+u]]==0,u>0}]]
(* 2.16... given as a Root object*)

Note. I did not provide a proof of each step, especially when I wrote down the three cases above. Some more work would be required to prove these things in detail. OP may also want to try to run reduce[bMax] with bMax symbolic, maybe it will return something useful.

Plot. Here is a plot for 3/2 < bMax < threshold:

enter image description here

The yellow curve is not linear but it is approximately linear:

(* a linear approximation to lower[bMax] *)

This was generated using

With[{aux=u^3/(-u (2+3 u)+2 (1+u)^2 Log[1+u])},ParametricPlot[{{aux,aux},{aux,u}},{u,0,threshold},AspectRatio->1,AxesLabel->{"bMax"},PlotLegends->{"bMax","lower[bMax]"}]]
  • 1
    $\begingroup$ Thank you so much!! This was extremely helpful $\endgroup$
    – MathIsHard
    Sep 25, 2022 at 16:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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