Theory of computer science : automata, languages and computation (PHI, 2010)