LISP and Symbolic Computation

, Volume 8, Issue 1–2, pp 5–32 | Cite as

VLISP: A verified implementation of Scheme

  • Joshua D. Guttman
  • John D. Ramsdell
  • Mitchell Wand
Article

Abstract

The VLISP project showed how to produce a comprehensively verified implementation for a programming language, namely Scheme. This paper introduces two more detailed studies on VLISP [13, 21]. It summarizes the basic techniques that were used repeatedly throughout the effort. It presents scientific conclusions about the applicability of the these techniques as well as engineering conclusions about the crucial choices that allowed the verification to succeed.

Keywords

verified programming languages Scheme compiler 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Joel F. Bartlett. Scheme->C: A portable Scheme-to-C compiler. WRL 89/1, Digital Equipment Corporation Western Research Laboratory, January 1989.Google Scholar
  2. 2.
    Robert S. Boyer and Yuan Yu. Automated correctness proofs of machine code programs for a commercial microprocessor. In D. Kapur, editor,Automated Deduction — CADE-11, pages 416–430. 11th International Conference on Automated Deduction, Springer Verlag, 1992.Google Scholar
  3. 3.
    William Clinger. The Scheme 311 compiler: An exercise in denotational semantics. In1984 ACM Symposium on Lisp and Functional Programming, pages 356–364, New York, August 1984. The Association for Computing Machinery, Inc.Google Scholar
  4. 4.
    William Clinger and Jonathan A. Rees (eds.). Revised4 report on the algorithmic language Scheme. Technical Report CIS-TR-90-02, University of Oregon, 1990.Google Scholar
  5. 5.
    Bruno Courcelle. Fundamental properties of infinite trees.Theoretical Computer Science, 25:95–169, 1983.Google Scholar
  6. 6.
    Edsger W. Dijkstra.A Discipline of Programming. Prentice-Hall, Englewood Cliffs, 1976.Google Scholar
  7. 7.
    William M. Farmer, Joshua D. Guttman, Leonard G. Monk, John D. Ramsdell, and Vipin Swarup. The faithfulness of the VLISP operational semantics. M 92B093, The MITRE Corporation, September 1992.Google Scholar
  8. 8.
    William M. Farmer, Joshua D. Guttman, Leonard G. Monk, John D. Ramsdell, and Vipin Swarup. The VLISP linker. M 92B095, The MITRE Corporation, September 1992.Google Scholar
  9. 9.
    David Gries.The Science of Programming. Springer-Verlag, 1981.Google Scholar
  10. 10.
    Joshua D. Guttman, Leonard G. Monk, William M. Farmer, John D. Ramsdell, and Vipin Swarup. The VLISP byte-code compiler. M 92B092, The MITRE Corporation, September 1992.Google Scholar
  11. 11.
    Joshua D. Guttman, Leonard G. Monk, William M. Farmer, John D. Ramsdell, and Vipin Swarup. The VLISP flattener. M 92B094, The MITRE Corporation, 1992.Google Scholar
  12. 12.
    Joshua D. Guttman, Leonard G. Monk, John D. Ramsdell, William M. Farmer, and Vipin Swarup. A guide to VLISP, a verified programming language implementation. M 92B091, The MITRE Corporation, September 1992.Google Scholar
  13. 13.
    Joshua D. Guttman, John D. Ramsdell, and Vipin Swarup. The VLISP verified Scheme system.Lisp and Symbolic Computation, 8(1/2):33–110, 1995.Google Scholar
  14. 14.
    Joseph Y. Halpern, Albert R. Meyer, and Boris A. Trakhtenbrot. The semantics of local storage, or what makes the free-list free? InConference Record of the Eleventh Annual ACM Symposium on the Principles of Programming Languages, pages 245–257, 1984.Google Scholar
  15. 15.
    IEEE Std 1178–1990.IEEE Standard for the Scheme Programming Language. Institute of Electrical and Electronic Engineers, Inc., New York, NY, 1991.Google Scholar
  16. 16.
    Richard A. Kelsey. Realistic compilation by program transformation. InConf. Rec. 16th Ann. ACM Symp. on Principles of Programming Languages. ACM, 1989.Google Scholar
  17. 17.
    Richard A. Kelsey and Jonathan A. Rees. A tractable Scheme implementation.LISP and Symbolic Computation, 7(4):315–335, 1994.Google Scholar
  18. 18.
    David Kranz, Richard A. Kelsey, Jonathan A. Rees, Paul Hudak, Jim Philbin, and Norman I. Adams. Orbit: An optimizing compiler for Scheme.SIGPLAN Notices, 21(7):219–233, June 1986. Proceedings of the '86 Symposium on Compiler Construction.Google Scholar
  19. 19.
    Albert R. Meyer and Kurt Sieber. Towards fully abstract semantics for local variables: Preliminary report. InConference Record of the Fifteenth Annual ACM Symposium on the Principles of Programming Languages, pages 191–203, 1988.Google Scholar
  20. 20.
    J Strother Moore. Piton: A verified assembly-level language. Technical Report 22. Computational Logic, Inc., Austin, Texas, 1988.Google Scholar
  21. 21.
    Dino P. Oliva, John D. Ramsdell, and Mitchell Wand. The VLISP verified PreScheme compiler.LISP and Symbolic Computation, 8(1/2):111–182, 1995.Google Scholar
  22. 22.
    Dino P. Oliva and Mitchell Wand. A verified compiler for pure PreScheme. Technical Report NU-CCS-92-5, Northeastern University College of Computer Science, February 1992.Google Scholar
  23. 23.
    Dino P. Oliva and Mitchell Wand. A verified runtime structure for pure PreScheme. Technical Report NU-CCS-92-27, Northeastern University College of Computer Science, September 1992.Google Scholar
  24. 24.
    Gordon D. Plotkin. LCF considered as a programming language.Theoretical Computer Science, 5:223–256, 1977.Google Scholar
  25. 25.
    John D. Ramsdell, William M. Farmer, Joshua D. Guttman, Leonard G. Monk, and Vipin Swarup. The VLISP PreScheme front end. M 92B098, The MITRE Corporation, September 1992.Google Scholar
  26. 26.
    David A. Schmidt.Denotational Semantics: A Methodology for Language Development. Wm. C. Brown, Dubuque, IA, 1986.Google Scholar
  27. 27.
    Guy L. Steele. Rabbit: A compiler for Scheme. Technical Report 474, MIT AI Laboratory, 1978.Google Scholar
  28. 28.
    Joseph E. Stoy.Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory. MIT Press, Cambridge, MA, 1977.Google Scholar
  29. 29.
    Vipin Swarup, William M. Farmer, Joshua D. Guttman, Leonard G. Monk, and John D. Ramsdell. The VLISP image builder. M 92B096, The MITRE Corporation, September 1992.Google Scholar
  30. 30.
    Vipin Swarup, William M. Farmer, Joshua D. Guttman, Leonard G. Monk, and John D. Ramsdell. The VLISP byte-code interpreter. M 92B097, The MITRE Corporation, September 1992.Google Scholar
  31. 31.
    Mitchell Wand. Semantics-directed machine architecture. InConf. Rec. 9th ACM Symp. on Principles of Prog. Lang., pages 234–241, 1982.Google Scholar
  32. 32.
    Mitchell Wand and Dino P. Oliva. Proving the correctness of storage representations. InProceedings of the 1992 ACM Conference on LISP and Functional Programming, pages 151–160, New York, 1992. ACM Press.Google Scholar

Copyright information

© Kluwer Academic Publishers 1995

Authors and Affiliations

  • Joshua D. Guttman
    • 1
  • John D. Ramsdell
    • 1
  • Mitchell Wand
    • 2
  1. 1.The MITRE CorporationBedford
  2. 2.College of Computer ScienceNortheastern UniversityBoston

Personalised recommendations