eCommons

 

Automated Computational Complexity Analysis

Other Titles

Abstract

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

Description

Sponsorship

Date Issued

2002-10-23

Publisher

Cornell University

Keywords

computer science; technical report

Location

Effective Date

Expiration Date

Sector

Employer

Union

Union Local

NAICS

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)

References

Link(s) to Reference(s)

Previously Published As

http://techreports.library.cornell.edu:8081/Dienst/UI/1.0/Display/cul.cs/TR2002-1880

Government Document

ISBN

ISMN

ISSN

Other Identifiers

Rights

Rights URI

Types

technical report

Accessibility Feature

Accessibility Hazard

Accessibility Summary

Link(s) to Catalog Record