Mathematical structures for computer science. Discrete mathematics and its applications. (W. H. Freeman and Company, 2014)