# eliminate_vielbein and the KroneckerDelta

Thank you Kasper. I've build the github version 2.2.7, and soo that you improve my rusty version of the notebooks. Great work!

I'd like to mention that I try the following code:

{M,N,P,Q,J,K,L}::Indices(full, position=independent).
{\mu,\nu,\rho,\sigma,\gamma,\lambda}::Indices(sub,position=independent, parent=full).
e^{M}_{\mu}::Vielbein;
E^{\mu}_{M}::InverseVielbein;
\delta^{\mu?}_{\nu?}::KroneckerDelta;
\delta_{\mu?}^{\nu?}::KroneckerDelta;
ex := e^{M}_{\mu} E^{\nu}_{M};
eliminate_vielbein(ex);


The result is E^{\nu}_{\mu}, which is correct of course, but I expected that after defining the InverseVielbein the result would be a KroneckerDelta.

Question: Do you think it is possible to change that behaviour?

I know that it is possible that my expectations make not a lot of sense from the coding view point... since it's possible that the user had not defined the KronerckerDelta, or the fact that the delta has to be defined in both spaces, and so on.

BTW,

Bonus question: Instead of defining several KroneckerDelta, Would be possible to define a single \delta{#}::KroneckerDelta; that works on whatever indices type and position?

+1 vote

The bonus question is already possible, just

\delta{#}::KroneckerDelta;


works.

The other one is more tricky. I usually do

E^{\mu}_{\nu}::KroneckerDelta;
E^{\mu}_{\nu}::LaTeXForm("\delta").


to get the display correct. In order to auto-convert to an actual \delta object, not just something that prints as $\delta$, eliminate_vielbein would need to know that you want to use the \delta^{\mu}_{\nu} as the Kronecker delta for the $\mu, \nu$ indices. That's possible (there is a way for algorithms to look up such properties) but I haven't implemented that yet. Have opened an issue on github to track this ( https://github.com/kpeeters/cadabra2/issues/153 ).