Cost recurrences for DML programs

A cost recurrence describes an upper bound for the running time of a program in terms of the size of its input. Finding cost recurrences is a frequent intermediate step in complexity analysis, and this step requires an abstraction from data to data size. In this article, we use information contained in dependent types to achieve such an abstraction: Dependent ML (DML), a conservative extension of ML, provides dependent types that can be used to associate data with size information, thus describing a possible abstraction. We automatically extract cost recurrences from first-order DML programs, guiding the abstraction from data to data size with information contained in DML type derivations.

[1]  Lennart Augustsson,et al.  Cayenne—a language with dependent types , 1998, ICFP '98.

[2]  Yanhong A. Liu,et al.  Automatic Accurate Time-Bound Analysis for High-Level Languages , 1998, LCTES.

[3]  Daniel Le Métayer,et al.  ACE: an automatic complexity evaluator , 1988, TOPL.

[4]  Hongwei Xi,et al.  Dependently Typed Data Structures , 2000 .

[5]  Zoltán Ésik,et al.  The Equational Theory of Fixed Points with Applications to Generalized Language Theory , 2001, Developments in Language Theory.

[6]  Karl Crary,et al.  Resource bound certification , 2000, POPL '00.

[7]  Jirí Srba,et al.  On the Power of Labels in Transition Systems , 2001, CONCUR.

[8]  Mads Rosendahl,et al.  Automatic complexity analysis , 1989, FPCA.

[9]  Philip Wadler,et al.  The essence of functional programming , 1992, POPL '92.

[10]  Eugenio Moggi,et al.  Computational lambda-calculus and monads , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[11]  Bernd Grobauer Cost Recurrences for DML Programs , 2001 .

[12]  Frank Pfenning,et al.  Dependent types in practical programming , 1999, POPL '99.

[13]  David Sands,et al.  Calculi for time analysis of functional programs , 1990 .

[14]  Hongwei Xi,et al.  Dependent Types for Program Termination Verification , 2001, Proceedings 16th Annual IEEE Symposium on Logic in Computer Science.

[15]  Andrzej Filinski,et al.  Representing monads , 1994, POPL '94.

[16]  Frank D. Valencia,et al.  A Temporal Concurrent Constraint Programming Calculus , 2001, CP.

[17]  David K. Gifford,et al.  Static dependent costs for estimating execution time , 1994, LFP '94.

[18]  Frank Pfenning,et al.  Eliminating array bound checking through dependent types , 1998, PLDI.

[19]  Wei-Ngan Chin,et al.  Calculating Sized Types , 1999, PEPM '00.

[20]  Zoltán Ésik,et al.  Automata on Series-Parallel Biposets , 2001, Developments in Language Theory.