FeynCalc manual (development version)

 

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μ)\overline{r}^{\mu } \overline{r}^{\nu } \left(\overline{p}^{\mu }+\overline{q}^{\mu }\right)

ex1 (ex1 /. \[Mu] -> \[Rho])
Contract[%]

rμ(rν)2rρ(pμ+qμ)(pρ+qρ)\overline{r}^{\mu } \left(\overline{r}^{\nu }\right)^2 \overline{r}^{\rho } \left(\overline{p}^{\mu }+\overline{q}^{\mu }\right) \left(\overline{p}^{\rho }+\overline{q}^{\rho }\right)

r2(pr+qr)2\overline{r}^2 \left(\overline{p}\cdot \overline{r}+\overline{q}\cdot \overline{r}\right)^2

However, since FeynCalc 9 there is a function for that

FCRenameDummyIndices[ex1]

rνr$AL($19)(p$AL($19)+q$AL($19))\overline{r}^{\nu } \overline{r}^{\text{\$AL}(\text{\$19})} \left(\overline{p}^{\text{\$AL}(\text{\$19})}+\overline{q}^{\text{\$AL}(\text{\$19})}\right)

ex1 FCRenameDummyIndices[ex1]
Contract[%]

rμrνrν(pμ+qμ)r$AL($20)(p$AL($20)+q$AL($20))\overline{r}^{\mu } \overline{r}^{\nu } \overline{r}^{\nu } \left(\overline{p}^{\mu }+\overline{q}^{\mu }\right) \overline{r}^{\text{\$AL}(\text{\$20})} \left(\overline{p}^{\text{\$AL}(\text{\$20})}+\overline{q}^{\text{\$AL}(\text{\$20})}\right)

r2(pr+qr)2\overline{r}^2 \left(\overline{p}\cdot \overline{r}+\overline{q}\cdot \overline{r}\right)^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μ\overline{p}^{\nu } \overline{q}^{\nu }-\overline{p}^{\mu } \overline{q}^{\mu }

p$AL($22)q$AL($22)p$AL($21)q$AL($21)\overline{p}^{\text{\$AL}(\text{\$22})} \overline{q}^{\text{\$AL}(\text{\$22})}-\overline{p}^{\text{\$AL}(\text{\$21})} \overline{q}^{\text{\$AL}(\text{\$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μ\overline{p}^{\nu } \overline{q}^{\nu }-\overline{p}^{\mu } \overline{q}^{\mu }

00

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\bar{\epsilon }^{\overline{p}\overline{q}\overline{r}\overline{s}}

p$AL($31)ϵˉ$AL($31)qrs\overline{p}^{\text{\$AL}(\text{\$31})} \bar{\epsilon }^{\text{\$AL}(\text{\$31})\overline{q}\overline{r}\overline{s}}

p$AL($33)q$AL($32)(ϵˉ$AL($32)$AL($33)rs)\overline{p}^{\text{\$AL}(\text{\$33})} \overline{q}^{\text{\$AL}(\text{\$32})} \left(-\bar{\epsilon }^{\text{\$AL}(\text{\$32})\text{\$AL}(\text{\$33})\overline{r}\overline{s}}\right)

SP[p, q]
Uncontract[%, p]

pq\overline{p}\cdot \overline{q}

pq\overline{p}\cdot \overline{q}

To uncontract scalar products as well, use the option Pair->All

Uncontract[%, p, Pair -> All]

p$AL($34)q$AL($34)\overline{p}^{\text{\$AL}(\text{\$34})} \overline{q}^{\text{\$AL}(\text{\$34})}