We define seal, an untyped call-by-value -calculus with primitives for protecting abstract data by sealing, and develop a bisimulation proof method that is sound and complete with respect to contextual equivalence. This provides a formal basis for reasont data abstraction in open, dynamic settings where static techniques such as type abstraction and logical relations are not applicable. Categories and Subject Descriptors D.3.3 [Programming Languages]: Language Constructs and Feabstract data types; D.3.1 [Programming Languages]: Formal Definitions and Theory; F.3 [Theory of Computation]: Logics and Meanings of Programs; E.3 [Data]: Data Encryption; C.2.2 [Computer-Communication Networks]: Network Protocols--protocol verification General Terms Theory, Languages, Security
Eijiro Sumii, Benjamin C. Pierce