Date: 09/01/17-11:49:57 AM Z

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}] -
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,

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