Cadabra
a field-theory motivated approach to computer algebra

Commutator algebra

An often asked question is how to handle commutator algebra with Cadabra. This requires a few steps which are perhaps not entirely transparent to a new user, hence the following simple example. In this notebook, we will verify the invariance of the two quadratic Casimirs of the Poincaré algebra. That is, we will verify that \begin{equation} [ J_{\mu\nu}, P^2 ] = 0\,,\quad{\rm and}\quad [ J_{\mu\nu}, W^2 ] = 0\,, \end{equation} where $P^2 = P_\mu P_\mu$ is the momentum squared and $W^2 = W_\mu W_\mu$ is the square of \begin{equation} W_\mu = \epsilon_{\mu\nu\rho\sigma} P_{\nu} J_{\rho\sigma}\,. \end{equation} We first make some straightforward property assignments: declaration of indices, declaration of the operators $P_\mu$ and $J_{\mu\nu}$ and the fact that they do not commute, and so on.
{\mu,\nu,\rho,\sigma,\lambda,\kappa,\alpha,\beta,\gamma,\xi}::Indices. {\mu,\nu,\rho,\sigma,\lambda,\kappa,\alpha,\beta,\gamma,\xi}::Integer(0..3). \eta_{\mu\nu}::KroneckerDelta. \delta{#}::KroneckerDelta. e_{\mu\nu\lambda\rho}::EpsilonTensor(delta=\delta). J_{\mu\nu}::AntiSymmetric. J_{\mu\nu}::SelfNonCommuting. { J_{\mu\nu}, P_{\mu}, W_{\mu} }::NonCommuting.
{J_{\mu\nu}, P_{\mu}, W_{\mu} }::Depends(\commutator{#}).
For computations involving algebras like the one in this notebook, the following set of post processing rules is useful. They move all objects out of commutators and anti-commutators which commute with everything else, and then reorder and relabel indices to obtain a simple form.
def post_process(ex): unwrap(ex) eliminate_kronecker(ex) canonicalise(ex) rename_dummies(ex) collect_terms(ex)

The Poincaré algebra

We now input the rules which define the Poincaré algebra. These are simply substitution rules, to be used later in explicit substition commands.
poincare:= { \commutator{J_{\mu\nu}}{P_{\rho}} -> \eta_{\mu\rho} P_{\nu} - \eta_{\nu\rho} P_{\mu}, \commutator{J_{\mu\nu}}{J_{\rho\sigma}} -> \eta_{\mu\rho} J_{\nu\sigma} - \eta_{\mu\sigma} J_{\nu\rho} - \eta_{\nu\rho} J_{\mu\sigma} + \eta_{\nu\sigma} J_{\mu\rho} };
\(\displaystyle{}\left\{{}\left[J_{\mu \nu}, P_{\rho}\right]{} \rightarrow \eta_{\mu \rho} P_{\nu}-\eta_{\nu \rho} P_{\mu}, \mmlToken{mo}[linebreak="goodbreak"]{} {}\left[J_{\mu \nu}, J_{\rho \sigma}\right]{} \rightarrow \eta_{\mu \rho} J_{\nu \sigma}-\eta_{\mu \sigma} J_{\nu \rho}-\eta_{\nu \rho} J_{\mu \sigma}+\eta_{\nu \sigma} J_{\mu \rho}\right\}\)

The $P^2$ Casimir

We know that $P^2$ is a Casimir, so the following should vanish:
Psq:= \commutator{J_{\mu\nu}}{ P_{\rho}P_{\rho} };
\(\displaystyle{}{}\left[J_{\mu \nu}, P_{\rho} P_{\rho}\right]{}\)
product_rule(_);
\(\displaystyle{}{}\left[J_{\mu \nu}, P_{\rho}\right]{} P_{\rho}+P_{\rho} {}\left[J_{\mu \nu}, P_{\rho}\right]{}\)
substitute(_, poincare);
\(\displaystyle{}\left(\eta_{\mu \rho} P_{\nu}-\eta_{\nu \rho} P_{\mu}\right) P_{\rho}+P_{\rho} \left(\eta_{\mu \rho} P_{\nu}-\eta_{\nu \rho} P_{\mu}\right)\)
distribute(_);
\(\displaystyle{}0\)

The $W^2$ Casimir

Next we do the same thing with $W^2$, the other Poincaré Casimir...
Wsq:=\commutator{J_{\mu\nu}}{W_\mu W_\mu};
\(\displaystyle{}{}\left[J_{\mu \nu}, W_{\rho} W_{\rho}\right]{}\)
substitute(_, $W_\mu -> e_{\mu\nu\lambda\rho} P_\nu J_{\lambda\rho}$);
\(\displaystyle{}e_{\gamma \alpha \lambda \kappa} e_{\gamma \rho \sigma \beta} {}\left[J_{\mu \nu}, P_{\alpha} J_{\rho \sigma} P_{\beta} J_{\lambda \kappa}\right]{}\)
epsilon_to_delta(_);
\(\displaystyle{}6\delta_{\alpha \rho \lambda \sigma \kappa \beta} {}\left[J_{\mu \nu}, P_{\alpha} J_{\rho \sigma} P_{\beta} J_{\lambda \kappa}\right]{}\)
expand_delta(_);
\(\displaystyle{}-6\left(\frac{1}{6}\delta_{\alpha \rho} \delta_{\beta \lambda} \delta_{\kappa \sigma} - \frac{1}{6}\delta_{\alpha \rho} \delta_{\beta \kappa} \delta_{\lambda \sigma} - \frac{1}{6}\delta_{\alpha \sigma} \delta_{\beta \lambda} \delta_{\kappa \rho}+\frac{1}{6}\delta_{\alpha \beta} \delta_{\lambda \sigma} \delta_{\kappa \rho}+\frac{1}{6}\delta_{\alpha \sigma} \delta_{\beta \kappa} \delta_{\lambda \rho} - \frac{1}{6}\delta_{\alpha \beta} \delta_{\lambda \rho} \delta_{\kappa \sigma}\right) {}\left[J_{\mu \nu}, P_{\alpha} J_{\rho \sigma} P_{\beta} J_{\lambda \kappa}\right]{}\)
product_rule(_);
\(\displaystyle{}-6\left(\frac{1}{6}\delta_{\alpha \rho} \delta_{\beta \kappa} \delta_{\lambda \sigma} - \frac{1}{6}\delta_{\alpha \rho} \delta_{\beta \lambda} \delta_{\kappa \sigma} - \frac{1}{6}\delta_{\alpha \sigma} \delta_{\beta \kappa} \delta_{\lambda \rho}+\frac{1}{6}\delta_{\alpha \beta} \delta_{\lambda \rho} \delta_{\kappa \sigma}+\frac{1}{6}\delta_{\alpha \sigma} \delta_{\beta \lambda} \delta_{\kappa \rho} - \frac{1}{6}\delta_{\alpha \beta} \delta_{\lambda \sigma} \delta_{\kappa \rho}\right) \left(-{}\left[J_{\mu \nu}, P_{\alpha}\right]{} J_{\rho \sigma} P_{\beta} J_{\lambda \kappa}-P_{\alpha} {}\left[J_{\mu \nu}, J_{\rho \sigma}\right]{} P_{\beta} J_{\lambda \kappa}-P_{\alpha} J_{\rho \sigma} {}\left[J_{\mu \nu}, P_{\beta}\right]{} J_{\lambda \kappa}+P_{\alpha} J_{\rho \sigma} P_{\beta} {}\left[J_{\mu \nu}, J_{\kappa \lambda}\right]{}\right)\)
substitute(_, poincare);
\(\displaystyle{}-6\left(\frac{1}{6}\delta_{\beta \rho} \delta_{\alpha \kappa} \delta_{\lambda \sigma} - \frac{1}{6}\delta_{\beta \rho} \delta_{\alpha \lambda} \delta_{\kappa \sigma} - \frac{1}{6}\delta_{\beta \sigma} \delta_{\alpha \kappa} \delta_{\lambda \rho}+\frac{1}{6}\delta_{\beta \alpha} \delta_{\kappa \sigma} \delta_{\lambda \rho}+\frac{1}{6}\delta_{\beta \sigma} \delta_{\alpha \lambda} \delta_{\kappa \rho} - \frac{1}{6}\delta_{\beta \alpha} \delta_{\kappa \rho} \delta_{\lambda \sigma}\right) \left(-\left(\eta_{\beta \mu} P_{\nu}-\eta_{\beta \nu} P_{\mu}\right) J_{\rho \sigma} P_{\alpha} J_{\lambda \kappa}-P_{\beta} \left(\eta_{\mu \rho} J_{\nu \sigma}-\eta_{\mu \sigma} J_{\nu \rho}-\eta_{\nu \rho} J_{\mu \sigma}+\eta_{\nu \sigma} J_{\mu \rho}\right) P_{\alpha} J_{\lambda \kappa}-P_{\beta} J_{\rho \sigma} \left(\eta_{\alpha \mu} P_{\nu}-\eta_{\alpha \nu} P_{\mu}\right) J_{\lambda \kappa}+P_{\beta} J_{\rho \sigma} P_{\alpha} \left(-\eta_{\kappa \mu} J_{\lambda \nu}+\eta_{\lambda \mu} J_{\kappa \nu}+\eta_{\kappa \nu} J_{\lambda \mu}-\eta_{\lambda \nu} J_{\kappa \mu}\right)\right)\)
distribute(_);
\(\displaystyle{}0\)
Copyright © 2001-2024 Kasper Peeters
Questions? info@cadabra.science