Cakes That Bake Cakes: Dynamic Computation in CakeML

被引:1
|
作者
Sewell, Thomas [1 ]
Myreen, Magnus O. [2 ]
Tan, Yong Kiam
Kumar, Ramana
Mihajlovic, Alexander [2 ]
Abrahamsson, Oskar [2 ]
Owens, Scott
机构
[1] Univ Cambridge, Cambridge, England
[2] Chalmers Univ Technol, Gothenburg, Sweden
基金
瑞典研究理事会; 欧洲研究理事会;
关键词
compiler verification; dynamic computation; interactive theorem proving;
D O I
10.1145/3591266
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
We have extended the verified CakeML compiler with a new language primitive, Eval, which permits evaluation of new CakeML syntax at runtime. This new implementation supports an ambitious form of compilation at runtime and dynamic execution, where the original and dynamically added code can share ( higher-order) values and recursively call each other. This is, to our knowledge, the first verified run-time environment capable of supporting a standard LCF-style theorem prover design. Modifying the modern CakeML compiler pipeline and proofs to support a dynamic computation semantics was an extensive project. We review the design decisions, proof techniques, and proof engineering lessons from the project, and highlight some unexpected complications.
引用
收藏
页数:24
相关论文
共 50 条