commutative monoid definition