Skip to main content

An approach to verifiable compiling specification and prototyping

  • Algorithmic Programming
  • Conference paper
  • First Online:
Programming Language Implementation and Logic Programming (PLILP 1990)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 456))

Abstract

A compiler may be specified as a set of theorems, each describing how a construct in the programming language is translated into a sequence of machine instructions. The machine may be specified as an interpreter written in the programming language itself. Using refinement algebra, it can then be verified that interpreting a compiled program is the same or better than executing the original source program. The compiling specification is very similar to a logic program and thus a prototype compiler (and interpreter) may easily be produced in a language such as Prolog. A subset of the occam programming language and the transputer instruction set are used to illustrate the approach. An advantage of the method is that new programming constructs can be added without necessarily affecting existing development work.

Funded by the UK IED safemos project: no. IED3/1/1036, “Demonstration of the Possibility of Totally Verified Systems.”

Funded by the ESPRIT BRA ProCoS project: no. 3104, “Provably Correct Systems.”

On leave from the Tata Institute of Fundamental Research, Bombay, India. Funded by the safemos project.

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

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Bowen, J.P. and P.K. Pandya, Specification of the ProCoS level 0 instruction set, ProCoS Project Document OU JB 2, 1990.

    Google Scholar 

  2. Clocksin, W.F. and C.S. Mellish, Programming in Prolog, Springer-Verlag, 1981.

    Google Scholar 

  3. He, Jifeng, Specification oriented semantics for the ProCoS level 0 language, ProCoS Project Document OU HJF 5, 1990.

    Google Scholar 

  4. He, Jifeng and C.A.R. Hoare, Operational Semantics for ProCoS Programming Language Level 0, ProCoS Project Document OU HJF 1, 1989.

    Google Scholar 

  5. Hoare, C.A.R., Refinement algebra proves correctness of compiling specifications, Technical Report PRG-TR-6-90 (also ProCoS Project Document OU CARH 1), Programming Research Group, Oxford University, UK, 1990.

    Google Scholar 

  6. He, Jifeng and J.P. Bowen, Compiling Specification for ProCoS Language PL RO , ProCoS Project Document OU HJF 6, 1990.

    Google Scholar 

  7. He, Jifeng, P.K. Pandya and J.P. Bowen, Compiling Specification for ProCoS level 0 language, ProCoS Project Document OU HJF 4, 1990.

    Google Scholar 

  8. INMOS Limited, Occam 2 Reference Manual, Prentice Hall International Series in Computer Science, 1988.

    Google Scholar 

  9. INMOS Limited, Transputer Instruction Set: A compiler writer's guide, Prentice-Hall International, 1988.

    Google Scholar 

  10. Løvengreen, H.H. and K.M. Jensen: Definition of the ProCoS Programming Language Level 0, ProCoS Project Document ID/DTH HHL 2, 1989.

    Google Scholar 

  11. Nilsson, U. and J. Małuszyński, Logic, Programming and Prolog, John Wiley & Sons, 1990.

    Google Scholar 

  12. Nicoud, J-D. and A.M. Tyrrell, The transputer T414 instruction set, IEEE Micro, pp 60–75, June 1989.

    Google Scholar 

  13. Pandya, P.K. and Jifeng He, A simulation approach to verification of assembling specification of ProCoS level 0 language, ProCoS Project Document OU PKP 3, 1990.

    Google Scholar 

  14. Quintus Prolog — Sun 3 User Manual, Release 2.4 (unix), Quintus Computer Systems, Inc., Mountain View, California, USA, 1988.

    Google Scholar 

  15. Roscoe, A.W. and C.A.R. Hoare, The Laws of Occam Programming, Theoretical Computer Science, 60, pp 177–229, 1988.

    Google Scholar 

  16. Warren, D.H.D., Logic programming and compiler writing, Software—Practice and Experience, 10, pp 97–125, 1980.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Pierre Deransart Jan Maluszyński

Rights and permissions

Reprints and permissions

Copyright information

© 1990 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Bowen, J., Jifeng, H., Pandya, P. (1990). An approach to verifiable compiling specification and prototyping. In: Deransart, P., Maluszyński, J. (eds) Programming Language Implementation and Logic Programming. PLILP 1990. Lecture Notes in Computer Science, vol 456. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0024175

Download citation

  • DOI: https://doi.org/10.1007/BFb0024175

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-53010-7

  • Online ISBN: 978-3-540-46298-9

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics