FeynCalc / feyncalc

Mathematica package for algebraic calculations in elementary particle physics.
https://feyncalc.github.io
GNU General Public License v3.0
309 stars 87 forks source link

Spurious MomentumExpand instead of list of momenta in ToPaGe's GenPaVe result. #166

Closed HBelusca closed 2 years ago

HBelusca commented 2 years ago

Description

Calling ToPaVe on a FAD expression, with the option GenPaVe -> True, gives a result that contains a spurious MomentumExpand function and that forms an invalid syntax for the resulting GenPaVe function.

12.3.1 for Microsoft Windows (64-bit) (June 24, 2021)

FeynCalc 10.0.0 (Development version) - Commit d78187b3ab6fcb28d15f2e8d86b67704b4b81940 (version from April 2)

Presence of Package-X

Minimal (non-)working example

In[1]:= ToPaVe[FAD[q, q - p], q, GenPaVe -> True] // InputForm

Out[1]//InputForm=
I*Pi^2*GenPaVe[{0}, MomentumExpand[{0, 0}, {-Momentum[p, D], 0}]]

Applying PaXEvaluateUV[#, q]& on that result then fails:

In[2]:= % // PaXEvaluateUV[#, q] &

During evaluation of In[2]:= PaXEvaluate::convFail: Warning! Not all scalar loop integrals in the expression could be prepared to be processed with Package X.
Following integrals will not be handled by Package X: {GenPaVe({0},MomentumExpand({0,0},{-p,0}))}

Out[2]= 0

Expected result: the buggy MomentumExpand function head should be List instead, as required by the GenPaVe syntax; the result should be:

I*Pi^2*GenPaVe[{0}, {{0, 0}, {-Momentum[p, D], 0}}]

so that applying PaXEvaluateUV gives the well-known result

In[3]:= I*Pi^2*GenPaVe[{0}, {{0, 0}, {-Momentum[p, D], 0}}] // PaXEvaluateUV[#, q] &

Out[3]= (I \[Pi]^2)/Subscript[\[CurlyEpsilon], UV]
HBelusca commented 2 years ago

EDIT: A fix proposed there: https://github.com/FeynCalc/feyncalc/commit/dda39f58a23eaa0d8ac931bb4fcbf67daa3b00cc#r70562127 the code should read: MomentumExpand[{prs}] , instead of MomentumExpand[prs]

vsht commented 2 years ago

Many thanks for the bug report, this should be now fixed.

BTW,

In[3]:= I*Pi^2*GenPaVe[{0}, {{0, 0}, {-Momentum[p, D], 0}}] // PaXEvaluateUV[#, q] &

Out[3]= (I \[Pi]^2)/Subscript[\[CurlyEpsilon], UV]

is probably your personal fork of FeynHelpers, since the standard version doesn't support GenPaVe ;)

HBelusca commented 2 years ago

oops indeed you're right xd

EDIT: Confirmed bug fixed, thanks!