From system F to typed assembly language
ACM Transactions on Programming Languages and Systems (TOPLAS)
Compiling with proofs
Goal-directed weakening of abstract interpretation results
ACM Transactions on Programming Languages and Systems (TOPLAS)
Type-preserving compilation for large-scale optimizing object-oriented compilers
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Certificate translation for optimizing compilers
ACM Transactions on Programming Languages and Systems (TOPLAS)
Certificate translation in abstract interpretation
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
The spec# programming system: an overview
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Perspectives in certificate translation
TGC'10 Proceedings of the 5th international conference on Trustworthly global computing
Certificate translation for the verification of concurrent programs
TGC'10 Proceedings of the 5th international conference on Trustworthly global computing
Hi-index | 0.00 |
Certificate translation is a method that transforms certificates of source programs into certificates of their compilation. It provides strong guarantees on low-level code, and is useful for eliminating trust in the compiler (for high assurance code) and in the code producer for mobile code security. The theory of certificate translation has been developed in earlier work, but no implementation exists. As a result, it has been difficult to evaluate its practicality, and in particular the impact of certificate translation on the size of certificates. In this paper, we report on the development of a certificate translator prototype. The tool takes as input a high-level program, defined in a small subset of the C programming language, and a logical specification à la ACSL , and computes a set of verification conditions for the Coq proof assistant. Once proof obligations are discharged, the tool compiles the source program into an intermediate RTL (i.e., three-address code) representation, and then performs a sequence of compiler optimizations. At each step, certificates are transformed automatically to produce a proof for the transformed programs. For optimizations that rely on arithmetic reasoning, such as constant propagation and common subexpression, the tool implements a new certificate translation strategy that minimizes certificate growth.