Towards Cumulative Abstract Semantics via Handlers
Cade Lueker, Andrew Fox, Bor-Yuh Evan Chang
TL;DR
The paper addresses the rigidity of traditional abstract interpretation frameworks by proposing cumulative abstract semantics implemented with scoped effect handlers. It separates syntax elimination from domain introduction, enabling multiple semantic interpretations from a single interpreter. Introduction and elimination handlers define how domains are introduced and how control-flow is manipulated, demonstrated with an interval domain. This modular approach aims to simplify extending analyses and supporting both single-path and multi-path control flow, paving the way for a flexible framework for modular static analyses.
Abstract
We consider the problem of modularizing control flow in a generic abstract interpretation framework. A generic abstract interpretation framework is not truly flexible if it does not allow interpreting with different path- and flow-sensitivities, by going forwards or backwards, and over- or under-approximately. Most interpreters inherently intertwine syntax and semantics, making the implementation antagonistic to modularity. Current approaches to modular designs require the use of complex data structures (e.g., monad transformers), providing modularity but often proving unwieldy (e.g., lifts). We observe that leveraging scoped effects within an interpreter facilitates the accumulation of semantic fragments against a fixed syntax. In this paper, we define cumulative abstract semantics, illustrating the potential for creating multiple dynamic evaluators and static analyses from one interpreter. This modularity is achieved by grouping effects into two categories: syntax elimination and domain-semantic introduction handlers. Our contribution shows the benefits of using effects as an instrument for designing a clean, elegant, and modular abstract interpretation framework.
