Introduction to discrete mathematics via logic and proof. (2019)