Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming 2015
DOI: 10.1145/2784731.2784764
|View full text |Cite
|
Sign up to set email alerts
|

Pilsner: a compositionally verified compiler for a higher-order imperative language

Abstract: Compiler verification is essential for the construction of fully verified software, but most prior work (such as CompCert) has focused on verifying whole-program compilers. To support separate compilation and to enable linking of results from different verified compilers, it is important to develop a compositional notion of compiler correctness that is modular (preserved under linking), transitive (supports multi-pass compilation), and flexible (applicable to compilers that use different intermediate languages… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
32
0

Year Published

2016
2016
2024
2024

Publication Types

Select...
5
2
2

Relationship

0
9

Authors

Journals

citations
Cited by 63 publications
(32 citation statements)
references
References 29 publications
0
32
0
Order By: Relevance
“…The initial version of CakeML [Kumar et al 2014] treated them naively, with applications feeding one argument in at a time, and always jumping to the code pointer loaded from the heap-allocated closure record. Pilsner [Neis et al 2015] does the same, although it does support inlining, contiication, and hoisting optimisations that we do not address here. The most recent work on CakeML mentions ClosLang and the treatment of multi-argument functions, but it does not explain the semantics, or give any information on how the veriication works.…”
Section: Introductionmentioning
confidence: 87%
See 1 more Smart Citation
“…The initial version of CakeML [Kumar et al 2014] treated them naively, with applications feeding one argument in at a time, and always jumping to the code pointer loaded from the heap-allocated closure record. Pilsner [Neis et al 2015] does the same, although it does support inlining, contiication, and hoisting optimisations that we do not address here. The most recent work on CakeML mentions ClosLang and the treatment of multi-argument functions, but it does not explain the semantics, or give any information on how the veriication works.…”
Section: Introductionmentioning
confidence: 87%
“…18:25 9 RELATED WORK As mentioned in ğ1, neither previous versions of CakeML [Kumar et al 2014], nor Pilsner [Neis et al 2015] support special semantics for curried functions, nor do they optimise calls to known (but not inlined) functions. This is true for Lambda Tamer [Chlipala 2010] as well, although it uses higher-order abstract syntax instead of de Bruijn indices and shifting.…”
Section: Verifying Eficient Function Calls In Cakemlmentioning
confidence: 99%
“…More compositional criteria for compiler correctness have also been proposed [56,70,79,92]. At a minimum such criteria allow linking with contexts that are the compilation of source contexts [56], which can be formalized as follows:…”
Section: Robust Trace Property Preservation (Rtp)mentioning
confidence: 99%
“…We could support a compositional compiler correctness result by developing a relation independent of the compiler between source and target components to classify which components are safe to link with. There are well known techniques for developing such relations which we think will extend to CC [13,36,37,41,43].…”
Section: Separate and Compositional Compilationmentioning
confidence: 99%