Describir: Semigroups, algorithms, automata, and languages :