Introduction to Automata Theory, Languages, and Computation by Jeffrey D. Ullman | Menrva Books