2018
DOI: 10.1007/978-3-030-02768-1_15
|View full text |Cite
|
Sign up to set email alerts
|

Formal Small-Step Verification of a Call-by-Value Lambda Calculus Machine

Abstract: We formally verify an abstract machine for a call-by-value λ-calculus with de Bruijn terms, simple substitution, and small-step semantics. We follow a stepwise refinement approach starting with a naive stack machine with substitution. We then refine to a machine with closures, and finally to a machine with a heap providing structure sharing for closures. We prove the correctness of the three refinement steps with compositional small-step bottom-up simulations. There is an accompanying Coq development verifying… Show more

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
6
0

Year Published

2019
2019
2022
2022

Publication Types

Select...
2
2

Relationship

2
2

Authors

Journals

citations
Cited by 4 publications
(6 citation statements)
references
References 19 publications
0
6
0
Order By: Relevance
“…The tightness of the provable gap then depends on the timeefficiency of the interpreter in use. As mentioned, the self-interpreter given in Section 6.1 is too inefficient and we want to extract the interpreters described in [18] and [9] to L.…”
Section: Discussionmentioning
confidence: 99%
See 1 more Smart Citation
“…The tightness of the provable gap then depends on the timeefficiency of the interpreter in use. As mentioned, the self-interpreter given in Section 6.1 is too inefficient and we want to extract the interpreters described in [18] and [9] to L.…”
Section: Discussionmentioning
confidence: 99%
“…Note that the implementation of eva is very naive and needs steps exponential in n, we thus omit its time complexity. 8 A more reasonable implementation could be obtained by extracting the heap-based abstract machine from [18] to L.…”
Section: Step-indexed L-interpretermentioning
confidence: 99%
“…On closed terms, the number of steps to a normal form agrees with the number of steps needed in the version in [16]. We keep the definitions short and use the same notations as in [14], where more details can be found. We define the syntax of the λ-calculus using a de Bruijn representation of terms [9]: s, t, u, v : Ter ::= n | st | λs where n : N.…”
Section: Call-by-value λ-Calculus Lmentioning
confidence: 99%
“…On closed terms, the number of steps to a normal form agrees with the number of steps needed in the version in [16]. We keep the definitions short and use the same notations as in [14],…”
Section: Call-by-value λ-Calculus Lmentioning
confidence: 99%
See 1 more Smart Citation