• Corpus ID: 238857338

Selectively-Amortized Resource Bounding (Extended Version)

  title={Selectively-Amortized Resource Bounding (Extended Version)},
  author={Tianhan Lu and Bor-Yuh Evan Chang and Ashutosh Trivedi},
We consider the problem of automatically proving resource bounds. That is, we study how to prove that an integer-valued resource variable is bounded by a given program expression. Automatic resourcebound analysis has recently received significant attention because of a number of important applications (e.g., detecting performance bugs, preventing algorithmic-complexity attacks, identifying side-channel vulnerabilities), where the focus has often been on developing precise amortized reasoning… 

Figures and Tables from this paper

Selectively-Amortized Resource Bounding
It is observed that fully precise amortization is not always necessary to prove a bound of interest, and by amortizing selectively, the needed supporting invariants can be simpler, making the invariant inference task more feasible and predictable.


A simple and scalable static analysis for bound analysis and amortized complexity analysis
This work presents the first scalable bound analysis that achieves amortized complexity analysis, and first computes a lexicographic ranking function that proves the termination of a VASS, and then derives a bound from this ranking function.
Compositional certified resource bounds
A new approach for automatically deriving worst-case resource bounds for C programs by combining ideas from amortized analysis and abstract interpretation in a unified framework to address four challenges for state-of-the-art techniques: compositionality, user interaction, generation of proof certificates, and scalability.
Towards automatic resource bound analysis for OCaml
This article presents a resource analysis system for OCaml programs that automatically derives worst-case resource bounds for higher-order polymorphic programs with user-defined inductive types and preserves the expressivity and efficiency of existing AARA techniques.
Automated Resource Analysis with Coq Proof Objects
This paper introduces a method for resource-bound inference that is compositional, produces machine-checkable certificates of the resource bounds obtained, and features a sound mechanism for user interaction if the inference fails.
The reachability-bound problem
The approach to solving the reachability-bound problem brings together two different techniques for reasoning about loops in an effective manner, including an abstract-interpretation based iterative technique for computing precise disjunctive invariants and a non-iterative proof-rules based technique that takes over the role of doing inductive reasoning.
Multivariate amortized resource analysis
This article presents a novel multivariate amortized resource analysis based on a type system for a simple first-order functional language with lists and trees, proves soundness, and describes automatic type inference based on linear programming.
SPEED: precise and efficient static estimation of program computational complexity
An inter-procedural technique for computing symbolic bounds on the number of statements a procedure executes in terms of its scalar inputs and user-defined quantitative functions of input data-structures and an algorithm for automating this proof methodology is introduced.
Difference constraints: an adequate abstraction for complexity analysis of imperative programs
It is argued that the complexity of imperative programs typically arises from counter increments and resets, which can be modeled naturally by difference constraints, and the first practical algorithm for the analysis of difference constraint programs is presented.
Control-flow refinement and progress invariants for bound analysis
This paper describes two techniques, control-flow refinement and progress invariants, that together enable estimation of precise bounds for procedures with nested and multi-path loops, and presents an algorithm that uses progress invariant to compute precise limits for nested loops.
Type-directed Bounding of Collections in Reactive Programs
A scalable type-based technique that checks that each collection variable has a given refinement type that specifies constraints about its length, and can refer to AST counters that track how many times an AST node has been executed.