Software Abstractions: Logic, Language, and Analysis (The MIT Press)