Skip to main content
3 of 6
added 77 characters in body
Szabolcs
  • 236.5k
  • 31
  • 641
  • 1.3k

Non Commutative sorting in Mathematica

I have been trying to do some oscillator algebra in Mathematica and having troubles with sorting and simplifying expressions. I am using the NCAlgebra package which helps to improve the properties of NonCommutativeMultiply in Mathematica. However I have to create a huge list of rules to replace terms using the algebra. This quickly becomes impractical since I get these enormous expressions and I have to sift through the terms to see what simplifies and add more rules.

I have been wondering if there is a way to write a sorting function that would take an elementary expression and change it to a list and then permute the elements of list to sort the expression. I am fairly new to Mathematica but I would eventually like to write a small package which would allow me to these kind of manipulations.

For example, I have terms like a**b**c**a(dagger) where a, b, c, etc. commute with each other but a**a(dagger)-a**a(dagger) =1. So I would like to sort things such that all dagger operators are to the left and have Mathematica use the fact that a, b, c commute to rewrite the expressions. Right now I am assigning rules for every type of term that appears in my calculation but the number of terms has become unmanageable.

Karan
  • 515
  • 3
  • 12