Hello! I'm new to Cadabra and recently I've noticed a strange behaviour of the function eliminate_metric.
Here is a simple code demonstrating this:
{\mu,\nu,\rho,\sigma,\kappa,\lambda,\alpha,\beta}::Indices(curved,position=free);
{\mu,\nu,\rho,\sigma,\kappa,\lambda,\alpha,\beta}::Integer(0..d-1);
g_{\mu\nu}::Metric;
g^{\mu\nu}::InverseMetric;
g_{\mu? \nu?}::Symmetric;
g^{\mu? \nu?}::Symmetric;
g^{\mu?}_{\nu?}::KroneckerDelta;
g_{\mu?}^{\nu?}::KroneckerDelta;
\Gamma_{#{\mu}}::GammaMatrix(metric=g);
ex := \Gamma^{\mu}\Gamma_{\mu} a+a;
join_gamma(ex);
distribute(ex);
eliminate_metric(ex);
What this code supposed to do is to perform simple gamma matrix calculations, paying no attention to a random variable "a". As a result, there should be a term "d * a". But, instead, I yield this
The function eliminatemetric somehow dropped away g{\mu}^{\mu}.
Is it just my bad code or a real bug? I understand that the fix is to insert eliminate_kronecker, but I can't be sure that such a problem won't appear in another unexpected place.