Compositional optimizations for CertiCoq
Compositional optimizations for CertiCoq
复制标题
CertiCoq 的成分优化
DOI:
10.1145/3473591
复制
发表时间:
2021
影响因子:
--
通讯作者:
Appel, Andrew W.
中科院分区:
文献类型:
--
作者:
Paraskevopoulou, Zoe;Li, John M.;Appel, Andrew W.
Compositional compiler verification is a difficult problem that focuses on separate compilation of program components with possibly different verified compilers. Logical relations are widely used in proving correctness of program transformations in higher-order languages; however, they do not scale to compositional verification of multi-pass compilers due to their lack of transitivity. The only known technique to apply to compositional verification of multi-pass compilers for higher-order languages is parametric inter-language simulations (PILS), which is however significantly more complicated than traditional proof techniques for compiler correctness. In this paper, we present a novel verification framework forlightweight compositional compiler correctness. We demonstrate that by imposing the additional restriction that program components are compiled by pipelines that go throughthe same sequence of intermediate representations, logical relation proofs can be transitively composed in order to derive an end-to-end compositional specification for multi-pass compiler pipelines. Unlike traditional logical-relation frameworks, our framework supports divergence preservation—even when transformations reduce the number of program steps. We achieve this by parameterizing our logical relations with a pair ofrelational invariants.We apply this technique to verify a multi-pass, optimizing middle-end pipeline for CertiCoq, a compiler from Gallina (Coq’s specification language) to C. The pipeline optimizes and closure-converts an untyped functional intermediate language (ANF or CPS) to a subset of that language without nested functions, which can be easily code-generated to low-level languages. Notably, our pipeline performs more complex closure-allocation optimizations than the state of the art in verified compilation. Using our novel verification framework, we prove an end-to-end theorem for our pipeline that covers both termination and divergence and applies to whole-program and separate compilation, even when different modules are compiled with different optimizations. Our results are mechanized in the Coq proof assistant.
登录
查看更多内容
DOI:
--
发表时间:
2010
期刊:
ACM-SIGACT Symposium on Principles of Programming Languages
影响因子:
--
作者:
A. Chlipala
通讯作者:
A. Chlipala
DOI:
--
发表时间:
2015
期刊:
ACM SIGPLAN International Conference on Functional Programming
影响因子:
--
作者:
Georg Neis;C. Hur;Jan;Craig McLaughlin;Derek Dreyer;Viktor Vafeiadis
通讯作者:
Viktor Vafeiadis
DOI:
--
发表时间:
1992
期刊:
International Conference on Computational Linguistics
影响因子:
--
作者:
Wlodek Zadrozny
通讯作者:
Wlodek Zadrozny
DOI:
--
发表时间:
2021
期刊:
Proc. ACM Program. Lang.
影响因子:
--
作者:
Zoe Paraskevopoulou;Anvay Grover
通讯作者:
Anvay Grover
DOI:
--
发表时间:
2016
期刊:
Workshop on Logical and Semantic Frameworks with Applications
影响因子:
--
作者:
Leonardo Rodríguez;Miguel Pagano;Daniel Fridlender
通讯作者:
Daniel Fridlender