Logic for Computer Science (Foundations of Automatic Theorem Proving, Second Edition)