commutative semigroup