Publications

Published papers, technical reports, and talks online.

Authors

Arthur Oliveira Vale
Paul-Andre Mellies
Zhong Shao
Jérémie Koenig
Leo Stefanesco

Abstract

Large-scale software verification relies critically on the use of compositional languages, semantic models, specifications, and verification techniques. Recent work on certified abstraction layers synthesizes game semantics, the refinement calculus, and algebraic effects to enable the composition of heterogeneous components into larger certified systems. However, in existing models of certified abstraction layers, compositionality is restricted by the lack of encapsulation of state.

In this paper, we present a novel game model for certified abstraction layers where the semantics of layer interfaces and implementations are defined solely based on their observable behaviors. Our key idea is to leverage Reddy's pioneer work on modeling the semantics of imperative languages not as functions on global states but as objects with their observable behaviors. We show that a layer interface can be modeled as an object type (i.e., a layer signature) plus an object strategy. A layer implementation is then essentially a regular map, in the sense of Reddy, from an object with the underlay signature to that with the overlay signature. A layer implementation is certified when its composition with the underlay object strategy implements the overlay object strategy. We also describe an extension that allows for non-determinism in layer interfaces.

After formulating layer implementations as regular maps between object spaces, we move to concurrency and design a notion of concurrent object space, where sequential traces may be identified modulo permutation of independent operations. We show how to express protected shared object concurrency, and a ticket lock implementation, in a simple model based on regular maps between concurrent object spaces.

Published

In Proc. 49th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'22), Philadelphia, PA, January 2022. Published as Proceedings of the ACM on Programming Languages (PACMPL), Volume 6, Number POPL, Article 42 (January 2022), 32 pages.
  • Conference Paper [PDF]
  • POPL22 Talk Slides [PDF]
  • Extended Technical Report [PDF]