"Q: Why bother doing proofs about programming languages? They are almost always boring if the definitions are right. A: The definitions are almost always wrong."
"n one end of the spec- trum are powerful frameworks such as Hoare logic, algebraic specification languages, modal logics, and denotational semantics. These can be used to express very general correctness properties but are often cumbersome to use and demand a good deal of sophistication on the part "
"At the other end are techniques of much more modest power—modest enough that automatic checkers can be built into compilers, linkers, or program analyzers"
"The more abstract focuses on connections between various “pure typed lambda-calculi” and varieties of logic, via the Curry-Howard correspondence"
"they can categorically prove the absence of some bad program behaviors, but they cannot prove their presence,"
"type systems are also used to enforce higher-level modularity properties and to protect the in- tegrity of user-defined abstractions."
"Chains can be either finite or infinite, but we are more interested in infinite ones, as in the next definition"
"The mathemati- cal foundations of inductive reasoning will be considered in more detail in Chapter 21, where we will see that all these specific induction principles are instances of a single deeper idea."