Results 1 
6 of
6
Formal certification of a compiler backend, or: programming a compiler with a proof assistant
 IN PROC. 33RD ACM SYMPOSIUM ON PRINCIPLES OF PROGRAMMING LANGUAGES (POPL ’06
, 2006
"... This paper reports on the development and formal certification (proof of semantic preservation) of a compiler from Cminor (a Clike imperative language) to PowerPC assembly code, using the Coq proof assistant both for programming the compiler and for proving its correctness. Such a certified compile ..."
Abstract

Cited by 229 (15 self)
 Add to MetaCart
This paper reports on the development and formal certification (proof of semantic preservation) of a compiler from Cminor (a Clike 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.
A Listmachine Benchmark for Mechanized Metatheory (Extended Abstract)
, 2006
"... We propose a benchmark to compare theoremproving systems on their ability to express proofs of compiler correctness. In contrast to the first POPLmark, we emphasize the connection of proofs to compiler implementations, and we point out that much can be done without binders or alphaconversion. We p ..."
Abstract

Cited by 15 (3 self)
 Add to MetaCart
We propose a benchmark to compare theoremproving systems on their ability to express proofs of compiler correctness. In contrast to the first POPLmark, we emphasize the connection of proofs to compiler implementations, and we point out that much can be done without binders or alphaconversion. We propose specific criteria for evaluating the utility of mechanized metatheory systems; we have constructed solutions in both Coq and Twelf metatheory, and we draw conclusions about those two systems in particular.
Mechanized Verification of CPS Transformations
"... Abstract. Transformation to continuationpassing style (CPS) is often performed by optimizing compilers for functional programming languages. As part of the development and proof of correctness of a compiler for the miniML functional language, we have mechanically verified the correctness of two CP ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
Abstract. Transformation to continuationpassing style (CPS) is often performed by optimizing compilers for functional programming languages. As part of the development and proof of correctness of a compiler for the miniML functional language, we have mechanically verified the correctness of two CPS transformations for a callbyvalue λcalculus with nary functions, recursive functions, data types and patternmatching. The transformations generalize Plotkin’s original callbyvalue transformation and Danvy and Nielsen’s optimized transformation, respectively. We used the Coq proof assistant to formalize the transformations and conduct and check the proofs. Originalities of this work include the use of bigstep operational semantics to avoid difficulties with administrative redexes, and of twosorted de Bruijn indices to avoid difficulties with αconversion. 1
Mechanized semantics with applications to program proof and compiler verification
"... Abstract. The goal of this lecture is to show how modern theorem provers—in this case, the Coq proof assistant—can be used to mechanize the specification of programming languages and their semantics, and to reason over individual programs and over generic program transformations, as typically found ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Abstract. The goal of this lecture is to show how modern theorem provers—in this case, the Coq proof assistant—can be used to mechanize the specification of programming languages and their semantics, and to reason over individual programs and over generic program transformations, as typically found in compilers. The topics covered include: operational semantics (smallstep, bigstep, definitional interpreters); a simple form of denotational semantics; axiomatic semantics and Hoare logic; generation of verification conditions, with application to program proof; compilation to virtual machine code and its proof of correctness; an example of an optimizing program transformation (dead code elimination) and its proof of correctness.
Abstract
, 2008
"... We propose a benchmark to compare theoremproving systems on their ability to express proofs of compiler correctness. In contrast to the first POPLmark, we emphasize the connection of proofs to compiler implementations, and we point out that much can be done without binders or alphaconversion. We p ..."
Abstract
 Add to MetaCart
We propose a benchmark to compare theoremproving systems on their ability to express proofs of compiler correctness. In contrast to the first POPLmark, we emphasize the connection of proofs to compiler implementations, and we point out that much can be done without binders or alphaconversion. We propose specific criteria for evaluating the utility of mechanized metatheory systems; we have constructed solutions in both Coq and Twelf metatheory, and we draw conclusions about those two systems in particular.
: Armenia (2007)" DOI: 10.1007/9783540755609_17 Mechanized Verification of CPS Transformations
, 2008
"... Abstract. Transformation to continuationpassing style (CPS) is often performed by optimizing compilers for functional programming languages. As part of the development and proof of correctness of a compiler for the miniML functional language, we have mechanically verified the correctness of two CP ..."
Abstract
 Add to MetaCart
Abstract. Transformation to continuationpassing style (CPS) is often performed by optimizing compilers for functional programming languages. As part of the development and proof of correctness of a compiler for the miniML functional language, we have mechanically verified the correctness of two CPS transformations for a callbyvalue λcalculus with nary functions, recursive functions, data types and patternmatching. The transformations generalize Plotkin’s original callbyvalue transformation and Danvy and Nielsen’s optimized transformation, respectively. We used the Coq proof assistant to formalize the transformations and conduct and check the proofs. Originalities of this work include the use of bigstep operational semantics to avoid difficulties with administrative redexes, and of twosorted de Bruijn indices to avoid difficulties with αconversion. 1