Software abstractions : logic, language and analysis - Jackson, Daniel, 1963- (MIT Press, 2012)