2015
DOI: 10.1145/2858949.2784749
|View full text |Cite
|
Sign up to set email alerts
|

Denotational cost semantics for functional languages with inductive types

Abstract: Abstract. A central method for analyzing the asymptotic complexity of a functional program is to extract and then solve a recurrence that expresses evaluation cost in terms of input size. The relevant notion of input size is often specific to a datatype, with measures including the length of a list, the maximum element in a list, and the height of a tree. In this work, we give a formal account of the extraction of cost and size recurrences from higher-order functional programs over inductive datatypes. Our app… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
2

Citation Types

0
16
0

Year Published

2017
2017
2020
2020

Publication Types

Select...
5
2
1

Relationship

0
8

Authors

Journals

citations
Cited by 15 publications
(16 citation statements)
references
References 26 publications
0
16
0
Order By: Relevance
“…In the past years, there has been increasing interest in supporting developers to statically reason about the resource usage of their code. There are different approaches to the problem that are based on type systems [30,37,18,15,27], abstract interpretation [25,5,16], recurrence relations [20,4,36], termination analysis [46,11,8,31], and other techniques [14,19]. Among the applications of this research we find the prevention of side channels that leak secret information [38,6,35], identification of complexity bugs [39], support of scheduling decisions [1], and help in profiling [26].…”
Section: Introductionmentioning
confidence: 99%
“…In the past years, there has been increasing interest in supporting developers to statically reason about the resource usage of their code. There are different approaches to the problem that are based on type systems [30,37,18,15,27], abstract interpretation [25,5,16], recurrence relations [20,4,36], termination analysis [46,11,8,31], and other techniques [14,19]. Among the applications of this research we find the prevention of side channels that leak secret information [38,6,35], identification of complexity bugs [39], support of scheduling decisions [1], and help in profiling [26].…”
Section: Introductionmentioning
confidence: 99%
“…The obtained size-change information forms the basis for the computation of actual bounds on loop iterations and recursion depths; using counter instrumentation [26], ranking functions [2,4,10,58], recurrence relations [1,3], and abstract interpretation itself [13,72]. Automatic resource analysis techniques for functional programs are based on sized types [66], recurrence relations [16], term-rewriting [5], and amortized resource analysis [31,34,37,57]. There exist several tools that can automatically derive loop and recursion bounds for imperative programs including SPEED [26,27], KoAT [10], PUBS [1], Rank [4], ABC [7] and LOOPUS [58,72].…”
Section: Related Workmentioning
confidence: 99%
“…The focus on upper bounds is shared with automatic resource analysis techniques that are based on sized types [61], [62], linear dependent types [63], [64], and other type systems [65], [66], [67]. Similarly, semiautomatic analyses [68], [69], [70], [71] focus on upper bounds too.…”
Section: Related Workmentioning
confidence: 99%