Name: Vladyslav Shtabovenko Date: 08/13/15-07:09:40 PM Z


Dear FeynCalc users,

this is indeed a serious issue that has been fixed now.

<https://github.com/FeynCalc/feyncalc/commit/de9c9ac7b778962dd9dd5adb68aef5b152b024e3>

<https://github.com/FeynCalc/feyncalc/commit/4deecd3b58072d4c3f026e02041d6adf1faadfaf>

FourDivergence[SpinorUBar[p1, m1].(GS[p] + m).Spinor[p2, m2],
 FV[p, mu]] // FCE

-> Spinor[Momentum[p1], m1, 1].GA[mu].Spinor[Momentum[p2], m2, 1]

FourDivergence[
  ScalarProduct[p, w]*SpinorUBar[p2, m].GS[w].SpinorU[p1, m],
  FV[w, a]] // FCE

-> Spinor[Momentum[p2], m, 1].GS[w].Spinor[Momentum[p1], m, 1] FV[p, a]
+ Spinor[Momentum[p2], m, 1].GA[a].Spinor[Momentum[p1], m, 1] SP[p, w]

Moreover, FourDivergence should be now faster on large expressions.

If you want to use FourDivergence to compute a series, here is a
simplistic code for doing this.

ClearAll[FVSeries];
Options[FVSeries] = {List -> False, Dimension -> D};
FVSeries[expr_, {q_, q0_, n_}, OptionsPattern[]] :=
 Block[{fvs, ex, res, dim},
  dim = OptionValue[Dimension];
  ex = FCI[expr];
  res = Join [{EpsEvaluate[(ex /. q -> q0)]},
    Table[fvs =
      Table[FCI[
        Pair[Momentum[q, dim], LorentzIndex[Unique[], dim]]], {j, 1,
        i}]; ((1/i!) FourDivergence[ex, Sequence @@ fvs,
          Contract -> False]) // ReplaceAll[#, q -> q0] & //
      Contract[#, Times @@ fvs] &, {i, 1, n}]];
  If[! OptionValue[List],
   res = Total@res
   ];
  res
  ]

FVSeries[SPD[p, q] FAD[{p + l, m}], {p, 0, 4}]

or

FVSeries[SPD[p, q] FAD[{p + l, m}], {p, 0, 4}, List -> True]

Note that this code will break down if the derivative is singular at the
given point (this is why it is simplistic), but for well behaved
expansions it seems to work fine so far.

Please let me know if there are still any issues with FourDivergence.

Cheers,
Vladyslav

> The problem is that for some reason FourDivergence acting on DiracSlash gives 0.
>
> In[2]:= fun=GS[p]//FCI
> Out[2]= gs[p]
>
> In[3]:= pa=FourVector[p,a];
>
> In[4]:= FourDivergence[fun,pa]
> Out[4]= 0
>
> Here is a workaround:
>
> In[5]:= fun2=DiracMatrix[b] FourVector[p,b]
> Out[5]= ga[b] FourVector[p, b]
>
> In[6]:= Contract[fun2]
> Out[6]= gs[p]
>
> In[7]:= FourDivergence[fun2,pa]
> Out[7]= ga[a]
>
> You can always use Contract afterward, if necessary.