ACM Home Page
Please provide us with feedback. Feedback
Formal certification of a compiler back-end or: programming a compiler with a proof assistant
Full text PdfPdf (187 KB)
Source Annual Symposium on Principles of Programming Languages archive
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages table of contents
Charleston, South Carolina, USA
Pages: 42 - 54  
Year of Publication: 2006
ISBN:1-59593-027-2
Also published in ...
Author
Xavier Leroy  INRIA Rocquencourt
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 13,   Downloads (12 Months): 150,   Citation Count: 44
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1111037.1111042
What is a DOI?

ABSTRACT

This paper reports on the development and formal certification (proof of semantic preservation) of a compiler from Cminor (a C-like imperative language) to PowerPC assembly code, using the Coq proof assistant both for programming the compiler and for proving its correctness. Such a certified compiler is useful in the context of formal methods applied to the certification of critical software: the certification of the compiler guarantees that the safety properties proved on the source code hold for the executable compiled code as well.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
 
2
 
3
Y. Bertot, B. Grégoire, and X. Leroy. A structured approach to proving compiler optimizations based on dataflow analysis. In Types for Proofs and Programs, Workshop TYPES 2004, LNCS. Springer-Verlag, 2005.
 
4
S. Blazy and X. Leroy. Formal verification of a memory model for C-like imperative languages. In International Conference on Formal Engineering Methods (ICFEM 2005), volume 3785 of LNCS, pages 280--299. Springer-Verlag, 2005.
 
5
J. O. Blech, S. Glesner, J. Leitner, and S. Mülling. Optimizing code generation from SSA form: A comparison between two formal correctness proofs in Isabelle/HOL. In Proc. COCV Workshop (Compiler Optimization meets Compiler Verification), 2005.
 
6
D. Cachera, T. Jensen, D. Pichardie, and V. Rusu. Extracting a data flow analyser in constructive logic. In European Symposium on Programming 2004, volume 2986 of LNCS, pages 385--400. Springer-Verlag, 2004. Extended version to appear in Theor. Comp. Sci.
7
 
8
S. Coupet-Grimal and W. Delobel. A Uniform and Certified Approach for Two Static Analyses. Research report 24-2005, Laboratoire d'Informatique Fondamentale, Marseille, France, April 2005.
 
9
P. Cousot. The calculational design of a generic abstract interpreter. In M. Broy and R. Steinbrüggen, editors, Calculational System Design. NATO ASI Series F. IOS Press, Amsterdam, 1999.
10
 
11
12
 
13
 
14
B. Grégoire. Compilation des termes de preuves: un (nouveau) mariage entre Coq et Ocaml. PhD thesis, University Paris 7, 2003.
 
15
G. Klein and T. Nipkow. A machine-checked model for a Java-like language, virtual machine and compiler. Technical Report 0400001T.1, National ICT Australia, Mar. 2004. To appear in ACM TOPLAS.
 
16
 
17
18
 
19
P. Letouzey. A new extraction for Coq. In Types for Proofs and Programs, Workshop TYPES 2002, volume 2646 of LNCS, pages 200--219. Springer-Verlag, 2003.
 
20
 
21
22
23
24
25
 
26
 
27
D. Pichardie. Interprétation abstraite en logique intuitionniste: extraction d'analyseurs Java certifiés. PhD thesis, University Rennes 1, Dec. 2005.
 
28
 
29
L. Rideau and B. P. Serpette. Coq à la conquête des moulins. In Journées françaises des langages applicatifs (JFLA 2005), pages 169--180. INRIA, 2005.
 
30
M. Rinard and D. Marinov. Credible compilation with pointers. In Proc. FLoC Workshop on Run-Time Result Verification, 1999.
31
 
32
R. Stärk, J. Schmid, and E. Börger. Java and the Java Virtual Machine. Springer-Verlag, 2001.
 
33
 
34
M. Strecker. Compiler verification for C0. Technical report, Université Paul Sabatier, Toulouse, April 2005.
 
35
L. D. Zuck, A. Pnueli, Y. Fang, and B. Goldberg. VOC: A translation validator for optimizing compilers. Electr. Notes Theor. Comput. Sci., 65(2), 2002.

CITED BY  44