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
>>