The internal representation (FeynCalcIntenral
or FCI
) is how FeynCalc internally “sees” the objects. For example, a 4-dimensional 4-vector is represented by
[LorentzIndex[\[Mu]], Momentum[p]] Pair
\overline{p}^{\mu }
Pair is one of the most basic FeynCalc objects. Depending on its arguments, it can represent a 4-vector, a metric tensor
[LorentzIndex[\[Mu]], LorentzIndex[\[Nu]]] Pair
\bar{g}^{\mu \nu }
or a scalar product of two 4-vectors
[Momentum[p], Momentum[q]] Pair
\overline{p}\cdot \overline{q}
Another essential object is DiracGamma
that is used to represent Dirac matrices. An uncontracted Dirac matrix is
[LorentzIndex[\[Mu]]] DiracGamma
\bar{\gamma }^{\mu }
and for a Feynman slash we use
[Momentum[p]] DiracGamma
\bar{\gamma }\cdot \overline{p}
The Levi-Civita-Tensor is
[LorentzIndex[\[Mu]], LorentzIndex[\[Nu]], LorentzIndex[\[Rho]], LorentzIndex[\[Sigma]]] Eps
\bar{\epsilon }^{\mu \nu \rho \sigma }
or, when contracted with 4-momenta
[Momentum[p1], Momentum[p2], Momentum[q1], Momentum[q2]] Eps
\bar{\epsilon }^{\overline{\text{p1}}\;\overline{\text{p2}}\;\overline{\text{q1}}\;\overline{\text{q2}}}
This notation (momenta in the index slots) is also used in many other tools (e.g. FORM). The advantage is, that we do not need to canonicalize the indices of the Levi-Civita-Tensor, e.g. to ensure that
= Eps[LorentzIndex[\[Mu]], Momentum[p2], Momentum[q1], Momentum[q2]] Pair[LorentzIndex[\[Mu]], Momentum[p1]] -
diff [LorentzIndex[\[Nu]], Momentum[p2], Momentum[q1], Momentum[q2]] Pair[LorentzIndex[\[Nu]], Momentum[p1]] Eps
\overline{\text{p1}}^{\mu } \bar{\epsilon }^{\mu \overline{\text{p2}}\;\overline{\text{q1}}\;\overline{\text{q2}}}-\overline{\text{p1}}^{\nu } \bar{\epsilon }^{\nu \overline{\text{p2}}\;\overline{\text{q1}}\;\overline{\text{q2}}}
// Contract diff
0
is zero.
The internal representation is useful for the internal programming FeynCalc, but obviously too cumbersome for the user input. This is why FeynCalc also has an external representation (FeynCalcExternal
or FCE
), that is concise and convenient.
Let us start with the 4-vector. In the FCE-notation it is just FV
(“FourVector”)
[p, \[Mu]] FV
\overline{p}^{\mu }
It is not hard to guess that the scalar product is SP
[p, q] SP
\overline{p}\cdot \overline{q}
while for the metric tensor we write MT
[\[Mu], \[Nu]] MT
\bar{g}^{\mu \nu }
To input a Dirac matrix or a Feynman slash, use GA
or GS
respectively
[\[Mu]] GA
\bar{\gamma }^{\mu }
[p] GS
\bar{\gamma }\cdot \overline{p}
The Levi-Civita tensor is LC
[\[Mu], \[Nu], \[Rho], \[Sigma]] LC
\bar{\epsilon }^{\mu \nu \rho \sigma }
The fully contracted form is entered via
[][p1, p2, q1, q2] LC
\bar{\epsilon }^{\overline{\text{p1}}\;\overline{\text{p2}}\;\overline{\text{q1}}\;\overline{\text{q2}}}
It is also possible to enter a mixed form
[\[Mu]][p1, p2, q] LC
\bar{\epsilon }^{\mu \overline{\text{p1}}\;\overline{\text{p2}}\overline{q}}
[\[Mu], \[Nu]][p1, p2] LC
\bar{\epsilon }^{\mu \nu \overline{\text{p1}}\;\overline{\text{p2}}}
To convert between the two representations we use the functions FCI
and FCE
, which are shortcuts for FeynCalcInternal
and FeynCalcExternal
. One cannot distinguish between the notations using the typesetting, i.e. when we see a typeset object in the TraditionalForm
, we cannot really tell if it is in the FCI
or FCE
notation.
= FV[p, \[Mu]]
ex1 = Pair[Momentum[p], LorentzIndex[\[Mu]]] ex2
\overline{p}^{\mu }
\overline{p}^{\mu }
However, we can always use StandardForm to see the difference
// StandardForm
ex1 // StandardForm
ex2
(*FV[p, \[Mu]]*)
(*Pair[LorentzIndex[\[Mu]], Momentum[p]]*)
All FeynCalc functions that are meant for users will automatically convert the user input in the FCE
notation into the FCI
notation. You do not have to do it by yourself.
On the other hand, virtually all FeynCalc functions produce their output in the FCI
form. So when you have an expression that was obtained from FeynCalc and want to apply some replacement rules to it, we have to use the FCI
form in the rule
= Pair[Momentum[p], Momentum[q]] ex
\overline{p}\cdot \overline{q}
No surprise that following does not work
/. SP[p, q] -> 1 ex
\overline{p}\cdot \overline{q}
But if we wrap the r.h.s of the rule with FCI
, then everything is fine
/. FCI[SP[p, q]] -> 1 ex
1