Skip to main content

Part of the book series: Lecture Notes in Computer Science ((LNAI,volume 1624))

Abstract

This paper sketches a rigorous correctness proof of a compiler executable. We will emphasize the central rôle of partial program correctness and its preservation, which captures the intuitive correctness requirements for transformational programs and in particular for compilers on real machines. Although often left out of sight, implementation verification is definitely necessary, not only but also for compilers. We will show that a rigorous compiler correctness proof also for the final binary compiler machine program is possible and feasible. Verified compiler implementations guarantee correctness properties for generated executable program implementations; we need them, not only in safety critical systems, but also for security in e.g. network computing.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Chirica, L.M., Martin, D.F.: Toward Compiler Implementation Correctness Proofs. ACM Transactions on Programming Languages and Systems 8(2), 185–214 (1986)

    Article  MATH  Google Scholar 

  2. Curzon, P.: The Veried Compilation of Vista Programs. Internal Report, Computer Laboratory. University of Cambridge (January 1994)

    Google Scholar 

  3. Goerigk, W.: An Exercise in Program Verication: The ACL2 Correctness Proof of a Simple Theorem Prover Executable. Technical Report Verifix/CAU/2.4, CAU Kiel (1996)

    Google Scholar 

  4. Goerigk, W.: A Denotational Semantics for ComLisp and SIL. Technical Report Verifix/CAU/2.8, CAU Kiel (December 1997)

    Google Scholar 

  5. Goerigk, W., Dold, A., Gaul, T., Goos, G., Heberle, A., von Henke, F.W., Homann, U., Langmaack, H., Pfeifer, H., Ruess, H., Zimmermann, W.: Compiler Correctness and Implementation Verication: The Verix Approach. In: Fritzson, P. (ed.) Proceedings of the Poster Session of CC 1996 International Conference on Compiler Construction, IDA Technical Report LiTH-IDA-R-96-12, Linkøping, Sweden (1996)

    Google Scholar 

  6. Goerigk, W., Gaul, T., Zimmermann, W.: Correct Programs without Proof? On Checker-Based Program Verication. In: Proceedings ATOOLS 1998 Workshop on ”Tool Support for System Specication, Development, and Verification”, Advances in Computing Science, Malente. Springer, Heidelberg (1998)

    Google Scholar 

  7. Goerigk, W., Homann, U.: The Compiler Implementation Language ComLisp. Technical Report Verifix/CAU/1.7, CAU Kiel (June 1996)

    Google Scholar 

  8. Goerigk, W., Homann, U.: Rigorous Compiler Implementation Correctness: How to Prove the Real Thing Correct. In: Hutter, D., Traverso, P. (eds.) FM-Trends 1998. LNCS, vol. 1641, p. 71. Springer, Heidelberg (1998) (to appear)

    Google Scholar 

  9. Goerigk, W., Homann, U.: The Compiling Specication from Com- Lisp to Executable Machine Code. Technical Report Nr. 9713, Institut für Informatik, CAU, Kiel (December 1998)

    Google Scholar 

  10. Goerigk, W., Müller-Olm, M.: Erhaltung partieller Korrektheit bei beschränkten Maschinenressourcen. Eine Beweisskizze. Technical Report Verifix/CAU/2.5, CAU Kiel (1996)

    Google Scholar 

  11. Guttman, J.D., Monk, L.G., Ramsdell, J.D., Farmer, W.M., Swarup, V.: A Guide to VLisp, A Veried Programming Language Implementation. Technical Report M92B091, The MITRE Corporation, Bedford, MA (September 1992)

    Google Scholar 

  12. Hoare, C.A.R.: Renement algebra proves correctness of compiling specifications. In: Morgan, C.C., Woodcock, J.C.P. (eds.) 3rd Renement Workshop, pp. 33–48. Springer, Heidelberg (1991)

    Google Scholar 

  13. Hoare, C.A.R., Jifeng, H., Sampaio, A.: Normal Form Approach to Compiler Design. Acta Informatica 30, 701–739 (1993)

    Article  MATH  MathSciNet  Google Scholar 

  14. Homann, U.: Über die korrekte Implementierung von Compilern. InWorkshop Alternative Konzepte für Sprachen und Rechner, pp. 94–105, Bad Honnef, Also available as Technical Report Verifix/CAU/3.1 (1996)

    Google Scholar 

  15. Joyce, J.J.: Totally Veried Systems: Linking Veried Software to Verified Hardware. In: Leeser, M., Brown, G. (eds.) Hardware Specification, Verification and Synthesis: Mathematical Aspects. LNCS, vol. 408. Springer, Heidelberg (1990)

    Google Scholar 

  16. Kaufmann, M., Moore, J.S.: Design Goals of ACL2. Technical Report 101, Computational Logic, Inc. (August 1994)

    Google Scholar 

  17. Langmaack, H.: Softwareengineering zur Zertizierung von Systemen: Spezikations-, Implementierungs-, Übersetzerkorrektheit. Informationstechnik und Technische Informatik it-ti 97, 41–47 (1997)

    Google Scholar 

  18. McCarthy, J., Painter, J.A.: Correctness of a compiler for arithmetical expressions. In: Schwartz, J.T. (ed.) Proceedings of a Symposium in Applied Mathematics. Mathematical Aspects of Computer Science, vol. 19. American Mathematical Society, Providence (1967)

    Google Scholar 

  19. Moore, J.S.: Piton: A verified assembly level language. Technical Report 22, Comp. Logic Inc., Austin, Texas (1988)

    Google Scholar 

  20. Moore, J.S.: Piton, A Mechanically Verified Assembly-Level Language. Kluwer Academic Publishers, Dordrecht (1996)

    Google Scholar 

  21. Moore, J.S., Kaufmann, M.: ACL2: An industrial strength version of Nqthm. In: Proceedings of COMPASS 1996 (June 1996)

    Google Scholar 

  22. Müller-Olm, M.: Three Views on Preservation of Partial Correctness. Technical Report Verifix/CAU/5.1, CAU Kiel (October 1996)

    Google Scholar 

  23. Müller-Olm, M.: Modular Compiler Verification. LNCS, vol. 1283. Springer, Heidelberg (1997)

    Google Scholar 

  24. Necula, G.C.: Proof-carrying code. In: Conference Record of POPL 1997: The 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Paris, France, January 15–17, pp. 106–119 (1997)

    Google Scholar 

  25. Necula, G.C., Lee, P.: The design and implementation of a certifying compiler. In: Proceedings of the ACM SIGPLAN 1998 Conference on Programming Language Design and Implementation (PLDI), Montreal, Canada, June 17-19, vol. 19, pp. 333–344 (1998)

    Google Scholar 

  26. Oliva, D.P., Wand, M.: A Veried Compiler for Pure PreScheme. Technical Report NU-CCS-92-5, Northeastern University College of Computer Science, Northeastern University (February 1992)

    Google Scholar 

  27. Owre, S., Rushby, J.M., Shankar, N.: PVS: A Prototype Verication System. In: Kapur, D. (ed.) CADE 1992. LNCS, vol. 607, pp. 748–752. Springer, Heidelberg (1992)

    Google Scholar 

  28. Pfeifer, H., Dold, A., von Henke, F.W., Rue, B.H.: Mechanized Semantics of Simple Imperative Programming Constructs. Ulmer Informatik-Berichte 96-11, Universität Ulm (December 1996)

    Google Scholar 

  29. Polak, W.: Compiler specication and verication. In: Hartmanis, J., Goos, G. (eds.) Compiler Specification and Verification. LNCS, vol. 124. Springer, Heidelberg (1981)

    Google Scholar 

  30. Thompson, K.: Reflections on Trusting Trust. Communications of the ACM 27(8), 761–763 (1990); Also in ACM Turing Award Lectures: The First Twenty Years 1965-1985. ACM Press, 1987, and in Computers Under Attack: Intruders, Worms, and Viruses Copyright. ACM Press (1990)

    Article  Google Scholar 

  31. Yellin, F.: Low level security in java. In: Fourth International Conference on the World-Wide Web, December 1995. MIT, Boston (1995)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 1999 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Goerigk, W., Simon, F. (1999). Towards Rigorous Compiler Implementation Verification. In: Padget, J.A. (eds) Collaboration between Human and Artificial Societies. Lecture Notes in Computer Science(), vol 1624. Springer, Berlin, Heidelberg. https://doi.org/10.1007/10703260_4

Download citation

  • DOI: https://doi.org/10.1007/10703260_4

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-66930-2

  • Online ISBN: 978-3-540-46624-6

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics