Software abstractions Logic, language, and analysis - Jackson, Daniel (PHI learning, 2006)