Necessity Specifications for Robustness

ACM Object-Oriented Programming, Systems, Languages & Applications (OOPSLA)

Abstract

Robust modules guarantee to do only what they are supposed to do – even in the presence of untrusted, malicious clients, and considering not just the direct behavior of individual methods, but also the emergent behavior from calls to more than one method. Necessity is a language for specifying robustness, based on novel necessity operators capturing temporal implication, and a proof logic that derives explicit robustness specifications from functional specifications. Soundness and an exemplar proof are mechanized in Coq.

Featured Publications