Handling indices
See also
Overview.
Manipulations
When you square an expression with dummy indices, you must rename them first. People often do this by hand, e.g. as in
ex1 = (FV[p, \[Mu]] + FV[q, \[Mu]]) FV[r, \[Mu]] FV[r, \[Nu]]
rμrν(pμ+qμ)
ex1 (ex1 /. \[Mu] -> \[Rho])
Contract[%]
rμ(rν)2rρ(pμ+qμ)(pρ+qρ)
r2(p⋅r+q⋅r)2
However, since FeynCalc 9 there is a function for that
FCRenameDummyIndices[ex1]
rνr$AL($19)(p$AL($19)+q$AL($19))
ex1 FCRenameDummyIndices[ex1]
Contract[%]
rμrνrν(pμ+qμ)r$AL($20)(p$AL($20)+q$AL($20))
r2(p⋅r+q⋅r)2
Notice that FCRenameDummyIndices
does not canonicalize the indices
FV[p, \[Nu]] FV[q, \[Nu]] - FV[p, \[Mu]] FV[q, \[Mu]]
FCRenameDummyIndices[%]
pνqν−pμqμ
p$AL($22)q$AL($22)−p$AL($21)q$AL($21)
But since FeynCalc 9.1 there is a function for that too
FV[p, \[Nu]] FV[q, \[Nu]] - FV[p, \[Mu]] FV[q, \[Mu]]
FCCanonicalizeDummyIndices[%]
pνqν−pμqμ
0
Finally, often we also need to uncontract already contracted indices. This is done by Uncontract
. By default, it handles only contractions with Dirac matrices and Levi-Civita tensors
LC[][p, q, r, s]
Uncontract[%, p]
Uncontract[%%, p, q]
ϵˉpqrs
p$AL($31)ϵˉ$AL($31)qrs
p$AL($33)q$AL($32)(−ϵˉ$AL($32)$AL($33)rs)
SP[p, q]
Uncontract[%, p]
p⋅q
p⋅q
To uncontract scalar products as well, use the option Pair->All
Uncontract[%, p, Pair -> All]
p$AL($34)q$AL($34)