Computability, Complexity, and Languages by Martin Davis, Elaine J. Weyuker & Ron Sigal