Journal of Automated Reasoning

, Volume 40, Issue 4, pp 307–326 | Cite as

Tilting at Windmills with Coq: Formal Verification of a Compilation Algorithm for Parallel Moves

  • Laurence Rideau
  • Bernard Paul Serpette
  • Xavier Leroy


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.


Parallel move Parallel assignment Compilation Compiler correctness The Coq proof assistant 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Appel, A.W.: Compiling with Continuations. Cambridge University Press (1992)Google Scholar
  2. 2.
    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)Google Scholar
  3. 3.
    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)Google Scholar
  4. 4.
    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)Google Scholar
  5. 5.
    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)Google Scholar
  6. 6.
    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)Google Scholar
  7. 7.
    Coq Development Team: the Coq proof assistant. Software and documentation available at (1989–2007)
  8. 8.
    Filliâtre, J.C.: Verification of non-functional programs using interpretations in type theory. J. Funct. Program. 13(4), 709–745 (2003)CrossRefzbMATHGoogle Scholar
  9. 9.
    Filliâtre, J.C.: The Why software verification tool. Software and documentation available at (2003–2007)
  10. 10.
    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)Google Scholar
  11. 11.
    Leroy, X., Doligez, D., Garrigue, J., Vouillon, J.: The Objective Caml system. Software and documentation available at (1996–2007)
  12. 12.
    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)Google Scholar
  13. 13.
    May, C.: The parallel assignment problem redefined. IEEE Trans. Softw. Eng. 15(6), 821–824 (1989)CrossRefGoogle Scholar
  14. 14.
    Sethi, R.: A note on implementing parallel assignment instructions. Inf. Process. Lett. 2(4), 91–95 (1973)CrossRefzbMATHGoogle Scholar
  15. 15.
    Welch, P.H.: Parallel assignment revisited. Software Practice and Experience 13(12), 1175–1180 (1983)CrossRefzbMATHGoogle Scholar

Copyright information

© Springer Science+Business Media B.V. 2007

Authors and Affiliations

  • Laurence Rideau
    • 1
  • Bernard Paul Serpette
    • 1
  • Xavier Leroy
    • 2
  1. 1.INRIA Sophia—Antipolis MéditerranéeSophia-AntipolisFrance
  2. 2.INRIA Paris—RocquencourtLe ChesnayFrance

Personalised recommendations