Introduction to automata theory, languages, and computation (1979)

by J E Hopcroft, J D Ullman