Recurrence extraction for functional programs through call-by-push-value

GA Kavvos, E Morehouse, DR Licata… - Proceedings of the ACM …, 2019 - dl.acm.org
The main way of analysing 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 …

Denotational recurrence extraction for amortized analysis

JW Cutler, DR Licata, N Danner - Proceedings of the ACM on …, 2020 - dl.acm.org
A typical way of analyzing the time complexity of functional programs is to extract a
recurrence expressing the running time of the program in terms of the size of its input, and …

A coinductive monad for prop-bounded recursion

A Megacz - Proceedings of the 2007 workshop on Programming …, 2007 - dl.acm.org
This paper develops machinery necessary to mechanically import arbitrary functional
programs into Coq's type theory, manually strengthen their specifications with additional …

Fold and unfold for program semantics

G Hutton - ACM SIGPLAN Notices, 1998 - dl.acm.org
In this paper we explain how recursion operators can be used to structure and reason about
program semantics within a functional language. In particular, we show how the recursion …

Type-based allocation analysis for co-recursion in lazy functional languages

P Vasconcelos, S Jost, M Florido… - … ESOP 2015, Held as Part of …, 2015 - Springer
This paper presents a novel type-and-effect analysis for predicting upper-bounds on
memory allocation costs for co-recursive definitions in a simple lazily-evaluated functional …

[图书][B] A denotational approach to measuring complexity in functional programs

K Van Stone - 2003 - reports-archive.adm.cs.cmu.edu
Functional languages are considered useful in part because their applicative structure
makes it easier to reason about the value returned by a program (its extensional behavior) …

Denotational cost semantics for functional languages with inductive types

N Danner, DR Licata, R Ramyaa - Proceedings of the 20th ACM …, 2015 - dl.acm.org
A central method for analyzing the asymptotic complexity of a functional program is to extract
and then solve a recurrence that expresses evaluation cost in terms of input size. The …

Factorising folds for faster functions

G Hutton, M Jaskelioff, A Gill - Journal of Functional Programming, 2010 - cambridge.org
The worker/wrapper transformation is a general technique for improving the performance of
recursive programs by changing their types. The previous formalisation (A. Gill & G. Hutton …

Complexity analysis by rewriting

M Avanzini, G Moser - International Symposium on Functional and Logic …, 2008 - Springer
In this paper we introduce a restrictive version of the multiset path order, called polynomial
path order. This recursive path order induces polynomial bounds on the maximal number of …

Lifetime analysis for procedure parameters

U Kastens, M Schmidt - European Symposium on Programming, 1986 - Springer
Procedural abstraction is an important concept for functional and imperative programming
as well. Compilers should implement procedures and calls as efficient as possible. This …