In my experience students often struggle to understand Predicate Logic: they drown in the complicated notation; they do not understand the difference between syntax and semantics, proof and truth; they do not appreciate the importance of logic within mathematics and formal methods in general. This book was written specifically to address these issues, at the same time presenting a full and rigorous treatment of the subject requiring only basic mathematics.
The presentation is based on a course for final year undergraduate students of mathematics, computer science and philosophy supplemented with additional material for masters students. Numerous problems, together with detailed solutions, are provided to consolidate the students' understanding.