Introduction to automata theory, languages, and computation - Hopcroft, John E (Addison Wesley, 2001)