Proof obligations preserving compilation

  • Authors:
  • Gilles Barthe;Tamara Rezk;Ando Saabas

  • Affiliations:
  • INRIA Sophia Antipolis, France;INRIA Sophia Antipolis, France;Institute of Cybernetics, Tallinn University of Technology, Estonia

  • Venue:
  • FAST'05 Proceedings of the Third international conference on Formal Aspects in Security and Trust
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

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.