Logo image
A Relational Separation Logic for Effect Handlers
Conference proceeding   Open access

A Relational Separation Logic for Effect Handlers

Paulo Emilio De Vilhena, Simcha van Collem, Ines Wright and Robbert Krebbers
Proceedings of ACM on programming languages, Vol.10(POPL), pp.981-1009
ACM SIGPLAN Symposium on Principles of Programming Languages, 53rd (Rennes, France, 11/06/2026–17/06/2026)
08/01/2026

Abstract

Concurrency Control primitives Separation logic Theory of computation
Effect handlers offer a powerful and relatively simple mechanism for controlling a program’s flow of execution. Since their introduction, an impressive array of verification tools for effect handlers has been developed. However, to this day, no framework can express and prove relational properties about programs that use effect handlers in languages such as OCaml and Links, where programming features like mutable state and concurrency are readily available. To this end, we introduce blaze, the first relational separation logic for effect handlers. We build blaze on top of the Iris framework for concurrent separation logic in Rocq, thereby enjoying the rigour of a mechanised theory and all the reasoning properties of a modern fully-fledged concurrent separation logic, such as modular reasoning about stateful concurrent programs and the ability to introduce user-defined ghost state. In addition to familiar reasoning rules, such as the bind rule and the frame rule, blaze offers rules to reason modularly about programs that perform and handle effects. Significantly, when verifying that two programs are related, blaze does not require that effects and handlers from one program be in correspondence with effects and handlers from the other. To assess this flexibility, we conduct a number of case studies: most noticeably, we show how different implementations of an asynchronous-programming library using effects are related to truly concurrent implementations. As side contributions, we introduce two new, simple, and general reasoning rules for concurrent relational separation logic that are independent of effects: a logical-fork rule that allows one to reason about an arbitrary program phrase as if it had been spawned as a thread and a thread-swap rule that allows one to reason about how threads are scheduled.
url
https://doi.org/10.1145/3776676View
Published (Version of record)

Metrics

1 Record Views

Details

Logo image

Usage Policy