Automated Computational Complexity Analysis

Other Titles


Program synthesis is the machine-assisted construction of provably correct programs from formal high-level specifications. Automated synthesis tools appeared soon after the introduction of theorem provers in the 1960s and, owing to a revived interest in the field during the 1990s, have now matured to a state in which they are routinely used in projects outside of research laboratories. Despite this success, however, program synthesis remains challenged by broadening demands for program quality, as for the next generation of synthesis tools the main focus shifts from program correctness to program efficiency. This thesis introduces our approach to automated computational complexity analysis and certification of higher-order functional programs as a means to resource-conscious program synthesis. First, we develop a general framework for expressing higher-order computational complexity of functional programs. Our compositional calculus is based on complexity annotations of an open-ended operational semantics and defines the complexity of a function as the cost of reducing the function term applied to a symbolic argument. Higher-type arguments are assigned a canonical computational skeleton whose decomposition exposes their internal structure. Second, we present algorithms that automatically generate and solve parameterized higher-type recurrence equations expressing the complexity of recursive functions. The recurrence generator uses symbolic evaluation to derive equations for primitive and general recursive terms. The recurrence solver reduces these equations to systems of unparameterized first-order recurrence equations that can be solved by conventional methods. A collection of simplification heuristics eliminates intractable functions by approximation. Third, we formalize our calculus and automate the construction of formal proofs that assert the correctness of the symbolic evaluation result. Proofs use a basic term reflection mechanism to reason intensionally about term evaluation at the meta-level. The Automated Complexity Analysis System implementation demonstrates the viability of our approach. The system uses the Nuprl proof development system and the Mathematica computer algebra system to compute the time complexity of Nuprl proof extracts. It has been able to identify automatically infeasible synthesized code whose manual discovery had taken many days previously.

Journal / Series

Volume & Issue



Date Issued



Cornell University


computer science; technical report


Effective Date

Expiration Date




Union Local


Number of Workers

Committee Chair

Committee Co-Chair

Committee Member

Degree Discipline

Degree Name

Degree Level

Related Version

Related DOI

Related To

Related Part

Based on Related Item

Has Other Format(s)

Part of Related Item

Related To

Related Publication(s)

Link(s) to Related Publication(s)


Link(s) to Reference(s)

Previously Published As

Government Document




Other Identifiers


Rights URI


technical report

Accessibility Feature

Accessibility Hazard

Accessibility Summary

Link(s) to Catalog Record