Welcome to Cadabra Q&A, where you can ask questions and receive answers from other members of the community.
+1 vote

I'm trying to do some computations involving bilinears of vector spinors \psi_a and it seems that using canonicalise eliminates terms which shouldn't be zero.

In particular this applies to terms like \psi^a \bar{\psi^b}, as showcased by the following minimal example:

# Setup properties needed
{a, b}::Indices.

\psi^a::SelfAntiCommuting.
{\psi^a, \rho, \chi}::Spinor(dimension=10).
{\psi^a, \rho, \chi}::AntiCommuting.

\bar{#}::DiracBar.

A{#}::AntiSymmetric.
# Non-zero canonicalisation
ex := A_{a b}  \bar{\psi^b} \rho \bar{\psi^a} \chi.
canonicalise(_);

returns -A_{a b} \bar{\psi^a} \rho \bar{\psi^b} \chi as expected, while

# Zero canonicalisation
ex := A_{a b} \bar{\rho} \psi^b\bar{\psi^a} \chi.
canonicalise(_);

returns 0, even though it should not be zero.

Stripping everything else away, also the following canonicalises to zero, even though it should not:

# Zero canonicalisation
ex := A_{a b} \psi^b\bar{\psi^a}.
canonicalise(_);

Did I forget something in the setup of my spinors, or is that a genuine error in canonicalise?

in Bug reports by (140 points)

1 Answer

+2 votes

Well spotted. Effectively, what went wrong here is that the canonicalise function would incorrectly treat \psi^a \bar{\psi^b} as having the spinor line contracted (so as if the Dirac bar would be sitting on the first factor). The niceties of implicit notation...

I have pushed a fix to github now. If you need an updated binary package let me know.

by (80.3k points)

Thank you very much for the quick answer and fix!

I've circumvented the error for now by reordering my terms, so I can wait until the next release (or build it myself).

...