Software Abstractions, revised edition (Logic, Language, and Analysis)