semigroup demo