Logic in Computer Science by Mark Ryan & Michael Huth