Introduction to the theory of computation - Sipser, Michael (Thomson, Boston, 1997)