Vérification formelle d'un compilateur optimisant pour langages fonctionnels

Abstract : As part of formal verification of critical software, preserving properties established on the source code in the executable code seems to be crucial. To guarantee this preservation, the compiler must itself be verified. A compiler is formally verified if it comes with a proof of semantic preservation: "if compilation succeeds, the behavior of the compiled code agrees with that of the source program". The CompCert project investigates the formal verification of realistic compilers usable for critical embedded software. The project designs, develops and mechanically verifies compilers using the Coq proof assistant. By this method, a C compiler producing PowerPC assembly code has already be developed and verified. Using the extraction mechanism of Coq, the compiler is automatically extracted into OCaml code, which is compiled by the Objective Caml system. Actually, the production of the executable compiler uses two unverified processes: the extraction mechanism and the Objective Caml compiler. In fact, this is true for any program specified in the Coq proof assistant, then extracted to an executable. This thesis investigates the design, development and mechanized verification, using the Coq proof assistant, of a compiler for the purely functional fragment of ML, which is the target language for Coq's extraction. Concretely, a front-end compiler from miniML (lambda-calculus plus let, letrec, and pattern-matching) to Cminor was developed and proved correct. Cminor is a low-level C-like language that is the first intermediate language of the CompCert back-end. Considering the expressiveness of the source language, the compiler is realistic. It implements several classic optimizations: uncurrying (the same optimization as in OCaml), uniform data structure representation (as numbering constructor and closure conversion) and an optimizing CPS translation. Like other modern compilers for high-level languages, the miniML compiler needs to interact with a memory manager. This interaction has been mechanized verified.
Document type :
Complete list of metadatas

Cited literature [120 references]  Display  Hide  Download

Contributor : Xavier Leroy <>
Submitted on : Tuesday, February 2, 2010 - 2:10:19 PM
Last modification on : Friday, May 25, 2018 - 12:02:07 PM
Long-term archiving on : Thursday, October 18, 2012 - 2:06:40 PM


  • HAL Id : tel-00452440, version 1



Zaynah Dargaye. Vérification formelle d'un compilateur optimisant pour langages fonctionnels. Génie logiciel [cs.SE]. Université Paris-Diderot - Paris VII, 2009. Français. ⟨tel-00452440⟩



Record views


Files downloads