# 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`

.