Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Hauptvortrag: Quantifier elimination for real closed fields by cylindrical algebraic decomposition
Proceedings of the 2nd GI Conference on Automata Theory and Formal Languages
Practical Methods for Proving Program Termination
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
Hoare Logics for Recursive Procedures and Unbounded Nondeterminism
CSL '02 Proceedings of the 16th International Workshop and 11th Annual Conference of the EACSL on Computer Science Logic
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
Mechanically Proving Termination Using Polynomial Interpretations
Journal of Automated Reasoning
Theoretical Computer Science
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
A SAT-based approach to size change termination with global ranking functions
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
Multi-dimensional rankings, program termination, and complexity bounds of flowchart programs
SAS'10 Proceedings of the 17th international conference on Static analysis
A space consumption analysis by abstract interpretation
FOPARA'09 Proceedings of the First international conference on Foundational and practical aspects of resource analysis
Certified memory usage analysis
FM'05 Proceedings of the 2005 international conference on Formal Methods
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
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Verified resource guarantees for heap manipulating programs
FASE'12 Proceedings of the 15th international conference on Fundamental Approaches to Software Engineering
Hi-index | 0.00 |
In previous works, we have developed several algorithms for inferring upper bounds to heap and stack consumption for a simple functional language called Safe. The bounds inferred for a particular recursive function with n arguments takes the form of symbolic n-ary functions from (R+)n to R+ relating the input argument sizes to the number of cells or words respectively consumed in the heap and in the stack. Most frequently, these functions are multivariate polynomials of any degree, although exponential and other functions can be inferred in some cases. Certifying memory bounds is important because the analyses could be unsound, or have been wrongly implemented. But the certifying process should not be necessarily tied to the method used to infer those bounds. Although the motivation for the work presented here is certifying the bounds inferred by our compiler, we have developed a certifying method which could equally be applied to bounds computed by hand. The certification process is divided into two parts: (a) an off-line part consisting of proving the soundness of a set of proof rules. This part is independent of the program being certified, and its correctness is established once forever by using the proof assistant Isabelle/HOL; and (b) a compile-time program-specific part in which the proof rules are applied to a particular program and their premises proved correct. The key idea for the first part is proving an Isabelle/HOL theorem for each syntactic construction of the language, relating the symbolic information asserted by the proof-rule to the dynamic properties about the heap and stack consumption satisfied at runtime. For the second part, we use a mathematical tool for proving instances of Tarski's decision problem on quantified formulas in real closed fields.