2016
DOI: 10.1017/s0956796816000253
|View full text |Cite
|
Sign up to set email alerts
|

Reasoning about multi-stage programs

Abstract: We settle three basic questions that naturally arise when verifying code generators written in multi-stage functional programming languages. First, does adding staging to a language compromise any equalities that hold in the base language? Unfortunately it does, and more care is needed to reason about terms with free variables. Second, staging annotations, as the name "annotations" suggests, are often thought to be orthogonal to the behavior of a program, but when is this formally guaranteed to be true? We giv… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
8
0

Year Published

2016
2016
2022
2022

Publication Types

Select...
3
3

Relationship

0
6

Authors

Journals

citations
Cited by 7 publications
(8 citation statements)
references
References 60 publications
0
8
0
Order By: Relevance
“…Although compiler analyses and transformations are (usually) sound, they are almost never complete: a compiler generally offers no guarantee that any optimization will be successfully applied. 11 There are several instances when an innocuous change to a program makes it much slower. The compiler is a black box, with the programmer forced into constantly reorganizing the program in unintuitive ways in order to achieve the desired performance.…”
Section: Discussion: Why Staging?mentioning
confidence: 99%
See 1 more Smart Citation
“…Although compiler analyses and transformations are (usually) sound, they are almost never complete: a compiler generally offers no guarantee that any optimization will be successfully applied. 11 There are several instances when an innocuous change to a program makes it much slower. The compiler is a black box, with the programmer forced into constantly reorganizing the program in unintuitive ways in order to achieve the desired performance.…”
Section: Discussion: Why Staging?mentioning
confidence: 99%
“…The combinators of_arr and fold are staged analogously. We use the method of [11] to prove the correctness, which easily applies to this case, given that map is non-recursive. The sample processing pipeline (the first example from §2) As expected, no lists, buffers or other variable-size data structures are created.…”
Section: Simple Staging Of Streamsmentioning
confidence: 99%
“…Comparing evaluation orders Plotkin [22] and many others (e.g. [8]) relate call-by-value and call-by-name. Crucially, they consider lambda-calculi with no side-effects other than divergence.…”
Section: Related Workmentioning
confidence: 99%
“…It is always true that this transformation of dropping the staging annotations should recover a valid unstaged program [Inoue and Taha 2016]. It is not always the case that we can just drop staging annotations in the original code to end up with a satisfactory staged version.…”
Section: Unstaged Starting Pointmentioning
confidence: 99%