Abstract
This article describes the formal verification of a compilation algorithm that transforms parallel moves (parallel assignments between variables) into a semantically-equivalent sequence of elementary moves. Two different specifications of the algorithm are given: an inductive specification and a functional one, each with its correctness proofs. A functional program can then be extracted and integrated in the Compcert verified compiler.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.References
Appel, A.W.: Compiling with Continuations. Cambridge University Press (1992)
Balaa, A., Bertot, Y.: Fonctions récursives générales par itération en théorie des types. In: Journées Francophones des Langages Applicatifs 2002, pp. 27–42. INRIA (2002)
Barthe, G., Forest, J., Pichardie, D., Rusu, V.: Defining and reasoning about recursive functions: a practical tool for the Coq proof assistant. In: Proceedings of the 8th International Symposium on Functional and Logic Programming (FLOPS’06). Lecture Notes in Computer Science, vol. 3945, pp. 114–129. Springer (2006)
Bertot, Y., Castéran, P.: Interactive theorem proving and program development—Coq’Art: the calculus of inductive constructions. EATCS Texts in Theoretical Computer Science. Springer (2004)
Bertot, Y., Grégoire, B., Leroy, X.: A structured approach to proving compiler optimizations based on dataflow analysis. In: Types for Proofs and Programs, Workshop TYPES 2004. Lecture Notes in Computer Science, vol. 3839, pp. 66–81. Springer (2006)
Blazy, S., Dargaye, Z., Leroy, X.: Formal verification of a C compiler front-end. In: FM 2006: International Symposium on Formal Methods. Lecture Notes in Computer Science, vol. 4085, pp. 460–475. Springer (2006)
Coq Development Team: the Coq proof assistant. Software and documentation available at http://coq.inria.fr/ (1989–2007)
Filliâtre, J.C.: Verification of non-functional programs using interpretations in type theory. J. Funct. Program. 13(4), 709–745 (2003)
Filliâtre, J.C.: The Why software verification tool. Software and documentation available at http://why.lri.fr/ (2003–2007)
Leroy, X.: Formal certification of a compiler back-end, or: programming a compiler with a proof assistant. In: 33rd Symposium Principles of Programming Languages, pp. 42–54. ACM Press (2006)
Leroy, X., Doligez, D., Garrigue, J., Vouillon, J.: The Objective Caml system. Software and documentation available at http://caml.inria.fr/ (1996–2007)
Letouzey, P.: A new extraction for Coq. In: Types for Proofs and Programs, Workshop TYPES 2002. Lecture Notes in Computer Science, vol. 2646, pp. 200–219. Springer (2003)
May, C.: The parallel assignment problem redefined. IEEE Trans. Softw. Eng. 15(6), 821–824 (1989)
Sethi, R.: A note on implementing parallel assignment instructions. Inf. Process. Lett. 2(4), 91–95 (1973)
Welch, P.H.: Parallel assignment revisited. Software Practice and Experience 13(12), 1175–1180 (1983)
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Rideau, L., Serpette, B.P. & Leroy, X. Tilting at Windmills with Coq: Formal Verification of a Compilation Algorithm for Parallel Moves. J Autom Reasoning 40, 307–326 (2008). https://doi.org/10.1007/s10817-007-9096-8
Received:
Revised:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10817-007-9096-8