Cadabra
a field-theory motivated approach to computer algebra

sort_product

Sort factors in a product
Sort factors in a product, taking into account any SortOrder properties. Also takes into account commutativity properties, such as SelfCommuting. If no sort order is given, it first does a lexographical sort based on the name of the factor, and if two names are identical, does a sort based on the number of children and (if this number is equal) a lexographical comparison of the names of the children. Symbols starting with a backslash (greek letters etc.) get sorted to the right of roman letters. The simplest sort is illustrated below,
ex := C B A D; sort_product(_);
\(\displaystyle{}C B A D\)
\(\displaystyle{}A B C D\)
We can declare the objects to be anti-commuting, which then leads to
{A, B, C, D}::AntiCommuting. ex := C B A D; sort_product(_);
\(\displaystyle{}C B A D\)
\(\displaystyle{}-A B C D\)
For indexed objects, the anti-commutativity of components is indicated using the SelfAntiCommuting property,
\psi_{m}::SelfAntiCommuting. ex := \psi_{n} \psi_{m} \psi_{p}; sort_product(_);
\(\displaystyle{}\psi_{n} \psi_{m} \psi_{p}\)
\(\displaystyle{}-\psi_{m} \psi_{n} \psi_{p}\)
Finally, the lexographical sort order can be overridden by using the SortOrder property,
{D, C, B, A}::SortOrder. {A, B, C, D}::AntiCommuting. ex := C B A D; sort_product(_);
\(\displaystyle{}C B A D\)
\(\displaystyle{}-D C B A\)
Copyright © 2001-2024 Kasper Peeters
Questions? info@cadabra.science