Projections for strictness analysis
Proc. of a conference on Functional programming languages and computer architecture
Why functional programming matters
The Computer Journal - Special issue on Lazy functional programming
Strictness analysis aids time analysis
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The semantics of lazy functional languages
Theoretical Computer Science
Complexity analysis for a lazy higher-order language
Proceedings of the third European symposium on programming on ESOP '90
A composition approach to time analysis of first order lazy functional programs
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Compilation of functional languages by program transformation
ACM Transactions on Programming Languages and Systems (TOPLAS)
The essence of functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A natural semantics for lazy evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Purely functional data structures
Purely functional data structures
The spineless tagless G-machine, naturally
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Improvement in a lazy context: an operational theory for call-by-need
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A model for comparing the space usage of lazy evaluators
Proceedings of the 2nd ACM SIGPLAN international conference on Principles and practice of declarative programming
Static prediction of heap space usage for first-order functional programs
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proving the Correctness of the STG Machine
IFL '02 Selected Papers from the 13th International Workshop on Implementation of Functional Languages
Formally deriving an STG machine
Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming
The call-by-need lambda calculus
Journal of Functional Programming
Deriving a lazy abstract machine
Journal of Functional Programming
The call-by-need lambda calculus
Journal of Functional Programming
Lightweight semiformal time complexity analysis for purely functional data structures
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parametric prediction of heap memory requirements
Proceedings of the 7th international symposium on Memory management
Analysing memory resource bounds for low-level programs
Proceedings of the 7th international symposium on Memory management
From natural semantics to c: A formal derivation of two stg machines
Journal of Functional Programming
Amortised Memory Analysis Using the Depth of Data Structures
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Live heap space analysis for languages with garbage collection
Proceedings of the 2009 international symposium on Memory management
"Carbon Credits" for Resource-Bounded Computations Using Amortised Analysis
FM '09 Proceedings of the 2nd World Congress on Formal Methods
Static determination of quantitative resource usage for higher-order programs
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Polynomial size analysis of first-order functions
TLCA'07 Proceedings of the 8th international conference on Typed lambda calculi and applications
Parametric inference of memory requirements for garbage collected languages
Proceedings of the 2010 international symposium on Memory management
Efficient type-checking for amortised heap-space analysis
CSL'09/EACSL'09 Proceedings of the 23rd CSL international conference and 18th EACSL Annual conference on Computer science logic
Multivariate amortized resource analysis
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Inferring cost equations for recursive, polymorphic and higher-order functional programs
IFL'03 Proceedings of the 15th international conference on Implementation of Functional Languages
Type-Based amortised heap-space analysis
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Ten years of amortized resource analysis
FOSSACS'13 Proceedings of the 16th international conference on Foundations of Software Science and Computation Structures
Hi-index | 0.00 |
This paper describes the first successful attempt, of which we are aware, to define an automatic, type-based static analysis of resource bounds for lazy functional programs. Our analysis uses the automatic amortisation approach developed by Hofmann and Jost, which was previously restricted to eager evaluation. In this paper, we extend this work to a lazy setting by capturing the costs of unevaluated expressions in type annotations and by amortising the payment of these costs using a notion of lazy potential. We present our analysis as a proof system for predicting heap allocations of a minimal functional language (including higher-order functions and recursive data types) and define a formal cost model based on Launchbury's natural semantics for lazy evaluation. We prove the soundness of our analysis with respect to the cost model. Our approach is illustrated by a number of representative and non-trivial examples that have been analysed using a prototype implementation of our analysis.