Search papers, labs, and topics across Lattice.
This paper introduces operator semantics as a novel semantic representation that bridges syntax and classical denotational semantics, allowing for a more nuanced understanding of programs as operators. By developing higher-order abstract domains and a categorical framework, the authors create sound and modular abstract compilers tailored for recurrence-based static cost analysis. The key result is the establishment of optimal recurrence extraction techniques that accommodate general function unknowns and a wide array of size metrics, significantly enhancing the precision of cost analysis for recursive programs.
Abstract compilation can now achieve optimal recurrence extraction for recursive programs, unlocking new avenues for precise cost analysis.
Least fixpoints are fundamental to program semantics, but they abstract away the recursive structure that generated them. We introduce operator semantics: a semantic intermediate representation between syntax and classical denotational semantics, which treats programs as operators. Abstract compilation is then understood as the act of abstracting such operators. We develop higher-order abstract domains for functions, operators, and programs themselves, in which composition is the key novel primitive, together with a categorical framework for constructing sound, precise, and modular abstract compilers. We instantiate this framework in the context of recurrence-based static cost analysis, developing solver-independent, optimal recurrence extraction techniques for recursive programs over algebraic data types, that support general function unknowns and catamorphic metrics, a broad class of size metrics beyond traditional approaches.