# Why does my inequality require “AssumptionsMaxNonlinearVariables” -> 14?

I have the following code for simplifying an inequality:

glbcond =
{0 < d1 < 1, d1 ∈ Reals, 0 < d2 < 1, d2 ∈ Reals,
0 < d3 < 1, d3 ∈ Reals, 0 < e1 < 1, e1 ∈ Reals,
0 < e2 < 1, e2 ∈ Reals, 0 < e3 < 1, e3 ∈ Reals,
0 < Hd < 1, Hd ∈ Reals, 0 < Hu < 1, Hu ∈ Reals,
0 < L1 < 1, L1 ∈ Reals, 0 < L2 < 1, L2 ∈ Reals,
0 < L3 < 1, L3 ∈ Reals, 0 < Q1 < 1, Q1 ∈ Reals,
0 < Q2 < 1, Q2 ∈ Reals, 0 < Q3 < 1, Q3 ∈ Reals,
0 < u1 < 1, u1 ∈ Reals, 0 < u2 < 1, u2 ∈ Reals,
0 < u3 < 1, u3 ∈ Reals};

z2cond =
Hd < Hu < L1 < L2 < L3 < Q1 < Q2 < Q3 < u1 < u2 < u3 < d1 < d2 < d3;

Simplify[Abs @ (Q1 u1)/(d2 Q3) < 1, (And @@ glbcond) && z2cond]


Q1 u1 < d2 Q3

However, if I turn up the SystemOptions as suggested by this related post here as

SetSystemOptions[
"SimplificationOptions" -> "AssumptionsMaxNonlinearVariables" -> 14]


I get

Simplify[Abs[(Q1 u1)/(d2 Q3)] < 1, glbcond && z2cond]


True

So my question is, how exactly are the numbers of non-linear variables calculated? As far as I can see from my example, all the inequalities inside the argument for assumption are linear. Or does the calculation of number of non-linear variables involve both of the two arguments sitting inside Simplify?

This my first post on Mathematica.SE. I hope my post meets the site's posting conventions :)

• The way I see it is that your rational/polynomial inequality is nonlinear and the 4 variables in it are related to each of the variables in z2cond. Thus {Abs[(Q1 u1)/(d2 Q3)] < 1, z2cond} form a nonlinear system, which has 14 variables. (The whole with glbcond has 17 variables, but the e1, e2, e3 components can be factored out as a direct product and treated as linear....But I don't know for sure that's how Mathematica approaches it.) – Michael E2 Jun 9 '17 at 18:31
• Hi! I was wondering the same thing, but my question comes from these lines of codes In[43]:= SetSystemOptions["SimplificationOptions"->"AssumptionsMaxNonlinearVariables"->9]; ClearSystemCache[]; Simplify[Abs@((Hd Hu)/Q1)<1,glbcond&&z2cond] Out[45]= True, which now only requires "AssumptionsMaxNonlinearVariables"->9 – Y.X. Jun 10 '17 at 6:28

To simplify an inequality ineq to True using assumptions assum Simplify needs to prove that assum && Not[ineq] has no solutions. Hence non-linearity of both assum and ineq matter and all variables in assum and ineq are counted.
• So the non-linearity is introduced by the rational function (Q1 u1)/(d2 Q3) through substituting this into the inequalities in 14 variable expression of z2cond, as suggested by @Michael E2 in previous comments? If so, why is this particular codes requiring "AssumptionsMaxNonlinearVariables"->9:In[43]:= SetSystemOptions["SimplificationOptions"->"AssumptionsMaxNonlinearVariables"->9]; ClearSystemCache[]; Simplify[Abs@((Hd Hu)/Q1)<1,glbcond&&z2cond] Out[45]= True – Y.X. Jun 10 '17 at 6:24