Recurrence Extraction for Functional Programs through Call-by-Push-Value (Extended Version)
G. A. Kavvos, Edward Morehouse, Daniel R. Licata, Norman, Danner

TL;DR
This paper presents a method to automatically extract recurrence relations from higher-order recursive functional programs using Call-by-Push-Value, enabling precise complexity analysis across different evaluation strategies.
Contribution
It introduces a uniform approach employing CBPV as an intermediate language to extract and analyze recurrences for functional programs with domain-theoretic cost semantics.
Findings
Successfully extracts recurrences from higher-order recursive programs
Applies to both call-by-name and call-by-value strategies
Provides a denotational cost semantics for the recurrences
Abstract
The main way of analyzing the complexity of a program is that of extracting and solving a recurrence that expresses its running time in terms of the size of its input. We develop a method that automatically extracts such recurrences from the syntax of higher-order recursive functional programs. The resulting recurrences, which are programs in a call-by-name language with recursion, explicitly compute the running time in terms of the size of the input. In order to achieve this in a uniform way that covers both call-by-name and call-by-value evaluation strategies, we use Call-by-Push-Value (CBPV) as an intermediate language. Finally, we use domain theory to develop a denotational cost semantics for the resulting recurrences.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
