# possible issue with "combine" algorithm?

Consider the example

{\alpha,\beta}::Indices(position=fixed);
\gamma{#}::Matrix;
\lambda::ImplicitIndex;

ex:=\lambda^{\alpha} (\gamma^{m})_{\alpha \beta};
combine(ex);

and I find (\gamma_{m}\lambda)_{\beta}. At least it should point out an error or not do the combining. But, its giving a wrong answer. Can you see why? Thanks.

How was Cadabra supposed to know that this is not what you intended?

by (66.3k points)

I would expect the answer to be (\lambda \gamma^{m}){\beta}. But, Cadabra gives (\gamma^{m} \lambda){\beta}. I think (maybe I am wrong) Cadabra is doing

\lambda^{\alpha} (\gamma^{m}){\alpha \beta} -> (\gamma^{m}){\alpha \beta} \lambda^{\alpha} -> (\gamma^{m}){\beta\alpha} \lambda^{\alpha} -> (\gamma \lambda){\beta}.

At the second last step it exchanged the \alpha, \beta indices without worrying about the exchange property of the spinorial index (for example if I chose a basis in which the gamma matrice are anti-symmetric, I would expect a negative sign in the final answer).

Even if Cadabra2 is not following the above sequence of steps, the output is certainly not correct.

Also, just for fun I entered the same code in Cadabra1

{\alpha,\beta}::Indices(position=fixed); \gamma{#}::Matrix; \lambda::ImplicitIndex;

ex:=\lambda^{\alpha} (\gamma^{m})_{\alpha \beta}; @combine(ex);

I get the output I mentioned (\lambda \gamma^{m})_{\beta}, which I think is the correct answer. Do let me know what's happening in Cadabra2. Thanks

Sorry, I didn't ready your question carefully, didn't spot that \lambda was in the wrong place. Let me have a look.