Abstract
User-defined effects and effect handlers are advertised and advocated as a relatively easy-to-understand and modular approach to delimited control. They offer the ability of suspending and resuming a computation and allow information to be transmitted both ways between the computation, which requests a certain service, and the handler, which provides this service. Yet, a key question remains, to this day, largely unanswered: how does one modularly specify and verify programs in the presence of both user-defined effect handlers and primitive effects, such as heap-allocated mutable state? We answer this question by presenting a Separation Logic with built-in support for effect handlers, both shallow and deep. The specification of a program fragment includes a protocol that describes the effects that the program may perform as well as the replies that it can expect to receive. The logic allows local reasoning via a frame rule and a bind rule. It is based on Iris and inherits all of its advanced features, including support for higher-order functions, user-defined ghost state, and invariants. We illustrate its power via several case studies, including (1) a generic formulation of control inversion, which turns a producer that ``pushes'' elements towards a consumer into a producer from which one can ``pull'' elements on demand, and (2) a simple system for cooperative concurrency, where several threads execute concurrently, can spawn new threads, and communicate via promises.
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Reference38 articles.
1. Programming with algebraic effects and handlers
2. Andrej Bauer and Matija Pretnar. 2020. Ef. http://www.ef-lang.org/ Andrej Bauer and Matija Pretnar. 2020. Ef. http://www.ef-lang.org/
Cited by
7 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. The Logical Essence of Well-Bracketed Control Flow;Proceedings of the ACM on Programming Languages;2024-01-05
2. Modular Denotational Semantics for Effects with Guarded Interaction Trees;Proceedings of the ACM on Programming Languages;2024-01-05
3. Melocoton: A Program Logic for Verified Interoperability Between OCaml and C;Proceedings of the ACM on Programming Languages;2023-10-16
4. A Type System for Effect Handlers and Dynamic Labels;Programming Languages and Systems;2023
5. A typed continuation-passing translation for lexical effect handlers;Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation;2022-06-09