Formal languages and automata theory Theory of computing mathematics