image357 / BoundedFromBelow

Mathematica package to check boundedness of general Higgs potentials.
BSD 3-Clause "New" or "Revised" License
2 stars 0 forks source link

Positivity Test #3

Closed Layla-Kalhor closed 3 years ago

Layla-Kalhor commented 3 years ago

Dear Marcel,

constraints on parameters I looked at your article and thesis again, I am a little confused about positivity test and constraints for(on) parameters. Let me see if I've got it right... The eigenvalues must be positive for boundedness potential from below, then according to this eigenvalues I can get some constraints on parameters.

For example consider this simple potential;

potential = -mu*h^2 + lh*h^4 + ms*s^2 + lsh*h^2*s^2 + ls*s^4;

I have 4 eigenvalues according to BFB package;

eigvals = DeleteDuplicates[eig /. Solve[retval[["Resultant"]] == 0, eig]]

{lh, ls, 1/2 (lh + ls - Sqrt[lh^2 - 2 lh ls + ls^2 + lsh^2]), 
 1/2 (lh + ls + Sqrt[lh^2 - 2 lh ls + ls^2 + lsh^2])}

and we know that eigenvalues must be positive, so;

lh>0,
ls>0,
1/2 (lh + ls - Sqrt[lh^2 - 2 lh ls + ls^2 + lsh^2])>0, 
1/2 (lh + ls + Sqrt[lh^2 - 2 lh ls + ls^2 + lsh^2])}>0

and I can find constraints on parameters.

positivity test In last issue, you mentioned and had some examples about positivity test.

PositivityTest[2*x^4 - 1*x^2*y^2 + 2*y^4, {x, y}]
PositivityTest[-2*x^4 + 1*x^2*y^2 + 2*y^4, {x, y}]
PositivityTest[0*x^4 + 1*x^2*y^2 + 2*y^4, {x, y}]

and in the definition, you wrote "Tests a given Higgs potential for postive (semi)definiteness on large field values."

PositivityTest[potential, variables, (parameters), (options)]

In Positivity Test, I myself must give some numbers to parameters? For example lh = 0.129, ls = 3, lsh = 2, and run it? And for last question, where is the output of Positivity Test? I think it is very obvious and Positivity Test is not necessary, am I wrong? I am a little confused about this!!!

Best Wishes Layla

image357 commented 3 years ago

The eigenvalues must be positive for boundedness potential from below, then according to this eigenvalues I can get some constraints on parameters.

No, not all of them. Only if they have a real, non-trivial solution. Let me state the algorithm again.

  1. Derive the fourth rank tensor Q.
  2. Calculate eigenvalues via the resultant method.
  3. Potential is bounded iff for all real eigenvalues, all non-trivial, real solutions (i.e. eigenvectors) belong to a positive eigenvalue.

Or equivalently: The potential is not bounded from below iff a real and non-positive (i.e. zero or negative) eigenvalue has a real solution different than x=y=...=0.

Let's discuss some implications of this:

I have 4 eigenvalues according to BFB package; [...] and we know that eigenvalues must be positive

No, see above. Some eigenvalues might be irrelevant for the positivity condition.

In Positivity Test, I myself must give some numbers to parameters? For example lh = 0.129, ls = 3, lsh = 2, and run it?

Yes, it only works if all parameters are numbers. This is because PositivityTest is the most general algorithm that is guaranteed to give you an answer about the positivity of your tensor/potential (if you have enough time to wait for its conclusion). In general a positivity condition cannot be written down as inequalities (i.e. algebraic expressions). The only way to check a parameter set is to do it numerically (that's why all parameters have to be numbers). This is a direct result of the Abel-Ruffini-Theorem.

Some potentials like two Higgs doublet models (2HDMs) are an exception to this rule. They do have an algebraic expression for positivity (i.e. inequalities for their parameters).

Let me state this again: Inequalities for positivity constraints are not guaranteed to exist. They are rather an exception than a regularity (do note that we are always talking about necessary and sufficient conditions. Sufficient conditions are much more relaxed and can have inequality expressions because they are not exact, i.e. don't give the full parameter ranges for positivity).

And for last question, where is the output of Positivity Test?

Take

potential = a*x^4 + b*x^2*y^2 + c*y^4

then

PositivityTest[potential /. {a -> 2, b -> 5, c -> 2}, {x, y}]

gives you

<|"ErrorCode" -> 0, "PositiveDefinite" -> True, "PositiveSemidefinite" -> True|>

which tells you that the derived tensor Q is positive definite -> this potential is bounded from below.

I think it is very obvious and Positivity Test is not necessary, am I wrong?

Yes and no. This depends on your definition of triviality. Let's have a look at the symbolic eigenvalues:

eigvals = {a, c, 1/2 (a + c - Sqrt[a^2 + b^2 - 2 a c + c^2]), 1/2 (a + c + Sqrt[a^2 + b^2 - 2 a c + c^2])}

For a = 2, b = 5, c = 2 we have

{2, 2, -(1/2), 9/2}

Notice that the third eigenvalue is negative! This is OK, because there is no real solution other than x=y=0. Hence this eigenvalue is irrelevant for judging positivity. Not so trivial after all ;)


EDIT: The example with a = 1.1, b = -3, c = 2 gave a wrong result due to numerical constraints. There is some numerical uncertainty in PositivityTest because Mathematica's solvers are ... not perfect ... Compare

Solve[
    {a x^3 - 1/2 (a + c - Sqrt[a^2 + b^2 - 2 a c + c^2]) x^3 + 1/2 b x y^2 == 0,
     1/2 b x^2 y + c y^3 - 1/2 (a + c - Sqrt[a^2 + b^2 - 2 a c + c^2]) y^3 == 0}
    /. {a -> 1.1, b -> -3, c -> 2}, {x, y}
]

to

Solve[
    {a x^3 - 1/2 (a + c - Sqrt[a^2 + b^2 - 2 a c + c^2]) x^3 + 1/2 b x y^2 == 0,
     1/2 b x^2 y + c y^3 - 1/2 (a + c - Sqrt[a^2 + b^2 - 2 a c + c^2]) y^3 == 0}
    /. {a -> 11/10, b -> -3, c -> 2}, {x, y}
]
Layla-Kalhor commented 3 years ago

Thank you,

So , there are 2 types of eigenvalue:

  1. A complex eigenvalue that is always irrelevant.

  2. A real eigenvalue that depends on negative or positive sign. If there is a positive eigenvalue, it is always relevant. And if there is a negative eigenvalue, it is relevant when there is a real solution of the eigenvalue equation which is not zero.

I want to find boundedness for doublet, triplet and quartet..., and it takes many days!!! For each of this I wrote potential(V) in terms of real fields, for example for doublet;

H = 1/Sqrt[2] {{x1 + I*x2}, {h + I*x3}} ;    
H // MatrixForm;

Q = 1/Sqrt[2] {{y1 + I*y2}, {s + I*r}} ;    
Q // MatrixForm;

potential = -muhs*(x1^2 + x2^2 + x3^2 + h^2)/2 + 
  muqs*(y1^2 + y2^2 + r^2 + s^2)/2 + 
  lambda1*((x1^2 + x2^2 + x3^2 + h^2)^2)/4 + 
  alpha*(x1^2 + x2^2 + x3^2 + h^2)*(y1^2 + y2^2 + r^2 + s^2)/
    4 + (1/6)*Sqrt[3]*
   betta*((1/4)*x2^2*r^2 + (1/4)*x2^2*s^2 + (1/4)*x3^2*y1^2 + (1/4)*
      x3^2*y2^2 - (1/4)*x2^2*y1^2 - (1/4)*x2^2*y2^2 - (1/4)*x3^2*
      r^2 - (1/4)*x3^2*s^2 - h*x1*y1*s + h*x2*y1*r - h*x2*y2*s + 
     x3*x1*y2*s - x1*x2*y1*s - h*x1*y2*r - x3*x1*y1*r - 
     x3*x2*y2*r - (1/4)*h^2*r^2 - (1/4)*h^2*s^2 - (1/4)*x1^2*
      y1^2 - (1/4)*x1^2*y2^2 + (1/4)*x1^2*r^2 + (1/4)*x1^2*
      s^2 + (1/4)*h^2*y1^2 + (1/4)*h^2*y2^2) + (1/3)*Sqrt[3]*
   lambda2*((1/4)*y1^4 + (1/2)*y1^2*y2^2 + (1/4)*y2^4 + (1/4)*
      r^4 + (1/2)*s^2*r^2 + (1/4)*s^4 + (1/2)*r^2*y1^2 + (1/2)*r^2*
      y2^2 + (1/2)*s^2*y1^2 + (1/2)*s^2*y2^2) + (1/6)*Sqrt[3]*
   ka*(Sqrt[2]*h*x1*y2*r + Sqrt[2]*h*x2*y1*r + Sqrt[2]*h*x1*y1*s - 
     Sqrt[2]*h*x2*y2*s + Sqrt[2]*x3*x1*y1*r - Sqrt[2]*x3*x2*y2*r - 
     Sqrt[2]*x3*x1*y2*s - Sqrt[2]*x3*x2*y1*s - h^2*r^2 + h^2*s^2 + 
     4*h*x3*s*r + x3^2*r^2 - x3^2*s^2 + x1^2*y1^2 - x1^2*y2^2 + 
     4*x1*x2*y1*y2 - x2^2*y1^2 + x2^2*y2^2)

And I have a rank 8 tensor, so I have 8 eigenvalues that I must consider their relevant and irrelevant conditions according to the above description.

I think I understood the process!!

image357 commented 3 years ago

So , there are 2 types of eigenvalue:

1. A complex eigenvalue that is always irrelevant.

2. A real eigenvalue that depends on negative or positive sign. If there is a positive eigenvalue, it is always relevant.
   And if there is a negative eigenvalue, it is relevant when there is a real solution of the eigenvalue equation which is not zero.

Correct! However, positive eigenvalues can also have no real solution, in which case they are also irrelevant - but they don't hurt ;)

I want to find boundedness for doublet, triplet and quartet..., and it takes many days!!!

Yes, that's the inefficiency of the analytic or semi-numerical approach. I expect a full numerical treatment to be much faster. See also my comments in #2 .

And I have a rank 8 tensor, so I have 8 eigenvalues that I must consider their relevant and irrelevant conditions according to the above description.

The number of eigenvalues depends on the rank of the considered tensor. However it's not a linear relationship. The tensor Q for testing Higgs potential boundedness is always rank 4! Are you talking about 8 variables? That would be dimensionality not rank. Dimensionality does influence the number of eigenvalues, too.

Layla-Kalhor commented 3 years ago

The tensor Q for testing Higgs potential boundedness is always rank 4!

I thought, the rank of tensor depends on variables!! according this, we always have 4 eigenvalues?!(The number of eigenvalues depends on the rank of the considered tensor.) And these 4 eigenvalues are sentences(sometimes) that make a relation between parameters.?.

image357 commented 3 years ago

I thought, the rank of tensor depends on variables!!

No, the rank (or order) of a tensor is the number if its indices. The dimensionality is the range over which this indices run.

according this, we always have 4 eigenvalues?!

No, the maximum number of distinct eigenvalues is both a function of rank and dimensionality, neither of which has a linear relationship. The actual number of distinct eigenvalues may be less than that (depending on the parameters in your potential).

(The number of eigenvalues depends on the rank of the considered tensor.)

Yes it does, but not linearly (e.g. rank 4 doesn't mean it's always 4 eigenvalues)

And these 4 eigenvalues are sentences(sometimes) that make a relation between parameters.?.

Correct.


Here are some examples:

potential = a*x^4
eigvals = {a} (* 1 variable; 1 eigenvalue *)

potential = a*x^4 + b*x^2*y^2 + c*y^4
eigvals = {a, c, 1/2 (a + c - Sqrt[a^2 + b^2 - 2 a c + c^2]), 1/2 (a + c + Sqrt[a^2 + b^2 - 2 a c + c^2])} (* 2 variables; 4 eigenvalues *)

potential = a*x^4 + b*y^4 + c*z^4
eigvals = {a, b, c} (* 3 variables; 3 eigenvalues *)

potential = a*x^4 + b*y^4 + c*z^4 + d*x*y*z^2
eigvals = {a, b, c, ...} (* 3 variables; 7 eigenvalues *)
Layla-Kalhor commented 3 years ago

according your article, there are 5 type of eigenvalue;

  1. complex eigenvalue ------> irrelevant

  2. real positive eigenvalue with complex eigenvectors ------> irrelevant

  3. real negative and zero eigenvalues have a real solution different than y=x=...=0 ------> irrelevant

  4. real positive eigenvalue with real eigenvectors ------> relevant

  5. real negative eigenvalue when there is a real solution of the eigenvalue equation which is not zero ------> relevant

And when I run the BFB package I can see these eigenvalues in the output of this;


eigvals = DeleteDuplicates[eig /. Solve[retval[["Resultant"]] == 0, eig]]

Can I run two mathematica code in two different terminal in the same time, because of time? And if I use numbers and use positivity test, will I get results sooner?

Layla-Kalhor commented 3 years ago

Dear Marcel, Sorry for asking many questions...

I write this potential and use positivity test,


potential = muq^2*s^2 + (14/10)*alpha*s^2*(h^2 + x1^2 + x2^2 + x3^2)/4 + lambda2*s^4

In[8]:= PositivityTest[potential /. {muq -> 100, alpha -> 3, lambda2 -> 2}, {h, x1, x2, x3,  s}]

Out[8]= <|"ErrorCode" -> 0, "PositiveDefinite" -> False,  "PositiveSemidefinite" -> True|>

In output, "PositiveDefinite" -> False means that my potential is not bounded from below ?

image357 commented 3 years ago

Sorry for asking many questions...

Hey, don't worry. I just don't have a lot of time to answer your questions during the week.

according your article, there are 5 type of eigenvalue;

1. complex eigenvalue ------> irrelevant

2. real positive eigenvalue with complex eigenvectors ------> irrelevant

3. real negative and zero eigenvalues have a real solution different than y=x=...=0 ------> irrelevant

4. real positive eigenvalue with real eigenvectors ------> relevant

5. real negative eigenvalue when there is a real solution of the eigenvalue equation which is not zero ------> relevant
  1. correct
  2. wrong / inaccurate. If there are only complex solutions, then the eigenvalue is irrelevant (remember that an eigenvalue can have many different eigenvectors)
  3. wrong. real eigenvalues with non-trivial, real solutions are always relevant.
  4. correct
  5. correct

Let me summarize: Relevant eigenvalues

(both conditions have to be true) The potential is bounded from below iff all relevant eigenvalues are positive.

Can I run two mathematica code in two different terminal in the same time, because of time?

Yes, you can. But you have to change the intermediate Macaulay2 filenames. There are two Options to do that. For instance, use

PositivityTest[potential, variables, ScriptName -> "Notebook1.m2", OutputName -> "Notebook1.out"]
PositivityTest[potential, variables, ScriptName -> "Notebook2.m2", OutputName -> "Notebook2.out"]
...

for the different notebooks / mathematica kernels (similar if you use GetResultant).

And if I use numbers and use positivity test, will I get results sooner?

Compared to the full analytic approach: yes

But you can also do a mixed approach:

  1. Symbolic potential
  2. Analytic resultant (store and reuse)
  3. Insert parameters
  4. Calculate numeric eigenvalues
  5. Calculate necessary numeric eigenvectors

or

  1. Symbolic potential
  2. Analytic resultant
  3. Calculate analytic eigenvalues (store and reuse)
  4. Insert parameters
  5. Calculate necessary numeric eigenvectors

There is a trade-off between numeric and analytic solutions if you test many parameters: The more parameters you want to test, the more you want to reuse analytic expressions. However, there might be no analytic expression of the eigenvalues (Abel-Ruffini-Theorem), in which case you are stuck with the first (mixed) approach or PositivityTest (which doesn't reuse any analytic expression).

In output, "PositiveDefinite" -> False means that my potential is not bounded from below ?

Yes / Almost. In your case, it is still "PositiveSemidefinite". This means that (the quartic part of) the potential is not going to negative infinity but there is at least one direction which is exactly zero (= not positive but almost/semi positive).

image357 commented 3 years ago

Let me make this last point more clear. Take the potential

potential = x^2 * y^2

which is clearly non-negative. However, along the coordinate axes (either x=0 or y=0), the potential is exactly zero. Thus it is not positive definite for large field values, but it is still positive semidefinite (= it's not going to negative infinity).

Layla-Kalhor commented 3 years ago

Thank you dear Marcel for your time and attention...

I have wrote this code for testing,


PositivityTest[potential /. {muq -> 100, alpha -> 3, lambda2 -> -1}, {h, x1, x2, x3,s}]
<|"ErrorCode" -> 0, "PositiveDefinite" -> False, "PositiveSemidefinite" -> False|>

PositivityTest[potential /. {muq -> 100, alpha -> 3, lambda2 -> 0}, {h, x1, x2, x3, s}]
<|"ErrorCode" -> 0, "PositiveDefinite" -> False, "PositiveSemidefinite" -> True|>

PositivityTest[potential /. {muq -> 10, alpha -> 1, lambda2 -> 1}, {h, x1, x2, x3, s}]
<|"ErrorCode" -> 0, "PositiveDefinite" -> False, "PositiveSemidefinite" -> True|>

PositivityTest[potential /. {muq -> 10, alpha -> 1/2, lambda2 -> 1/2}, {h, x1, x2, x3, s}]
<|"ErrorCode" -> 0, "PositiveDefinite" -> False, "PositiveSemidefinite" -> True|>

I didn't consider the first one {muq -> 100, alpha -> 3, lambda2 -> -1} because of False statement in two results. And for rest of them, I also considered them as the right result... .

In such a case ‍‍‍‍‍"PositiveDefinite" ->True , "PositiveSemidefinite" -> False|>, can this result be omitted?(because of being irrelevant)

And for finding a set of parameter space, I use this code!?!? (In addition to the results of eigvals = DeleteDuplicates[eig /. Solve[retval[["Resultant"]] == 0, eig]])

str = OpenWrite[]
Do[PositivityTest[potential /. {muq -> 100, alpha , lambda2 }, {h, x1, x2, x3, s}], {For[alpha = 0, alpha < 5, alpha = alpha + 1], For[lambda2 = 1, lambda2 < 3, lambda2 + 1]}]
Write[str, PositivityTest]
Close[str]
Layla-Kalhor commented 3 years ago

Dear Marcel, It is important for me to use BFB package in my work AND I tried to run real singlet and complex singlet models with BFB package, but it took a week and without any results!!!! I have more complicated models such as 2HDM, real triplet, complex triplet, and quartet..... during these week I have read other articles such as 1205.3781, 125.3781, 9811234, and their method is the same as yours specially the first one. Can I see your code that you used in your thesis and article? And can BFB package be run in parallel on another system?

image357 commented 3 years ago

In such a case ‍‍‍‍‍ "PositiveDefinite" ->True , "PositiveSemidefinite" -> False|>, can this result be omitted?(because of being irrelevant)

A tensor cannot be positive definite when it is not positive semidefinite. This case should never occur, hence you don't have to test for it.

And for finding a set of parameter space, I use this code!?!? (In addition to the results of eigvals = DeleteDuplicates[eig /. Solve[retval[["Resultant"]] == 0, eig]])

If you use PositivityTest you don't have to calculate the eigenvalues manually. Your code is not working, because you are not using the right syntax for Mathematica's Do- and For-loop (you have built an infinite loop that doesn't calculate anything).

I tried to run real singlet and complex singlet models with BFB package, but it took a week and without any results!!!!

I expect it is because of your loop construct, which doesn't do the calculation and just blocks the kernel.

I have more complicated models such as 2HDM, real triplet, complex triplet, and quartet.....

Don't expect BFB to be usable for a 3HDM model. Let me quote the abstract of our paper: "Due to the rapidly increasing complexity of the problem, we have not yet produced ready-to-use analytical BFB conditions for new multi-scalar cases." If you want to apply BFB to cases bigger than 2HDMs, one has to implement a fast full-numeric approach first (see relevant future work sections in my thesis and paper).

during these week I have read other articles such as 1205.3781, 125.3781, 9811234, and their method is the same as yours specially the first one.

The approach in 1205.3781 is not the same. We also quote it in our paper. It only works for Higgs potentials with a specific form. BFB works for any Higgs potential.

Can I see your code that you used in your thesis and article?

I essentially just called PositivityTest with different parameter sets.

And can BFB package be run in parallel on another system?

You can test two different parameter sets on two different systems. BFB doesn't support testing a single parameter set on a computing cluster.


I'm closing this issue now to keep things organized, because I feel we are getting into implementation specific details. Feel free to open a new one (e.g. about the full-numeric approach or runtime issues).

Layla-Kalhor commented 3 years ago

Thank you dear Marcel,