Introduction to Automata theory, languages, and computation. - Hopcroft, John E. (Addison Wesley, 2007)