FCLoopPakOrder
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
.
See also
Overview, FCTopology, GLI, FCLoopToPakForm, FCLoopPakOrder.
Examples
Canonicalizing a polynomial
Let us consider the following product of U
and
F
polynomials of some loop integral
poly = (x[1]*x[2] + x[1]*x[3] + x[2]*x[3] + x[2]*x[4] + x[3]*x[4] + x[1]*x[5] +
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] +
m1^2*x[1]*x[2]*x[3] + m2^2*x[1]*x[2]*x[3] + m3^2*x[1]*x[2]*x[3] +
m3^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] -
SPD[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] +
m1^2*x[1]*x[2]*x[5] + m3^2*x[1]*x[2]*x[5] - SPD[q, q]*x[1]*x[2]*x[5] +
m3^2*x[2]^2*x[5] + m2^2*x[1]*x[3]*x[5] - SPD[q, q]*x[1]*x[3]*x[5] +
m2^2*x[2]*x[3]*x[5] - SPD[q, q]*x[2]*x[3]*x[5] + m1^2*x[1]*x[4]*x[5] -
SPD[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])
(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))(m12x(1)2x(2)+m12x(1)2x(3)+m12x(1)x(2)x(3)+m12x(1)x(2)x(4)+m12x(1)x(3)x(4)+m12x(1)2x(5)+m12x(1)x(2)x(5)+m12x(1)x(4)x(5)+m22x(1)x(3)2+m22x(2)x(3)2+m22x(1)x(2)x(3)+m22x(3)2x(4)+m22x(2)x(3)x(4)+m22x(1)x(3)x(5)+m22x(2)x(3)x(5)+m22x(3)x(4)x(5)+m32x(1)x(2)2+m32x(2)2x(3)+m32x(1)x(2)x(3)+m32x(2)2x(4)+m32x(2)x(3)x(4)+m32x(2)2x(5)+m32x(1)x(2)x(5)+m32x(2)x(4)x(5)−q2x(1)x(2)x(4)−q2x(1)x(3)x(4)−q2x(2)x(3)x(4)−q2x(1)x(2)x(5)−q2x(1)x(3)x(5)−q2x(2)x(3)x(5)−q2x(1)x(4)x(5)−q2x(3)x(4)x(5))
Using FCLoopPakOrder
we can obtain a canonical ordering
for this polynomial
sigma = FCLoopPakOrder[poly, x]
(13254)
This output implies that the polynomial will become canonically
ordered upon renaming the Feynman parameter variables as follows
fpVars = Table[x[i], {i, 1, 5}]
{x(1),x(2),x(3),x(4),x(5)}
repRule = Thread[Rule[Extract[fpVars, List /@ First[sigma]], fpVars]]
{x(1)→x(1),x(3)→x(2),x(2)→x(3),x(5)→x(4),x(4)→x(5)}
This way we obtain the canonical form of our polynomial
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))(m12x(1)2x(2)+m12x(1)2x(3)+m12x(1)x(2)x(3)+m12x(1)2x(4)+m12x(1)x(3)x(4)+m12x(1)x(2)x(5)+m12x(1)x(3)x(5)+m12x(1)x(4)x(5)+m22x(1)x(2)2+m22x(2)2x(3)+m22x(1)x(2)x(3)+m22x(1)x(2)x(4)+m22x(2)x(3)x(4)+m22x(2)2x(5)+m22x(2)x(3)x(5)+m22x(2)x(4)x(5)+m32x(1)x(3)2+m32x(2)x(3)2+m32x(1)x(2)x(3)+m32x(3)2x(4)+m32x(1)x(3)x(4)+m32x(3)2x(5)+m32x(2)x(3)x(5)+m32x(3)x(4)x(5)−q2x(1)x(2)x(4)−q2x(1)x(3)x(4)−q2x(2)x(3)x(4)−q2x(1)x(2)x(5)−q2x(1)x(3)x(5)−q2x(2)x(3)x(5)−q2x(1)x(4)x(5)−q2x(2)x(4)x(5))
Checking equivalence
Let us consider the following two polynomials
poly1 = -1/4*(x[2]^2*x[3]) - (x[1]^2*x[4])/4 -
(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]
−41x(4)x(1)2−41x(5)x(1)2+21x(2)x(5)x(1)−41x(2)2x(3)−41x(2)2x(5)+x(3)x(4)x(5)
poly2 = -1/4*(x[1]^2*x[2]) - (x[1]^2*x[3])/4 +
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
−41x(2)x(1)2−41x(3)x(1)2+21x(3)x(5)x(1)−41x(3)x(5)2−41x(4)x(5)2+x(2)x(3)x(4)
These polynomials are not identical
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
canoPoly1 = FCLoopPakOrder[poly1, x, Rename -> True]
canoPoly2 = FCLoopPakOrder[poly2, x, Rename -> True]
−41x(3)x(1)2−41x(5)x(1)2+21x(2)x(3)x(1)−41x(2)2x(3)−41x(2)2x(4)+x(3)x(4)x(5)
−41x(3)x(1)2−41x(5)x(1)2+21x(2)x(3)x(1)−41x(2)2x(3)−41x(2)2x(4)+x(3)x(4)x(5)
When comparing the canonicalized versions of both polynomials we see
that they are indeed identical
True