Algebraic Theory of Automata & Languages