## Cost Recurrences for DML Programs (2001)

### Cached

### Download Links

- [www.brics.dk]
- [www.brics.dk]
- [www.brics.dk]
- [www.brics.dk]
- DBLP

### Other Repositories/Bibliography

Citations: | 18 - 0 self |

### BibTeX

@MISC{Grobauer01costrecurrences,

author = {Bernd Grobauer},

title = {Cost Recurrences for DML Programs},

year = {2001}

}

### Years of Citing Articles

### OpenURL

### Abstract

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 systematically extract cost recurrences from first-order DML programs, guiding the abstraction from data to data size with information contained in DML type derivations.

### Citations

1363 | The Essence of Functional Programming
- Wadler
- 1992
(Show Context)
Citation Context ...s the monadic translation (see, for example, Filinski's work [4]) with a cost monad. It is well-known that state can be added to a program by (1) performing a monadic translation with the state monad =-=[10]-=- and (2) taking the term model of the result, i.e., expanding the monadic constructs inserted by the translation to code. Similarly, using the cost monad instead of the state monad, we can transform a... |

460 | Computational lambda-calculus and monads - Moggi - 1989 |

303 | Dependent types in practical programming
- Xi, Pfenning
- 1999
(Show Context)
Citation Context ...l may be useful for more empirical attempts to determine the time complexity of p, such as plotting input size against the running time calculated by p c . Dependent ML DML, which was developed by Xi =-=[12, 15]-=- in his PhD thesis, extends ML with a limited form of dependent types: A DML type can be enriched with indices taken from a constraint domain (e.g., integers equipped with their usual operations, with... |

225 | Cayenne - a language with dependent types
- Augustsson
- 1998
(Show Context)
Citation Context ...mited to some constraint domain C. Type checking for DML is decidable; it is based on solving constraints in C. For dependently typed languages with significantly more expressive types (e.g., Cayenne =-=[1]-=-) type checking is undecidable. We consider an e#ect-free fragment of DML. As constraint domain, we choose integers, constrained by linear (in)equalities ---we write Z both for the sort of integers an... |

174 | Eliminating array bound checking through dependent types - Xi, Pfenning - 1998 |

136 | Representing Monads
- FILINSKI
- 1994
(Show Context)
Citation Context ...7: A first-order fragment of DML # 0 (Z) 4.2 Measuring cost of computation One way of introducing a cost measure into functional programs is the monadic translation (see, for example, Filinski's work =-=[4]-=-) with a cost monad. It is well-known that state can be added to a program by (1) performing a monadic translation with the state monad [10] and (2) taking the term model of the result, i.e., expandin... |

121 | Resource bound certification
- Crary, Weirich
- 2000
(Show Context)
Citation Context ... arguments and on cost expressions associated with function arguments. The main focus of Reistad and Gi#ord is to guide parallelization of programs with the inferred cost estimates. Crary and Weirich =-=[3]-=- present a decidable type system for the specification and certification of resource consumption in the setting of Typed Assembly Language. The type system simulates dependent types using sum and indu... |

81 | Automatic Complexity Analysis
- Rosendahl
- 1989
(Show Context)
Citation Context ...] consider functional programs without general recursion, using only combinators such as map and zip. Methods that treat more general programs, as for example proposed by Le Metayer [6] and Rosendahl =-=[9]-=-, usually focus on extracting a cost program p c ; if p c terminates, it calculates an upper bound for the running time of a program p. Transforming p c may yield a version compact enough to read o# t... |

63 | Calculating sized types
- Chin, Khoo
- 2001
(Show Context)
Citation Context ...uments and of cost bounds associated with function arguments. The focus lies on the certification of resource bounds through type checking rather than the derivation of resource bounds. Chin and Khoo =-=[2]-=- propose sized types in which size information is expressed with Presburger formulas. They use a a constraint solver to infer size information. It is very likely that complexity analysis in the style ... |

53 |
ACE: An Automatic Complexity Evaluator
- Metayer
- 1988
(Show Context)
Citation Context ...stad and Gi#ord [8] consider functional programs without general recursion, using only combinators such as map and zip. Methods that treat more general programs, as for example proposed by Le Metayer =-=[6]-=- and Rosendahl [9], usually focus on extracting a cost program p c ; if p c terminates, it calculates an upper bound for the running time of a program p. Transforming p c may yield a version compact e... |

40 | Dependent Types for Program Termination Verification
- Xi
(Show Context)
Citation Context ...ecursive programs works exactly the same, but checking whether an extracted bound is indeed a recurrence becomes somewhat more tricky. For the latter, techniques such as presented in Xi's latest work =-=[14]-=- could be used (see Section 5). A first assessment shows that our method can also be extended to existential types in a straightforward way. Essentially, the application of a function that returns a v... |

40 | Automatic accurate time-bound analysis for high-level languages - Liu, Gomez - 1998 |

33 | Calculi for Time Analysis of Functional Programs - Sands - 1990 |

14 | Dependently typed data structures
- Xi
- 1999
(Show Context)
Citation Context ... declare in a type annotation that the insert function maps balanced trees to balanced trees. A range of similar examples convincingly demonstrates that DML is a useful tool for practical programming =-=[12, 13, 15]-=-. This work We use information contained in DML type derivations to extract cost recurrences from DML programs. With DML types, data can be associated with a measure of data size, which essentially de... |

3 |
Static dependent costs for estimating program execution time
- Reistad, Gifford
(Show Context)
Citation Context ...ysis have been proposed. One choice is to restrict the class of programs such that termination is guaranteed, and the extracted time bounds can easily be approximated. For example, Reistad and Gi#ord =-=[8]-=- consider functional programs without general recursion, using only combinators such as map and zip. Methods that treat more general programs, as for example proposed by Le Metayer [6] and Rosendahl [... |

2 |
de Caml. A prototype implementation of DML, based on Caml-light. Available from http://www.ececs.uc.edu/~hwxi/DML/DML. html
- Xi
(Show Context)
Citation Context ...ction algorithm preserves useful information contained in a program 's DML type. An implementation of merge sort in DML is given in Figure 5 (adapted from the distribution of de Caml, a DML prototype =-=[11]-=-): Function initlist converts the list to be sorted into a list of lists such that each of these lists is sorted and has length two (apart from a possible last singleton list). Function merge2 goes th... |