# How to check the positivity of a function depending on many variables?

Suppose we have some complicated function $f(x,y,z,v,u,w)$ with $\{x,y,z,v,u,w\} \in G$; precisely, each variable excepting one is defined in the sub-domain depending on other variables: $w \in G_{1}(x,y,z,v,u)$, $u \in G_{2}(x,y,z,v)$, $v \in G_{3}(x,y,z)$, ..., $x \in (a,b)$, where $a, b$ are some given numbers.

Is there any way to check whether the function $f$ is positive inside $G$? I just need to check whether $f$ is always positive, so I just need to get the "True/False" answer on the command "$f$ is positive inside $G$".

Precisely, my function is

msquaredcrossfullneutrals[Ss_, s1_, s2_, t1_, t2_, mp_] =(1/((mp^2-Ss)^2))8 (-mp^4 (4 s1+4 s2-4 Ss+t2)+mp^4 (-(4 s1-4 Ss+t2))+mp^2 (4 s1^2+s1 (5 s2-4 Ss-t1+2 t2)+3 s2^2-s2 (Ss+t1-t2)+Ss t1)+mp^2 (4 s1^2+s1 (5 s2-4 Ss-t1+2 t2)+3 s2^2+s2 (-5 Ss-t1+t2)+Ss t1)-2 (mp^4 (2 s2-t2)+mp^2 (s1 (t1-5 s2)-3 s2^2+3 s2 Ss+s2 t1-s2 t2-Ss t1+2 Ss t2)+Ss (s1 (s2-t1)+(s2-Ss) (s2-t1+t2)))+2 Ss (s1 (-s2+t1-2 t2)-(s2-Ss) (s2-t1+t2)))


The conditions for the variables are (given after series of sub-defitions)

lambda[a_, b_, c_] = a^2 + b^2 + c^2 - 2*(a*b + a*c + b*c);
detneutral[Ss_, s2_, t1_, t2_, m_, mp_] =
Det[{{0, s2 - t1, m^2 - t2}, {s2 - t1, 2*s2, s2 + m^2}, {Ss - mp^2,
Ss + s2 - mp^2, 0}}];
G[x_, y_, z_, u_, v_, w_] = -1/2*
Det[{{0, 1, 1, 1, 1}, {1, 0, v, x, z}, {1, v, 0, u, y}, {1, x, u,
0, w}, {1, z, y, w, 0}}];
assumptions =
mp > 0 && mp < 1 && Ss > mp^2 && s2 > 0 && s2 < (Sqrt[Ss] - mp)^2 &&
t1 > 2*mp^2 -
1/(2*Ss)*((Ss + mp^2)*(Ss - s2 + mp^2) + (Ss - mp^2)*
Sqrt[lambda[Ss, s2, mp^2]]) &&
t1 < 2*mp^2 -
1/(2*Ss)*((Ss + mp^2)*(Ss - s2 + mp^2) - (Ss - mp^2)*
Sqrt[lambda[Ss, s2, mp^2]]) &&
t2 > -1/(2*s2)*(s2 - t1)*(s2) - 1/(2*s2)*(s2 - t1)*(s2) &&
t2 < -1/(2*s2)*(s2 - t1)*(s2) + 1/(2*s2)*(s2 - t1)*(s2) &&
s1 > Ss -
1/(s2 - t1)^2*(detneutral[Ss, s2, t1, t2, 0, mp] -
2*Sqrt[G[Ss, t1, s2, mp^2, 0, mp^2]*G[s2, t2, 0, t1, 0, 0]]) &&
s1 <
Ss - 1/(s2 - t1)^2*(detneutral[Ss, s2, t1, t2, 0, mp] +
2*Sqrt[G[Ss, t1, s2, mp^2, 0, mp^2]*G[s2, t2, 0, t1, 0, 0]]);


I'm trying to evaluate

NMinimize[{msquaredcrossfullneutrals[Ss, s1, s2, t1, t2, mp],
assumptions}, {Ss, s1, s2, t1, t2, mp}]


but it writes some strange things like

NMinimize::bcons: The following constraints are not valid. Constraints should be equalities, inequalities, or domain specifications involving the variables.

I don't understand where's the problem.

• The first error I get is Greater::nord -- do you get it, too? – Michael E2 Aug 12 '17 at 22:26
• @MichaelE2 : oh, you're right. What does it mean? That the domain of the definition is not real? – John Taylor Aug 12 '17 at 22:36
• I assume it's plugging in some numbers, either to check that the equations evaluate properly or in some step, and it gets a negative value under a Sqrt[]. The equations are sufficiently complicated that I feel it would take some to figure it out. -- A minimal example is NMinimize[{x^4 - x^2, Sqrt[-x] > 1/2}, x] (and compare closely to NMinimize[{x^4 - x^2}, x] which gives an answer that satisfies the constraint). Off hand, I don't know how to fix it. You're more likely to get help on the minimal example, and then the question is whether a solution to it translates to a solution of yours. – Michael E2 Aug 12 '17 at 22:46
• Similar problem, but in the objective function instead of the constraint: mathematica.stackexchange.com/questions/127554/… -- A not too elegant workaround for the minimal example in my comment: NMinimize[{x^4 - x^2, If[Sqrt[-x] \[Element] Reals, Sqrt[-x], 0] > 1/2}, x] – Michael E2 Aug 13 '17 at 12:05
• Holds vacuously?In[36]:= v2 = Variables[Flatten[assumptions /. {Less -> List, Greater -> List, And -> List}]]; FindInstance[assumptions, v2] Out[37]= {} – Daniel Lichtblau Aug 16 '17 at 22:27