A new recursion-theoretic characterization of the polytime functions
Computational Complexity
Region-based memory management
Information and Computation
Computability and complexity: from a programming perspective
Computability and complexity: from a programming perspective
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
From system F to typed assembly language
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The strength of non-size increasing computation
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A unified approach to global program optimization
POPL '73 Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Java Virtual Machine Specification
Java Virtual Machine Specification
Synthesis of max-plus quasi-interpretations
Fundamenta Informaticae - Typed Lambda Calculi and Applications 2003, Selected Papers
Max-plus quasi-interpretations
TLCA'03 Proceedings of the 6th international conference on Typed lambda calculi and applications
Quasi-interpretation synthesis by decomposition an application to higher-order programs
ICTAC'07 Proceedings of the 4th international conference on Theoretical aspects of computing
A characterization of alternating log time by first order functional programs
LPAR'06 Proceedings of the 13th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Hi-index | 0.00 |
We define a method to statically bound the size of values computed during the execution of a program as a function of the size of its parameters. More precisely, we consider bytecode programs that should be executed on a simple stack machine with support for algebraic data types, pattern-matching and tail-recursion. Our size verification method is expressed as a static analysis, performed at the level of the bytecode, that relies on machine-checkable certificates. We follow here the usual assumption that code and certificates may be forged and should be checked before execution. Our approach extends a system of static analyses based on the notion of quasi-interpretations that has already been used to enforce resource bounds on first-order functional programs. This paper makes two additional contributions. First, we are able to check optimized programs, containing instructions for unconditional jumps and tail-recursive calls, and remove restrictions on the structure of the bytecode that was imposed in previous works. Second, we propose a direct algorithm that depends only on solving a set of arithmetical constraints.