A Logical Approach to Discrete Math by Fred B. Schneider & David Gries