# FullSimplify is giving a condition that is implied by the assumptions

I've been trying to understand why FullSimplify is giving a condition that is implied by the assumptions (otherwise the set is empty). However, I couldn't understand why:

Clear["Global*"]
l[v_] := v;
q[\[Beta]_, v_] := (\[Beta] - n*c) /(1 + (l[v] + n^2)*c);
Assuming[a > 0 && \[Beta] > 0 && c > 0 && v > 0 && n > 0 &&
c < (\[Beta]*n - 1)/(l[v] + n^2*(a + 1)),
FullSimplify@Reduce[D[q[\[Beta], v], v] < 0]]


It yields:

c n < \[Beta]


The inequality is reversed if I reverse the inequality in the derivative, when I'd expect (reply to comment below explains why):

False


Any ideas about what could possibly be the problem?

• Why do you expect it to return False in the later case? As far as I can tell, it is producing the right inequality. The denominator you have (once the partial derivative is evaluated) is a square of a real number (ie. it's positive), which then leads the inequality for the numerator that you're seeing. May 10, 2021 at 7:05
• $\beta - nc>\beta- \frac{n(\beta n - 1)}{l(v) + n^2(a + 1)}$, which is greater than 0 if $\beta[l(v) + n^2(a + 1)]>n(\beta n - 1)\Leftrightarrow \beta l(v) + \beta n^2 a+n>0$. Right? May 10, 2021 at 8:19
• That's correct, but it appears as if the assumptions aren't . Notice (after removing only the FullSimplify@ part) that we're still seeing results that are not restricted by the specified assumptions. For example, we still get a $n < 0$ case in the results. I would also be curious to see what the proper way to impose the constraints in this situation is. As it is, it seems to be doing something like Simplify[Sign[\!$$\*SubscriptBox[\(\[PartialD]$$, $$v$$]$$q[\[Beta], v]$$\)], a > 0 && \[Beta] > 0 && c > 0 && v > 0 && n > 0] May 10, 2021 at 18:55
• Assumptions is not an option for Reduce and FullSimplify is a way to incorporate them. Omitting FullSimplify will cause the assumptions to be ignored (mathematica.stackexchange.com/questions/179820/…). It works, but in my case it didn't. I just figured out the reason. The maximum number of non-linear variables is set to 4 by default. Thus I had to increase it (mathematica.stackexchange.com/questions/245199/…) May 10, 2021 at 20:29
• Nice; perhaps you can answer your own question in that case. May 10, 2021 at 21:23

Not really a solution of my own but, for sake of completeness I'll reproduce here with due credit.

As explained here, the problem is caused by exceeding the number of non-linear variables. By expanding it, we'd get the expected result:

Clear["Global*"]
SetSystemOptions["SimplificationOptions" -> {"AssumptionsMaxNonlinearVariables" ->  10}];
l[v_] := v;
q[\[Beta]_, v_] := (\[Beta] - n*c) /(1 + (l[v] + n^2)*c);
Assuming[a > 0 && \[Beta] > 0 && c > 0 && v > 0 && n > 0 &&
c < (\[Beta]*n - 1)/(l[v] + n^2*(a + 1)),
FullSimplify@Reduce[D[q[\[Beta], v], v] > 0]]


It yields:

False