a field-theory motivated approach to computer algebra

## CommutingAsProduct

Makes an object behave as a product when commuting.
This makes an object behave, for purposes of commutation rules, as a product. That is, when trying to move another object through it, the sign that is picked up is determined by moving the other object through all the non-index children.
A(#)::CommutingAsProduct; {Q,X,Y,Z}::AntiCommuting; ex:= A(Y)(Z)(Q)*A(X);
$$\displaystyle{}\text{Attached property CommutingAsProduct to }A(\#).$$
$$\displaystyle{}\text{Attached property AntiCommuting to }(Q, X, Y, Z).$$
$$\displaystyle{}A(Y Z Q) A(X)$$
sort_product(_);
$$\displaystyle{}-A(X) A(Y Z Q)$$
The minus sign arises because it would also have been present when sorting (Y*Z*Q)*X.