(*                         Ren-Cang Li, June 1, 1996
                           na.rcli@na-net.ornl.gov    *)

(* Definitions *)
Mm[x_,y_+z_]:=Mm[x,y]+Mm[x,z]; Mm[x_+y_,z_]:=Mm[x,z]+Mm[y,z];
Mm[a___,x_ X, b___]:=x Mm[a,Y,b];
Mm[a___,x_ Y, b___]:=x Mm[a,X,b];
Mm[a___,x_ y_Mm, b___]:=x Mm[a,y,b];
Mm[a___,n_?NumberQ x_, b___]:=n Mm[a,x,b];

SetAttributes[Mm, Flat];
Cmt[x_,y_]:=Mm[x,y]-Mm[y,x];

(* Think commutators as vectors over a basis spanned by Mm[..., {X,Y}, ...] *)
