Skip to main content

More Advice on Proving a Compiler Correct: Improve a Correct Compiler

  • Conference paper
Declarative Programming, Sasbachwalden 1991

Part of the book series: Workshops in Computing ((WORKSHOPS COMP.))

  • 35 Accesses

Abstract

One of the objectives of denotational semantics is to give a precise description of programming languages that can serve as a standard against which implementations can be verified, or preferably, from which correct compilers can be derived. We want to use a calculational approach to derive correct and efficient implementations for programming languages from their denotational descriptions. Experience [12] has shown that it is not a good idea to validate an implementation a posteriori, rather development and proof should proceed hand in hand. Besides the correctness aspect, a transformational approach can help to understand the relationships that may or may not exist between various implementations, or even suggest alternative methods. This paper provides a leisurely exposition on the development of a calculational approach to semantics directed compiler generation.

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. Stijn Arts and Reijer Grimbergen. Taking a risc; implementing functional languages on a risc. Master’s thesis, University of Nijmegen, 1990.

    Google Scholar 

  2. R.M. Burstall and P.J. Landin. Programs and their proofs: an algebraic approach. Machine Intelligence, 4, 1969.

    Google Scholar 

  3. J Mc Charthy and J Painter. Correctness of a compiler for arithmetic expressions. In Symposium on Applied Mathematics 19, 1967.

    Google Scholar 

  4. L.M Chirica. Contributions to Compiler Correctness. PhD thesis, University of California at LA, USA, 1976.

    Google Scholar 

  5. C. Consel and O. Danvy. Static and dynamic semantics processing. In Proc. ACM POPL’91, 1991.

    Google Scholar 

  6. ] Kyung Doh and Dave Schmidt. Extracting strong typing laws from action semantics. Technical report, Kansas State University, 1991.

    Google Scholar 

  7. Peter Dybjer. Using domain algebras to prove the correctness of a compiler. In LNCS 182. Springer.

    Google Scholar 

  8. Peter Lee. Realistic Compiler Generation. MIT press, 1990.

    Google Scholar 

  9. John McCarthy. Towards a mathematical science of computation. In Information Processing 1962. IFIP, North-Holland, 1962.

    Google Scholar 

  10. Erik Meijer. A Calculational Approach to Semantics Directed Compiler Generation. PhD thesis, University of Nijmegen, Toernooiveld, Nijmegen, The Netherlands, To Appear.

    Google Scholar 

  11. John-Jules Ch. Meyer. Programming calculi based on fixed point transformations: semantics and applications. PhD thesis, Vrije Universiteit, Amsterdam, 1985.

    Google Scholar 

  12. R.E. Milne and C. Strachey. A Theory of Programming Language Semantics. Wiley, 1976. 2 volumes.

    Google Scholar 

  13. F.L. Morris. Advice on structuring compilers and proving them correct. In ACM POPL 3, pages 144–152, 1973.

    Google Scholar 

  14. P.D. Mosses. Abstract semantic algebras! In D. Bj0rner, editor, Formal Description of Programming Concepts ll, pages 63–88. North-Holland, 1983.

    Google Scholar 

  15. Peter Mosses. A constructive approach to compiler correctness. In LNCS 94: Workshop on Semantics Directed Compiler Generation. Springer, 1980.

    Google Scholar 

  16. Motorola Semiconductors. m88100 Processor Manual.

    Google Scholar 

  17. John C. Reynolds. Definitional interpreters for higher order programming languages. In 25th ACM Anual Conference, pages 717–740, 1972.

    Google Scholar 

  18. David A. Schmidt. Denotational Semantics. Allyn and Bacon, 1986.

    Google Scholar 

  19. Peter Sestoft and Harald Sondergaard. A bibliography on partial evaluation. SIG-PLAN Notices, 23 (2), 1988.

    Google Scholar 

  20. Ravi Sethi. Circular expressions: Elimination of static environments. Science of Computer Programming, 1: 203–222, 1982.

    Google Scholar 

  21. Joseph E. Stoy. Denotational Semantics, The Scott-Strachey Approach to Programming Language Theory. The MIT press, 1977.

    Google Scholar 

  22. J.W. Tatcher, E.0 Wagner, and J.B Wright. More advice on structuring compilers and proving them correct. In LNCS 94: Workshop on Semantics Directed Compiler Generation. Springer, 1980.

    Google Scholar 

  23. D.A. Watt. Executable semantic descriptions. Software Practice and Experience, 16 (1): 13–43, 1986.

    Article  MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 1992 Springer-Verlag London

About this paper

Cite this paper

Meijer, E. (1992). More Advice on Proving a Compiler Correct: Improve a Correct Compiler. In: Darlington, J., Dietrich, R. (eds) Declarative Programming, Sasbachwalden 1991. Workshops in Computing. Springer, London. https://doi.org/10.1007/978-1-4471-3794-8_17

Download citation

  • DOI: https://doi.org/10.1007/978-1-4471-3794-8_17

  • Publisher Name: Springer, London

  • Print ISBN: 978-3-540-19735-5

  • Online ISBN: 978-1-4471-3794-8

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics