Abstract

AbstractThis article gives an overview of automatic amortized resource analysis (AARA), a technique for inferring symbolic resource bounds for programs at compile time. AARA has been introduced by Hofmann and Jost in 2003 as a type system for deriving linear worst-case bounds on the heap-space consumption of first-order functional programs with eager evaluation strategy. Since then AARA has been the subject of dozens of research articles, which extended the analysis to different resource metrics, other evaluation strategies, non-linear bounds, and additional language features. All these works preserved the defining characteristics of the original paper: local inference rules, which reduce bound inference to numeric (usually linear) optimization; a soundness proof with respect to an operational cost semantics; and the support of amortized analysis with the potential method.

Highlights

  • This article provides a survey of several works in the research area known as automatic amortized resource analysis (AARA)

  • The analysis is proven sound with respect to a precise definition of resource consumption that is given by a cost semantics that associates closed programs with an evaluation cost

  • AARA originated in the research area of implicit computation complexity (ICC)

Read more

Summary

Introduction

This article provides a survey of several works in the research area known as automatic amortized resource analysis (AARA). AARA is a technique for automatically or semi-automatically deriving symbolic bounds on the resource consumption of programs at compile time. AARA has initially been developed by Hofmann and Jost (2003) in 2003 to derive linear upper bounds on the heap-space usage of first-order functional programs with an eager evaluation strategy. The analysis is proven sound with respect to a precise definition of resource consumption that is given by a cost semantics that associates closed programs with an evaluation cost. In this survey, we aim to focus on the high-level ideas of AARA.

Setting the Stage
Outline of the type system
Program example
Accounting for different resources
Soundness
Manual amortized analysis
Higher-Order and Other Extensions
Non-Linear Potential Functions
Univariate polynomial potential
Multivariate polynomial potential
Beyond polynomial potential
Lazy Evaluation and Co-Recursion
Imperative Programs
Object-oriented programs
Parallel Evaluation and Concurrency
Probabilistic Programming
Findings
11. Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call