ABSTRACT (original article): The kinematic numerator factors for heavy-mass effective field theory are derived from a field theory limit of the string theory vertex operator kinematic algebra introduced in arXiv:1806.09584. The kinematic numerators are correlators of nested commutators of gluon vertex operators evaluated between massive tachyonic vertex operators. The resulting numerators are given by products of structure constants of the vertex operator algebra which are gauge invariant expressions. The computation of the nested commutators leads to a natural organisation in the form of rooted trees, endowed with an order that facilitates the enumeration of the various contributions. This kinematic algebra gives a string theory understanding of the field theory fusion rules for constructing the heavy-mass effective field theory numerator of arXiv:2104.11206 and arXiv:2111.15649. CITATION (original article): Chih-Hao Fu, Pierre Vanhove and Yihong Wang (2025), HEFT numerators from kinematic algebra, arXiv:2501.14523. https://doi.org/10.48550/arXiv.2501.14523​
GitHub: https://github.com/Yi-hongWang/Stringy-Numerator
In this worksheet we present the code for computing the gauge invariant form for the HEFT numerator factor. The algorithm implements the construction of the numerator factor for the multigluon emission from a massive scalar in heavy mass effective field theory from the stringy kinematic algebra. The code implements the algorithm described in the paper arXiv:https://arxiv.org/abs/2501.14523
The main routines are in the file : functionsHEFT.wl which needs to be executed before running this worksheet.
We run some example of gauge invariant numerator factors for the emission of n gluons of momenta
k
i
and field-strengths
F
i
from a massive scalar line of momentum p
​
​With the convention that k1+k2+...+kn=p’-p with ki^2=0, p^2=(p’)^2=0 and p.(k1+...+kn)=0
We present the tree structure described in section 4.2 of the paper, and the expression for the gauge invariant numerator factors
In[]:=
Now[]
Out[]=
Fri 17 Jan 2025 14:12:07GMT+1
[]
In[]:=
SetDirectory[NotebookDirectory[]]

The three gluons case

In[]:=
Ngluons=3;
Numerator3gluonsTree=GIAOTree[Ngluons,p];
Displaying the graphs
tijplot[Ngluons,#]&/@(#[[2]]&/@Numerator3gluonsTree)
Out[]=

,
,
,

Displaying the numerator factors
In[]:=
Numerator3gluons=GINum[Ngluons,p]
Out[]=
-
k1⊙F3⊙pp⊙F1⊙F2⊙p
k1·pk3·p
-
k2⊙F3⊙pp⊙F1⊙F2⊙p
k1·pk3·p
-
k1⊙F2⊙pp⊙F1⊙F3⊙p
k1·pk2·p
-
p⊙F1⊙F2⊙F3⊙p
k1·p
In[]:=
listpoles3gluons=DeleteDuplicates@Denominator@(List@@Numerator3gluons)
Out[]=
{k1·pk3·p,k1·pk2·p,k1·p}
In[]:=
Numerator3gluons
Out[]=
-
k1⊙F3⊙pp⊙F1⊙F2⊙p
k1·pk3·p
-
k2⊙F3⊙pp⊙F1⊙F2⊙p
k1·pk3·p
-
k1⊙F2⊙pp⊙F1⊙F3⊙p
k1·pk2·p
-
p⊙F1⊙F2⊙F3⊙p
k1·p
In[]:=
stmp=Sum[Simplify[Coefficient[Numerator3gluons,1/listpoles3gluons[[itmp]]]]1/listpoles3gluons[[itmp]],{itmp,1,Length[listpoles3gluons]-1}];​​stmp+Simplify[Numerator3gluons-stmp]
Out[]=
-
(k1⊙F3⊙p+k2⊙F3⊙p)p⊙F1⊙F2⊙p
k1·pk3·p
-
k1⊙F2⊙pp⊙F1⊙F3⊙p
k1·pk2·p
-
p⊙F1⊙F2⊙F3⊙p
k1·p
In[]:=
(*k1+k2+k3=p'-p=Q---p^2=(p')^2=M^2->p.(k1+k2+k3)=p'.(k1+k2+k3)=0*)
Comparing with the results from
A. Brandhuber, G. Chen, H. Johansson, G. Travaglini and C. Wen, Kinematic Hopf Algebra for Bern-Carrasco-Johansson Numerators in Heavy-Mass Effective Field Theory and Yang-Mills Theory, Phys. Rev. Lett. 128 (2022) 121601, [2111.15649].
In[]:=
QMNum[Ngluons,p]
Out[]=
(k1⊙F3⊙p+k2⊙F3⊙p)p⊙F1⊙F2⊙p
k1·p(k1·p+k2·p)
+
k1⊙F2⊙pp⊙F1⊙F3⊙p
k1·p(k1·p+k3·p)
-
p⊙F1⊙F2⊙F3⊙p
k1·p

The four gluons case

In[]:=
Ngluons=4;
Numerator4gluonsTree=GIAOTree[Ngluons,p];
Displaying the graphs
tijplot[Ngluons,#]&/@(#[[2]]&/@Numerator4gluonsTree)
Out[]=

,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

Displaying the numerator factors
In[]:=
Numerator4gluons=GINum[Ngluons,p]
Out[]=
k1⊙F3⊙pk1⊙F4⊙pp⊙F1⊙F2⊙p
k1·pk3·pk4·p
+
k1⊙F4⊙pk2⊙F3⊙pp⊙F1⊙F2⊙p
k1·pk3·pk4·p
+
k1⊙F3⊙pk2⊙F4⊙pp⊙F1⊙F2⊙p
k1·pk3·pk4·p
+
k2⊙F3⊙pk2⊙F4⊙pp⊙F1⊙F2⊙p
k1·pk3·pk4·p
+
k1⊙F3⊙pk3⊙F4⊙pp⊙F1⊙F2⊙p
k1·pk3·pk4·p
+
k2⊙F3⊙pk3⊙F4⊙pp⊙F1⊙F2⊙p
k1·pk3·pk4·p
+
k1⊙F2⊙pk1⊙F4⊙pp⊙F1⊙F3⊙p
k1·pk2·pk4·p
+
k1⊙F2⊙pk2⊙F4⊙pp⊙F1⊙F3⊙p
k1·pk2·pk4·p
+
k1⊙F2⊙pk3⊙F4⊙pp⊙F1⊙F3⊙p
k1·pk2·pk4·p
+
k1⊙F2⊙pk1⊙F3⊙pp⊙F1⊙F4⊙p
k1·pk2·pk3·p
+
k1⊙F2⊙pk2⊙F3⊙pp⊙F1⊙F4⊙p
k1·pk2·pk3·p
-
k1·k2p⊙F1⊙F4⊙pp⊙F2⊙F3⊙p
k1·pk2·p(k1·p+k4·p)
-
k1·k2p⊙F1⊙F3⊙pp⊙F2⊙F4⊙p
k1·pk2·p(k1·p+k3·p)
+
(-(k1·k3)-k2·k3)p⊙F1⊙F2⊙pp⊙F3⊙F4⊙p
k1·p(k1·p+k2·p)k3·p
+
k1⊙F4⊙pp⊙F1⊙F2⊙F3⊙p
k1·pk4·p
+
k2⊙F4⊙pp⊙F1⊙F2⊙F3⊙p
k1·pk4·p
+
k3⊙F4⊙pp⊙F1⊙F2⊙F3⊙p
k1·pk4·p
+
k1⊙F3⊙pp⊙F1⊙F2⊙F4⊙p
k1·pk3·p
+
k2⊙F3⊙pp⊙F1⊙F2⊙F4⊙p
k1·pk3·p
+
k1⊙F2⊙pp⊙F1⊙F3⊙F4⊙p
k1·pk2·p
+
p⊙F1⊙F2⊙F3⊙F4⊙p
k1·p
In[]:=
DeleteDuplicates@Denominator@(List@@Numerator4gluons)​​Length[%]
Out[]=
{k1·pk3·pk4·p,k1·pk2·pk4·p,k1·pk2·pk3·p,k1·pk2·p(k1·p+k4·p),k1·pk2·p(k1·p+k3·p),k1·p(k1·p+k2·p)k3·p,k1·pk4·p,k1·pk3·p,k1·pk2·p,k1·p}
Out[]=
10

The five gluons case

In[]:=
Ngluons=5;
Numerator5gluonsTree=GIAOTree[Ngluons,p];
Displaying the graphs
tijplot[Ngluons,#]&/@(#[[2]]&/@Numerator5gluonsTree)
Out[]=

,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

Displaying the numerator factors
In[]:=
Numerator5gluons=GINum[Ngluons,p];
In[]:=
DeleteDuplicates@Denominator@(List@@Numerator5gluons)​​Length[%]
Out[]=
{k1·pk3·pk4·pk5·p,k1·pk2·pk4·pk5·p,k1·pk2·pk3·pk5·p,k1·pk2·pk3·pk4·p,k1·pk2·pk5·p(k1·p+k4·p+k5·p),k1·pk2·p(k1·p+k4·p)k5·p,k1·pk2·pk4·p(k1·p+k4·p+k5·p),k1·pk2·pk4·p(k1·p+k5·p),k1·pk2·pk5·p(k1·p+k3·p+k5·p),k1·pk2·p(k1·p+k3·p)k5·p,k1·pk2·pk3·p(k1·p+k3·p+k5·p),k1·pk2·pk3·p(k1·p+k5·p),k1·pk2·pk4·p(k1·p+k3·p+k4·p),k1·pk2·p(k1·p+k3·p)k4·p,k1·pk2·pk3·p(k1·p+k3·p+k4·p),k1·pk2·pk3·p(k1·p+k4·p),k1·pk3·pk5·p(k1·p+k2·p+k5·p),k1·p(k1·p+k2·p)k3·pk5·p,k1·pk2·pk3·p(k1·p+k2·p+k5·p),k1·pk3·pk4·p(k1·p+k2·p+k4·p),k1·p(k1·p+k2·p)k3·pk4·p,k1·pk2·pk3·p(k1·p+k2·p+k4·p),k1·pk3·p(k1·p+k2·p+k3·p)k4·p,k1·pk2·p(k1·p+k2·p+k3·p)k4·p,k1·pk4·pk5·p,k1·p(k1·p+k2·p+k3·p)k4·p,k1·pk3·pk5·p,k1·pk3·p(k1·p+k2·p+k4·p),k1·pk3·pk4·p,k1·pk3·p(k1·p+k2·p+k5·p),k1·pk2·pk5·p,k1·pk2·p(k1·p+k3·p+k4·p),k1·pk2·pk4·p,k1·pk2·p(k1·p+k3·p+k5·p),k1·pk2·pk3·p,k1·pk2·p(k1·p+k4·p+k5·p),k1·pk2·p(k1·p+k5·p),k1·pk2·p(k1·p+k4·p),k1·pk2·p(k1·p+k3·p),k1·p(k1·p+k2·p)k3·p,k1·pk5·p,k1·pk4·p,k1·pk3·p,k1·pk2·p,k1·p}
Out[]=
45

The six gluons case

In[]:=
Ngluons=6;
In[]:=
Timing[Numerator6gluons=GINum[Ngluons,p];][[1]]
Out[]=
1.90963
In[]:=
DeleteDuplicates@Denominator@(List@@Numerator6gluons);​​Length[%]
Out[]=
226
In[]:=
Save["numerator-six-gluons.txt",Numerator6gluons]

The seven gluons case

In[]:=
Ngluons=7;
In[]:=
Timing[Numerator7gluons=GINum[Ngluons,p];][[1]]
Out[]=
35.4813
In[]:=
DeleteDuplicates@Denominator@(List@@Numerator7gluons);​​Length[%]
Out[]=
1113
In[]:=
Save["numerator-seven-gluons.txt",Numerator7gluons]

The eight gluons case

In[]:=
Ngluons=8;
In[]:=
Timing[Numerator8gluons=GINum[Ngluons,p];][[1]]
Out[]=
854.979
In[]:=
DeleteDuplicates@Denominator@(List@@Numerator8gluons);​​Length[%]
Out[]=
5230
In[]:=
Save["numerator-eight-gluons.txt",Numerator8gluons]

CITE THIS NOTEBOOK

HEFT numerators from kinematic algebra​
by Chih-Hao Fu, Pierre Vanhove & Yihong Wang​
Wolfram Community, STAFF PICKS, February 12, 2025
​https://community.wolfram.com/groups/-/m/t/3392495