Modular Analysis via Abstract Reduction Semantics.
Sam Tobin-Hochstadt and David Van Horn.
Preprint, 2011.

PDF ]

Modular static analysis requires treating some portion of the program opaquely. To enable such analysis, we introduce a notion of abstract reduction semantics. Opaque components are approximated by their specifications, which in turn are treated as abstract values during reduction. We demonstrate the technique by applying it to two kinds of specifications for higher-order languages: types and first-class contracts, showing that each soundly approximates opaque components. Finally, we derive modular static analyzers from these semantics, soundly predicting evaluation, contract violations, and blame assignment.