Logic: The Art of Defining and Reasoning (2nd Edition)