matrix semigroups