Discrete Mathematics with Proof