Logical Reasoning by Rob Nederpelt & Fairouz Kamareddine