Mathematical Structures For Computer Sci by Judith L Gersting