Name: V. Shtabovenko Date: 08/16/18-08:53:59 AM Z
A short follow up on the second issue.
After some adjustments, ApartFF is now guaranteed not to touch the
denominators (i.e.
not to perform any shifts) if the FDS option is set to False. The same
holds also for FCMultiLoopTID.
exp2 = -(1/2) CA^3 FAD[{p1, I mE}, {p2, I mE}, p1 + p2,
p1 + p2, {p3, I mE}, {-p1 - p2 + p3, I mE}, {p2, I mE}, {p1,
I mE}] FVD[p1, Lor1] FVD[p2, Lor2] SD[a,
b] SMP[
g_s]^6 (SPD[p1, p1] - 2 SPD[p1, p3] -
SPD[p2, p2] +
2 SPD[p2, p3])^2;
red = FCMultiLoopTID[exp2, {p1, p2, p3}, FDS -> False];
lInts = FCLoopExtract[red, {p1, p2, p3}, loop] // Last;
Union[FCLoopBasisOverdeterminedQ[#, {p1, p2, p3}] & /@
(lInts /.
loop -> Identity)]
So once you fix the basis of propagators, it should not be altered by
these functions.
BTW, we now have native support for Euclidean propagators via the new
SFAD objects:
expT = -(1/2)
CA^3 SFAD[{p1, -mE^2}, {p2, - mE^2}, {p1 + p2, 0,
2}, {p3, -mE^2}, {-p1 - p2 + p3, -
mE^2}, {p2, -mE^2}, {p1, -mE^2}] FVD[p1, Lor1]
FVD[p2, Lor2] SD[
a, b] SMP[
g_s]^6 (SPD[p1, p1] - 2 SPD[p1, p3] -
SPD[p2, p2] +
2 SPD[p2, p3])^2
red2 = FCMultiLoopTID[expT, {p1, p2, p3}, FDS -> False]
and
red - red2 // PropagatorDenominatorExplicit
yields 0
Cheers,
Vladyslav
Am 01.09.2017 um 17:49 schrieb Vladyslav Shtabovenko:
> Hi,
>
> the first issue is related to the fact that originally I wanted
> FCMultiLoopTID to ignore integrals that contain less loop momenta
than
> given in the argument of the function. However, at the present stage
of
> the development there is no need for that, so I pushed the
corresponding
> changes to the repository.
>
>
<https://github.com/FeynCalc/feyncalc/commit/9a0a983482c7719b8bf8c29d31e77f035aafe4c7>
>
>
> The second issue is more subtle. The problem is that sometimes
applying
> FeynAmpDenominator or ExpandScalarProduct after ApartFF leads to
a
> change of the basis, such that the resulting integrals again exhibit
a
> linear dependence in the propagators.
>
> For example, the integral
>
> int = FAD[{p3, m}] FAD[p1, {p2, m}, {p1 - p2, m}, {p1 -
p2, m}, {p1 -
> p3, m}] SPD[p1 - p2, p3]
>
> contains no linearly dependent propagators.
>
> FCLoopBasisOverdeterminedQ[int, {p1, p2, p3}]
>
> However, if we rewrite (p1-p2).p3 as p1.p2 - p2.p3, thus
splitting
> the integral into two, then one of the integrals will have
linearly
> dependent propagators, such that ApartFF will rewrite it into
something
> else
>
> ApartFF[ExpandScalarProduct[int], {p1, p2, p3}] //
FCE
>
> 1/2 FAD[p1, {p2, m}, {p1 - p2, m}, {p1 - p2, m}, {p1 - p3,
m}] -
> Â 1/2 FAD[{p3, m}, p1, {p2, m}, {-p1 + p2, m}, {-p1 + p2,
m}] +
> Â 1/2 FAD[{p3, m}, {p1, m}, {p1 - p2, m}, {p1 - p2, m}, {p2 -
p3, m}] -
> Â FAD[{p3, m},
> Â Â p1, {p2, m}, {p1 - p2, m}, {p1 - p2, m}, {p1 - p3, m}]
SPD[p2, p3]
>
> Essentially, here we traded the basis integral with one (p1-p2).p3
in
> the numerator for an integral with a p2.p3 in the numerator plus
some
> more integrals.
>
> Such “involuntary” transformations are difficult to avoid, since in
some
> situation FDS and ExpandScalarProduct really make the result much
> simpler, while in others the output becomes more complicated.
>
> One would need a bunch of new options to have more control over that
and
> possibly a generic mechanism to specify the preferred basis. This is
not
> something I can code in a day or so. As a workaround you can use,
>
> exp3 = FCMultiLoopTID[exp2, {p1, p2, p3},
> Â ExpandScalarProduct -> False, FDS -> False]
>
> which works in this particular case
>
> Cheers,
> Vladyslav
>
> Am 01.09.2017 um 03:28 schrieb Philipp:
>> Hi,
>>
>> I was decomposing the following expressions in the 3 loop
momenta
>> {p1,p2,p3} with FCMultiLoopTID
>>
>> exp = CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p2,D],I
>> mE],PropagatorDenominator[Momentum[p3,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[-p1+p2,D],I
>> mE],PropagatorDenominator[Momentum[-p1+p3,D],I
mE]]
>>
Pair[LorentzIndex[Lor1,D],Momentum[p1,D]]
>>
Pair[LorentzIndex[Lor2,D],Momentum[p1,D]]
>> (Pair[Momentum[p1,D],Momentum[p1,D]]-2
>>
(Pair[Momentum[p1,D],Momentum[p2,D]]+Pair[Momentum[p1,D],Momentum[p3,D]]-2
>> Pair[Momentum[p2,D],Momentum[p3,D]]))^2
SMP[g_s]^6
>> SUNDelta[SUNIndex[a],SUNIndex[b]]
>>
>> However after the decomposition I am still left with an
expression
>> that is not scalarised and has open Lorentz indices lor1,lor2 and
only
>> depends on two loop momenta even:
>>
>> (1/D)2 CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D]-Momentum[p2,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D]-Momentum[p3,D],I
mE]]
>>
Pair[LorentzIndex[Lor1,D],LorentzIndex[Lor2,D]]
SMP[g_s]^6
>> SUNDelta[SUNIndex[a],SUNIndex[b]]-(1/D)2
CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p2,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D]-Momentum[p3,D],I
mE]]
>>
Pair[LorentzIndex[Lor1,D],LorentzIndex[Lor2,D]]
SMP[g_s]^6
>> SUNDelta[SUNIndex[a],SUNIndex[b]]+(1/D)2
CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p2,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D]-Momentum[p2,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D]-Momentum[p3,D],I
mE]]
>> Pair[Lorentz
>> Â Index[Lor1,D],LorentzIndex[Lor2,D]]
SMP[g_s]^6
>> SUNDelta[SUNIndex[a],SUNIndex[b]]-(1/D)2
CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p3,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[-Momentum[p1,D]+Momentum[p2,D],I
>> mE]]
Pair[LorentzIndex[Lor1,D],LorentzIndex[Lor2,D]]
SMP[g_s]^6
>>
SUNDelta[SUNIndex[a],SUNIndex[b]]+(1/D)CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p3,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D]-Momentum[p2,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D]-Momentum[p3,D],I
mE]]
>>
Pair[LorentzIndex[Lor1,D],LorentzIndex[Lor2,D]]
SMP[g_s]^6
>>
SUNDelta[SUNIndex[a],SUNIndex[b]]-(1/D)CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p3,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p2,D],I
>> mE],Prop
>> Â
agatorDenominator[-Momentum[p1,D]+Momentum[p2,D],I
mE]]
>>
Pair[LorentzIndex[Lor1,D],LorentzIndex[Lor2,D]]
SMP[g_s]^6
>>
SUNDelta[SUNIndex[a],SUNIndex[b]]-(1/D)CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p3,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p2,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D]-Momentum[p3,D],I
mE]]
>>
Pair[LorentzIndex[Lor1,D],LorentzIndex[Lor2,D]]
SMP[g_s]^6
>>
SUNDelta[SUNIndex[a],SUNIndex[b]]+(1/D)CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p3,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p2,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D]-Momentum[p2,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D]-Momentum[p3,D],I
mE]]
>>
Pair[LorentzIndex[Lor1,D],LorentzIndex[Lor2,D]]
SMP[g_s]^6
>>
SUNDelta[SUNIndex[a],SUNIndex[b]]+(1/D)CA^3
mE^2
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDeno
>>
>> Â
minator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p2,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D]-Momentum[p2,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D]-Momentum[p3,D],I
mE]]
>>
Pair[LorentzIndex[Lor1,D],LorentzIndex[Lor2,D]]
SMP[g_s]^6
>> SUNDelta[SUNIndex[a],SUNIndex[b]]-CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p2,D],I
>>
mE],PropagatorDenominator[-Momentum[p1,D]+Momentum[p2,D],I
mE]]
>>
Pair[LorentzIndex[Lor1,D],Momentum[p1,D]]
>> Pair[LorentzIndex[Lor2,D],Momentum[p1,D]]
SMP[g_s]^6
>> SUNDelta[SUNIndex[a],SUNIndex[b]]+(1/D)2
CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p3,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D]-Momentum[p2,D],I
>> mE],PropagatorDenominator[Momentum[p1,D]-Momen
>> Â tum[p3,D],I mE]]
Pair[LorentzIndex[Lor1,D],LorentzIndex[Lor2,D]]
>> Pair[Momentum[p1,D],Momentum[p2,D]]
SMP[g_s]^6
>> SUNDelta[SUNIndex[a],SUNIndex[b]]-(1/D)8
CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p1,D],I
>>
mE],PropagatorDenominator[Momentum[p2,D],0],PropagatorDenominator[Momentum[p2,D],0],PropagatorDenominator[Momentum[p2,D],0],PropagatorDenominator[Momentum[p1,D]-Momentum[p2,D],I
>>
mE],PropagatorDenominator[Momentum[p2,D]-Momentum[p3,D],I
mE]]
>>
Pair[LorentzIndex[Lor1,D],LorentzIndex[Lor2,D]]
>> Pair[Momentum[p1,D],Momentum[p3,D]]
SMP[g_s]^6
>> SUNDelta[SUNIndex[a],SUNIndex[b]]-(1/D)2
CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p3,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p2,D],I
>>
mE],PropagatorDenominator[-Momentum[p1,D]+Momentum[p2,D],I
mE]]
>>
Pair[LorentzIndex[Lor1,D],LorentzIndex[Lor2,D]]
>> Pair[Momentum[p1,D],Momentum[p3,D]]
SMP[g_s]^6 SUNDelta[SU
>> Â NIndex[a],SUNIndex[b]]-(1/D)8 CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p3,D],I
>> mE],PropagatorDenominator[Momentum[p1,D],I
>>
mE],PropagatorDenominator[Momentum[p2,D],0],PropagatorDenominator[Momentum[p2,D],0],PropagatorDenominator[Momentum[p1,D]-Momentum[p2,D],I
>>
mE],PropagatorDenominator[Momentum[p2,D]-Momentum[p3,D],I
mE]]
>>
Pair[LorentzIndex[Lor1,D],LorentzIndex[Lor2,D]]
>> Pair[Momentum[p1,D],Momentum[p3,D]]
SMP[g_s]^6
>> SUNDelta[SUNIndex[a],SUNIndex[b]]+(1/D)8
CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p3,D],I
>> mE],PropagatorDenominator[Momentum[p1,D],I
>>
mE],PropagatorDenominator[Momentum[p2,D],0],PropagatorDenominator[Momentum[p2,D],0],PropagatorDenominator[Momentum[p2,D],0],PropagatorDenominator[-Momentum[p1,D]+Momentum[p2,D],I
>> mE]]
Pair[LorentzIndex[Lor1,D],LorentzIndex[Lor2,D]]
>> Pair[Momentum[p1,D],Momentum[p3,D]]
SMP[g_s]^6
>> SUNDelta[SUNIndex[a],SUNIndex[b]]-(1/D)8
CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p3,D],I
>> mE],PropagatorDenominator[M
>>
>>
omentum[p2,D],0],PropagatorDenominator[Momentum[p2,D],0],PropagatorDenominator[Momentum[p2,D],0],PropagatorDenominator[Momentum[p1,D]-Momentum[p2,D],I
>>
mE],PropagatorDenominator[Momentum[p2,D]-Momentum[p3,D],I
mE]]
>>
Pair[LorentzIndex[Lor1,D],LorentzIndex[Lor2,D]]
>> Pair[Momentum[p1,D],Momentum[p3,D]]
SMP[g_s]^6
>> SUNDelta[SUNIndex[a],SUNIndex[b]]+(1/D)16
CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p3,D],I
>> mE],PropagatorDenominator[Momentum[p1,D],I
>>
mE],PropagatorDenominator[Momentum[p2,D],0],PropagatorDenominator[Momentum[p2,D],0],PropagatorDenominator[Momentum[p2,D],0],PropagatorDenominator[Momentum[p1,D]-Momentum[p2,D],I
>>
mE],PropagatorDenominator[Momentum[p2,D]-Momentum[p3,D],I
mE]]
>>
Pair[LorentzIndex[Lor1,D],LorentzIndex[Lor2,D]]
>> Pair[Momentum[p1,D],Momentum[p3,D]]^2
SMP[g_s]^6
>>
SUNDelta[SUNIndex[a],SUNIndex[b]]+(1/D)CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorDenominator[Momentum[p1,D],0],PropagatorD
>>
>> Â enominator[Momentum[p2,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D]-Momentum[p2,D],I
>>
mE],PropagatorDenominator[Momentum[p1,D]-Momentum[p3,D],I
mE]]
>>
Pair[LorentzIndex[Lor1,D],LorentzIndex[Lor2,D]]
>> Pair[Momentum[p3,D],Momentum[p3,D]]
SMP[g_s]^6
>> SUNDelta[SUNIndex[a],SUNIndex[b]]
>>
>> Am I missing something here? It works, however, when performing
the
>> decomposition with ApartFF->False and then individually using
ApartFF
>> afterwards.
>>
>> Also in some cases when using your FIRE interface it appears
that
>> after the tensor integral decomposition one is still left with
>> integrals that have linearly dependent propagators (or at least
an
>> error is given:
>>
>> exp2 = -(1/2) CA^3
>>
FeynAmpDenominator[PropagatorDenominator[Momentum[p1,D],I
>> mE],PropagatorDenominator[Momentum[p2,D],I
>>
mE],PropagatorDenominator[Momentum[p1+p2,D],0],PropagatorDenominator[Momentum[p1+p2,D],0],PropagatorDenominator[Momentum[p3,D],I
>>
mE],PropagatorDenominator[Momentum[-p1-p2+p3,D],I
>> mE],PropagatorDenominator[Momentum[p2,D],I
>> mE],PropagatorDenominator[Momentum[p1,D],I
mE]]
>>
Pair[LorentzIndex[Lor1,D],Momentum[p1,D]]
>>
Pair[LorentzIndex[Lor2,D],Momentum[p2,D]]
>> (Pair[Momentum[p1,D],Momentum[p1,D]]-2
>>
Pair[Momentum[p1,D],Momentum[p3,D]]-Pair[Momentum[p2,D],Momentum[p2,D]]+2
>> Pair[Momentum[p2,D],Momentum[p3,D]])^2
SMP[g_s]^6
>> SUNDelta[SUNIndex[a],SUNIndex[b]];
>>
>> FCMultiLoopTID[exp2,{p1,p2,p3}];
>> FIREBurn[%,{p1,p2,p3},{q}];
>>
>> Here FIREBurn gives the error FIREBurn::lindep which shouldn’t
appear
>> given the fact that the decomposition was done automatically
with
>> ApartFF.
>>
>> Thanks for your help.
>>
>> Cheers,
>> Philipp
>>