Proof Obligations Preserving Compilation

  • Gilles Barthe
  • Tamara Rezk
  • Ando Saabas
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3866)

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.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Gilles Barthe
    • 1
  • Tamara Rezk
    • 1
  • Ando Saabas
    • 2
  1. 1.INRIA Sophia AntipolisFrance
  2. 2.Institute of CyberneticsTallinn University of TechnologyEstonia

Personalised recommendations