Introduction to automata theory, languages and computation - John E Hopcroft (Pearson Education, 2008)