adding semigroups article