A linear first-order functional intermediate language for verified compilers

From MaRDI portal
Publication:2945646

DOI10.1007/978-3-319-22102-1_23zbMATH Open1465.68042arXiv1503.08665OpenAlexW2208324330MaRDI QIDQ2945646FDOQ2945646


Authors: Sigurd Schneider, Gert Smolka, Sebastian Hack Edit this on Wikidata


Publication date: 14 September 2015

Published in: Interactive Theorem Proving (Search for Journal in Brave)

Abstract: We present the linear first-order intermediate language IL for verified compilers. IL is a functional language with calls to a nondeterministic environment. We give IL terms a second, imperative semantic interpretation and obtain a register transfer language. For the imperative interpretation we establish a notion of live variables. Based on live variables, we formulate a decidable property called coherence ensuring that the functional and the imperative interpretation of a term coincide. We formulate a register assignment algorithm for IL and prove its correctness. The algorithm translates a functional IL program into an equivalent imperative IL program. Correctness follows from the fact that the algorithm reaches a coherent program after consistently renaming local variables. We prove that the maximal number of live variables in the initial program bounds the number of different variables in the final coherent program. The entire development is formalized in Coq.


Full work available at URL: https://arxiv.org/abs/1503.08665




Recommendations



Cites Work


Cited In (5)

Uses Software





This page was built for publication: A linear first-order functional intermediate language for verified compilers

Report a bug (only for logged in users!)Click here to report a bug for this page (MaRDI item Q2945646)