FCLoopPakOrder[poly, {x1, x2, ...}]
determines a
canonical ordering of the Feynman parameters x1, x2, ...
in
the polynomial poly
.
The function uses the algorithm of Alexey Pak arXiv:1111.0868. Cf. also the PhD thesis of Jens Hoff 10.5445/IR/1000047447 for the detailed description of a possible implementation.
The current implementation is based on the PolyOrdering
function from FIRE 6 arXiv:1901.07808
The function can also directly perform the renaming of the Feynman
parameter variables returning the original polynomial in the canonical
form. This is done by setting the option Rename
to
True
.
Overview, FCTopology, GLI, FCLoopToPakForm, FCLoopPakOrder.
Let us consider the following product of U
and
F
polynomials of some loop integral
= (x[1]*x[2] + x[1]*x[3] + x[2]*x[3] + x[2]*x[4] + x[3]*x[4] + x[1]*x[5] +
poly x[2]*x[5] + x[4]*x[5])* (m1^2*x[1]^2*x[2] + m3^2*x[1]*x[2]^2 + m1^2*x[1]^2*x[3] +
^2*x[1]*x[2]*x[3] + m2^2*x[1]*x[2]*x[3] + m3^2*x[1]*x[2]*x[3] +
m1^2*x[2]^2*x[3] + m2^2*x[1]*x[3]^2 + m2^2*x[2]*x[3]^2 + m1^2*x[1]*x[2]*x[4] -
m3[q, q]*x[1]*x[2]*x[4] + m3^2*x[2]^2*x[4] + m1^2*x[1]*x[3]*x[4] -
SPD[q, q]*x[1]*x[3]*x[4] + m2^2*x[2]*x[3]*x[4] + m3^2*x[2]*x[3]*x[4] -
SPD[q, q]*x[2]*x[3]*x[4] + m2^2*x[3]^2*x[4] + m1^2*x[1]^2*x[5] +
SPD^2*x[1]*x[2]*x[5] + m3^2*x[1]*x[2]*x[5] - SPD[q, q]*x[1]*x[2]*x[5] +
m1^2*x[2]^2*x[5] + m2^2*x[1]*x[3]*x[5] - SPD[q, q]*x[1]*x[3]*x[5] +
m3^2*x[2]*x[3]*x[5] - SPD[q, q]*x[2]*x[3]*x[5] + m1^2*x[1]*x[4]*x[5] -
m2[q, q]*x[1]*x[4]*x[5] + m3^2*x[2]*x[4]*x[5] + m2^2*x[3]*x[4]*x[5] -
SPD[q, q]*x[3]*x[4]*x[5]) SPD
(x(1) x(2)+x(3) x(2)+x(4) x(2)+x(5) x(2)+x(1) x(3)+x(3) x(4)+x(1) x(5)+x(4) x(5)) \left(\text{m1}^2 x(1)^2 x(2)+\text{m1}^2 x(1)^2 x(3)+\text{m1}^2 x(1) x(2) x(3)+\text{m1}^2 x(1) x(2) x(4)+\text{m1}^2 x(1) x(3) x(4)+\text{m1}^2 x(1)^2 x(5)+\text{m1}^2 x(1) x(2) x(5)+\text{m1}^2 x(1) x(4) x(5)+\text{m2}^2 x(1) x(3)^2+\text{m2}^2 x(2) x(3)^2+\text{m2}^2 x(1) x(2) x(3)+\text{m2}^2 x(3)^2 x(4)+\text{m2}^2 x(2) x(3) x(4)+\text{m2}^2 x(1) x(3) x(5)+\text{m2}^2 x(2) x(3) x(5)+\text{m2}^2 x(3) x(4) x(5)+\text{m3}^2 x(1) x(2)^2+\text{m3}^2 x(2)^2 x(3)+\text{m3}^2 x(1) x(2) x(3)+\text{m3}^2 x(2)^2 x(4)+\text{m3}^2 x(2) x(3) x(4)+\text{m3}^2 x(2)^2 x(5)+\text{m3}^2 x(1) x(2) x(5)+\text{m3}^2 x(2) x(4) x(5)-q^2 x(1) x(2) x(4)-q^2 x(1) x(3) x(4)-q^2 x(2) x(3) x(4)-q^2 x(1) x(2) x(5)-q^2 x(1) x(3) x(5)-q^2 x(2) x(3) x(5)-q^2 x(1) x(4) x(5)-q^2 x(3) x(4) x(5)\right)
Using FCLoopPakOrder
we can obtain a canonical ordering
for this polynomial
= FCLoopPakOrder[poly, x] sigma
\left( \begin{array}{ccccc} 1 & 3 & 2 & 5 & 4 \\ \end{array} \right)
This output implies that the polynomial will become canonically ordered upon renaming the Feynman parameter variables as follows
= Table[x[i], {i, 1, 5}] fpVars
\{x(1),x(2),x(3),x(4),x(5)\}
= Thread[Rule[Extract[fpVars, List /@ First[sigma]], fpVars]] repRule
\{x(1)\to x(1),x(3)\to x(2),x(2)\to x(3),x(5)\to x(4),x(4)\to x(5)\}
This way we obtain the canonical form of our polynomial
poly
/. repRule poly
(x(1) x(2)+x(3) x(2)+x(5) x(2)+x(1) x(3)+x(1) x(4)+x(3) x(4)+x(3) x(5)+x(4) x(5)) \left(\text{m1}^2 x(1)^2 x(2)+\text{m1}^2 x(1)^2 x(3)+\text{m1}^2 x(1) x(2) x(3)+\text{m1}^2 x(1)^2 x(4)+\text{m1}^2 x(1) x(3) x(4)+\text{m1}^2 x(1) x(2) x(5)+\text{m1}^2 x(1) x(3) x(5)+\text{m1}^2 x(1) x(4) x(5)+\text{m2}^2 x(1) x(2)^2+\text{m2}^2 x(2)^2 x(3)+\text{m2}^2 x(1) x(2) x(3)+\text{m2}^2 x(1) x(2) x(4)+\text{m2}^2 x(2) x(3) x(4)+\text{m2}^2 x(2)^2 x(5)+\text{m2}^2 x(2) x(3) x(5)+\text{m2}^2 x(2) x(4) x(5)+\text{m3}^2 x(1) x(3)^2+\text{m3}^2 x(2) x(3)^2+\text{m3}^2 x(1) x(2) x(3)+\text{m3}^2 x(3)^2 x(4)+\text{m3}^2 x(1) x(3) x(4)+\text{m3}^2 x(3)^2 x(5)+\text{m3}^2 x(2) x(3) x(5)+\text{m3}^2 x(3) x(4) x(5)-q^2 x(1) x(2) x(4)-q^2 x(1) x(3) x(4)-q^2 x(2) x(3) x(4)-q^2 x(1) x(2) x(5)-q^2 x(1) x(3) x(5)-q^2 x(2) x(3) x(5)-q^2 x(1) x(4) x(5)-q^2 x(2) x(4) x(5)\right)
Let us consider the following two polynomials
= -1/4*(x[2]^2*x[3]) - (x[1]^2*x[4])/4 -
poly1 x[1]^2*x[5])/4 + (x[1]*x[2]*x[5])/2 - (x[2]^2*x[5])/4 + x[3]*x[4]*x[5] (
-\frac{1}{4} x(4) x(1)^2-\frac{1}{4} x(5) x(1)^2+\frac{1}{2} x(2) x(5) x(1)-\frac{1}{4} x(2)^2 x(3)-\frac{1}{4} x(2)^2 x(5)+x(3) x(4) x(5)
= -1/4*(x[1]^2*x[2]) - (x[1]^2*x[3])/4 +
poly2 x[2]*x[3]*x[4] + (x[1]*x[3]*x[5])/2 - (x[3]*x[5]^2)/4 - (x[4]*x[5]^2)/4
-\frac{1}{4} x(2) x(1)^2-\frac{1}{4} x(3) x(1)^2+\frac{1}{2} x(3) x(5) x(1)-\frac{1}{4} x(3) x(5)^2-\frac{1}{4} x(4) x(5)^2+x(2) x(3) x(4)
These polynomials are not identical
=== poly2 poly1
\text{False}
However, one can easily recognize that they are actually the same
upon renaming Feynman parameters x[i]
in a suitable way.
FCLoopPakOrder
can do such renamings automatically
= FCLoopPakOrder[poly1, x, Rename -> True]
canoPoly1
= FCLoopPakOrder[poly2, x, Rename -> True] canoPoly2
-\frac{1}{4} x(3) x(1)^2-\frac{1}{4} x(5) x(1)^2+\frac{1}{2} x(2) x(3) x(1)-\frac{1}{4} x(2)^2 x(3)-\frac{1}{4} x(2)^2 x(4)+x(3) x(4) x(5)
-\frac{1}{4} x(3) x(1)^2-\frac{1}{4} x(5) x(1)^2+\frac{1}{2} x(2) x(3) x(1)-\frac{1}{4} x(2)^2 x(3)-\frac{1}{4} x(2)^2 x(4)+x(3) x(4) x(5)
When comparing the canonicalized versions of both polynomials we see that they are indeed identical
=== canoPoly2 canoPoly1
\text{True}