+1 vote

I wonder where I could find the complete description of Cadabra's data structure, this and this are a little simple, I need more details. More examples about how to program in Cadabra is also OK.

edited

I just found out what's going on here. Please wait for one more patch to be accepted.

Connor's latest patch has now been merged (and verified to handle this problem).

There still seems to be some bugs. For example,

{\mu,\nu}::Indices(vector).
tr{#}::Trace.
{a^{\mu},b^{\mu}}::NonCommuting.
{a^{\mu},b^{\mu}}::SelfNonCommuting.
ex:=tr{a^{\mu} b^{\mu} b^{\nu} a^{\nu}}+tr{a^{\mu} a^{\nu} b^{\nu} b^{\mu} };
sort_product(_);
rename_dummies(_);


Version 2.2.7 (build 2275.333ca654f6 dated 2019-12-03)

Ok, but you can see why that happens right? Alphabetically, a^{\mu} comes before a^{\nu} so it would be "wrong" for it to put the "a"s together in the first trace.

Currently what I'm thinking is that we should set a^{\mu} < a^{\nu} if both indices are free and a^{\mu} = a^{\nu} if both indices are dummies. If only one index is a dummy, the free one comes first. Would this have any unintended consequences?

I don't know. Maybe you should first consider order of a&b, then consider order of indices.