Logic for Computer Science: Foundations of Automatic Theorem Proving