I have three examples
(I) Combine automatically assumes object commuting.
ex:=(A^a)^\alpha (B^b)_{\alpha};
combine(ex);
gives, (B^b A^a). How did it know they are commuting?
(II) If I explicitly tell A^a and B^b AntiCommute then i.e.
{A^a,B^b}::AntiCommuting;
ex:=(A^a)^\alpha (B^b)_{\alpha};
combine(ex);
Gives (-B^b A^a). This is technically correct, but, would prefer it still gives (A^a B^b).
(III) This one is perhaps even more serious?
{A^a,B^b}::NonCommuting;
ex:=(A^a)^\alpha (B^b)_{\alpha};
combine(ex);
still gives, (B^b A^a). It fails to understand that I told A^a and B^b should not be commuted.
I think all of the problems will go away once it just gives (A^a B^b) as the answer in all the cases. Please have a look. Thanks