Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The design and implementation of a certifying compiler
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
TACAS '98 Proceedings of the 4th International Conference on Tools and Algorithms for Construction and Analysis of Systems
Abstract Interpretation-Based Certification of Assembly Code
VMCAI 2003 Proceedings of the 4th International Conference on Verification, Model Checking, and Abstract Interpretation
Symbolic transfer function-based approaches to certified compilation
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Secure Information Flow by Self-Composition
CSFW '04 Proceedings of the 17th IEEE workshop on Computer Security Foundations
Java bytecode specification and verification
Proceedings of the 2006 ACM symposium on Applied computing
Electronic Notes in Theoretical Computer Science (ENTCS)
Mobile resource guarantees for smart devices
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
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
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Proof-transforming compilation of programs with abrupt termination
Proceedings of the 2007 conference on Specification and verification of component-based systems: 6th Joint Meeting of the European Conference on Software Engineering and the ACM SIGSOFT Symposium on the Foundations of Software Engineering
Proof optimization for partial redundancy elimination
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Certificate translation for specification-preserving advices
Proceedings of the 7th workshop on Foundations of aspect-oriented languages
Preservation of Proof Obligations from Java to the Java Virtual Machine
IJCAR '08 Proceedings of the 4th international joint conference on Automated Reasoning
Certificate translation for optimizing compilers
ACM Transactions on Programming Languages and Systems (TOPLAS)
On the automated synthesis of proof-carrying temporal reference monitors
LOPSTR'06 Proceedings of the 16th international conference on Logic-based program synthesis and transformation
Preliminary design of BML: a behavioral interface specification language for java bytecode
FASE'07 Proceedings of the 10th international conference on Fundamental approaches to software engineering
JACK: a tool for validation of security and behaviour of Java applications
FMCO'06 Proceedings of the 5th international conference on Formal methods for components and objects
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
Perspectives in certificate translation
TGC'10 Proceedings of the 5th international conference on Trustworthly global computing
An Abstract Model of Certificate Translation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Certificate translation for optimizing compilers
SAS'06 Proceedings of the 13th international conference on Static Analysis
Hardware-dependent proofs of numerical programs
CPP'11 Proceedings of the First international conference on Certified Programs and Proofs
Hi-index | 0.00 |
The objective of this work is to study the interaction between program verification and program compilation, and to show that the proof that a source program meets its specification can be reused to show that the corresponding compiled program meets the same specification. More concretely, we introduce a core imperative language, and a bytecode language for a stack-based abstract machine, and a non-optimizing compiler. Then we consider for both languages verification condition generators that operate on programs annotated with loop invariants and procedure specifications. In such a setting, we show that compilation preserves proof obligations, in the sense that the proof obligations generated for the source annotated program are the same that those generated for the compiled annotated program (using the same loop invariants and procedure specifications). Furthermore, we discuss the relevance of our results to Proof Carrying Code.