Proof and Disproof in Formal Logic: An Introduction for Programmers by Richard Bornat | Menrva Books