Advertisement

Provably correct compiler development and implementation

  • Bettina Buth
  • Karl-Heinz Buth
  • Martin Fränzle
  • Burghard v. Karger
  • Yassine Lakhneche
  • Hans Langmaack
  • Markus Müller-Olm
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 641)

Abstract

This paper reports on provably correct compiler implementation in the ESPRIT basic research action 3104 ProCoS (Provably Correct Systems). A sharp distinction is drawn between correctness of the specification of a compiler and correctness of the actual implementation. The first covers semantical correctness of the code to be generated, whereas the second concerns correctness of the compiler program with respect to the specification. The compiler construction framework presented aims at minimizing the amount of handcoding during implementation and at reusing specification correctness arguments for proving the implementation correct. The classical technique of bootstrapping compilers is revisited with respect to implementation correctness.

Keywords

Host System Label Transition System Proof Obligation Source Program Correctness Proof 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

References

  1. [Bj92]
    Dines Bjørner et al. Final Deliverable of the ProCoS Project. Computer Science Department, Technical University of Denmark, Lyngby, DK, 1992 (submitted to Springer Verlag for publication)Google Scholar
  2. [BJ78]
    Dines Bjørner, Cliff B. Jones. The Vienna Development Method: The Meta Language. LNCS 61. Springer Verlag, 1978Google Scholar
  3. [BM88]
    R.S. Boyer, J S. Moore. A Computational Logic Handbook. Academic Press, 1988Google Scholar
  4. [Fr90]
    Martin Fränzle. Verification of Compilers for Recursive occam-like Languages. Master's Thesis, Institut für Informatik und Praktische Mathematik, Christian-Albrechts-Universität Kiel, FRG, 1990Google Scholar
  5. [Ho85]
    C.A.R. Hoare. Communicating Sequential Processes. Prentice-Hall Int., 1985Google Scholar
  6. [Ho90]
    C.A.R. Hoare. Refinement Algebra Proves Correctness of Compiling Specifications. PRG-TR-6-90. Programming Research Group, Oxford University, UK, 1990Google Scholar
  7. [i88a]
    inmos Limited. Transputer instruction set: A compiler writers guide. Prentice-Hall Int., 1988Google Scholar
  8. [i88b]
    inmos Limited. occam 2 Reference Manual. Prentice-Hall Int., 1988Google Scholar
  9. [Jo90]
    Cliff B. Jones. Systematic Software Development Using VDM. Prentice-Hall Int., 1990Google Scholar
  10. [La91]
    Yassine Lakhneche. Equivalence of Denotational and Structural Operational Semantics of PL. Master's Thesis, Institut für Informatik und Praktische Mathematik, Christian-Albrechts-Universität Kiel, FRG, 1991Google Scholar
  11. [MO90]
    Markus Müller-Olm. Correctness Proof of SubLISP to PL Translation. Master's Thesis, Institut für Informatik und Praktische Mathematik, Christian-Albrechts-Universität Kiel, FRG, 1990Google Scholar
  12. [Po81]
    W. Polak. Compiler Specification and Verification. LNCS 124. Springer Verlag, 1981Google Scholar
  13. [St77]
    Joseph E. Stoy. Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory. MIT Press, 1977Google Scholar
  14. [Yo89]
    W.D. Young. A mechanically verified code generator. Journal of Automated Reasoning, 5(4), December 1989Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1992

Authors and Affiliations

  • Bettina Buth
    • 1
  • Karl-Heinz Buth
    • 1
  • Martin Fränzle
    • 1
  • Burghard v. Karger
    • 1
  • Yassine Lakhneche
    • 1
  • Hans Langmaack
    • 1
  • Markus Müller-Olm
    • 1
  1. 1.Institut für Informatik und Praktische MathematikChristian-Albrechts-Universität KielKielFRG

Personalised recommendations