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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Chirica, L.M., Martin, D.F.: Toward Compiler Implementation Correctness Proofs. ACM Transactions on Programming Languages and Systems 8(2), 185–214 (1986)
Curzon, P.: The Veried Compilation of Vista Programs. Internal Report, Computer Laboratory. University of Cambridge (January 1994)
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)
Goerigk, W.: A Denotational Semantics for ComLisp and SIL. Technical Report Verifix/CAU/2.8, CAU Kiel (December 1997)
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)
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)
Goerigk, W., Homann, U.: The Compiler Implementation Language ComLisp. Technical Report Verifix/CAU/1.7, CAU Kiel (June 1996)
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)
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)
Goerigk, W., Müller-Olm, M.: Erhaltung partieller Korrektheit bei beschränkten Maschinenressourcen. Eine Beweisskizze. Technical Report Verifix/CAU/2.5, CAU Kiel (1996)
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)
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)
Hoare, C.A.R., Jifeng, H., Sampaio, A.: Normal Form Approach to Compiler Design. Acta Informatica 30, 701–739 (1993)
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)
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)
Kaufmann, M., Moore, J.S.: Design Goals of ACL2. Technical Report 101, Computational Logic, Inc. (August 1994)
Langmaack, H.: Softwareengineering zur Zertizierung von Systemen: Spezikations-, Implementierungs-, Übersetzerkorrektheit. Informationstechnik und Technische Informatik it-ti 97, 41–47 (1997)
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)
Moore, J.S.: Piton: A verified assembly level language. Technical Report 22, Comp. Logic Inc., Austin, Texas (1988)
Moore, J.S.: Piton, A Mechanically Verified Assembly-Level Language. Kluwer Academic Publishers, Dordrecht (1996)
Moore, J.S., Kaufmann, M.: ACL2: An industrial strength version of Nqthm. In: Proceedings of COMPASS 1996 (June 1996)
Müller-Olm, M.: Three Views on Preservation of Partial Correctness. Technical Report Verifix/CAU/5.1, CAU Kiel (October 1996)
Müller-Olm, M.: Modular Compiler Verification. LNCS, vol. 1283. Springer, Heidelberg (1997)
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)
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)
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)
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)
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)
Polak, W.: Compiler specication and verication. In: Hartmanis, J., Goos, G. (eds.) Compiler Specification and Verification. LNCS, vol. 124. Springer, Heidelberg (1981)
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)
Yellin, F.: Low level security in java. In: Fourth International Conference on the World-Wide Web, December 1995. MIT, Boston (1995)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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