semigroup homomorphisms