Proving the correctness of reactive systems using sized types
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Recursion and dynamic data-structures in bounded space: towards embedded ML programming
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Java Virtual Machine Specification
Java Virtual Machine Specification
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
Heap space analysis for java bytecode
Proceedings of the 6th international symposium on Memory management
A type system for safe memory management and its proof of correctness
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
Automatic Inference of Upper Bounds for Recurrence Relations in Cost Analysis
SAS '08 Proceedings of the 15th international symposium on Static Analysis
Live heap space analysis for languages with garbage collection
Proceedings of the 2009 international symposium on Memory management
Formal Certification of a Resource-Aware Language Implementation
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
A Certified Implementation on Top of the Java Virtual Machine
FMICS '09 Proceedings of the 14th International Workshop on Formal Methods for Industrial Critical Systems
A simple region inference algorithm for a first-order functional language
WFLP'09 Proceedings of the 18th international conference on Functional and Constraint Logic Programming
Certification of safe polynomial memory bounds
FM'11 Proceedings of the 17th international conference on Formal methods
Size invariant and ranking function synthesis in a functional language
WFLP'11 Proceedings of the 20th international conference on Functional and constraint logic programming
Trends in Trends in Functional Programming 1999/2000 versus 2007/2008
Higher-Order and Symbolic Computation
Hi-index | 0.00 |
Safe is a first-order functional language with an implicit region-based memory system and explicit destruction of heap cells. Its static analysis for inferring regions, and a type system guaranteeing the absence of dangling pointers have been presented elsewhere. In this paper we present a new analysis aimed at inferring upper bounds for heap and stack consumption. It is based on abstract interpretation, being the abstract domain the set of all n-ary monotonic functions from real non-negative numbers to a real non-negative result. This domain turns out to be a complete lattice under the usual ⊆ relation on functions. Our interpretation is monotonic in this domain and the solution we seek is the least fixpoint of the interpretation. We first explain the abstract domain and some correctness properties of the interpretation rules with respect to the language semantics, then present the inference algorithms for recursive functions, and finally illustrate the approach with the upper bounds obtained by our implementation for some case studies.