Introduction to automata theory, languages and computation - John E Hopcroft (Current books, 2008)