ESPRIT ’90 pp 804-818 | Cite as

An Algebraic Approach to Verifiable Compiling Specification and Prototyping of the Procos Level 0 Programming Language

  • C. A. R. Hoare
  • He Jifeng
  • Jonathan Bowen
  • Paritosh Pandya


A compiler is specified by a description of how each construct of the source language is translated into a sequence of object code instructions. The meaning of the object code can be defined by an interpreter written in the source language itself. A proof that the compiler is correct must show that interpretation of the object code is at least good (for any relevant purpose) as the corresponding source program. The proof is conducted using standard techniques of data refinement. All the calculations are based on algebraic laws governing the source language. The theorems are expressed in a form close to a logic program, which may used as a compiler prototype, or a check on the results of a particular compilation. 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 it is possible to add new programming constructs without affecting existing development work.


Logic Program Memory Location Source Language Finish Address Machine Code 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    Bj’rner, D. (1990) ESPRIT BRA 3104: Provably Correct Systems ProCoS Interim Deliverable, ProCoS doc. id. [ID/DTH DB 8].Google Scholar
  2. [2]
    Bowen, J.P. and Pandya, P.K. (1990) Specification of the ProCoS level 0 instruction set, ProCoS doc. id. [OU JB 2].Google Scholar
  3. Bowen, J.P., He, Jifeng and Pandya, P.K. (1990) An Approach to Verifiable Compiling Specification and Prototyping, Proc. PLILP90, Workshop on Programming Language Implementation and Logic Programming, Linköping, Sweden, 20–22 August 1990.Google Scholar
  4. [4]
    Clocksin, W.F. and Mellish, C.S. (1981) Programming in Prolog, Springer-Verlag, Berlin.zbMATHGoogle Scholar
  5. [5]
    He, Jifeng and Hoare, C.A.R. (1989) Operational Semantics for ProCoS Programming Language Level 0, ProCoS doc. id. [OU HJF 1].Google Scholar
  6. [6]
    He, Jifeng, Pandya, P.K. and Bowen, J.P. (1990) Compiling Specification for ProCoS level 0 language, ProCoS doc. id. [OU HJF 4].Google Scholar
  7. [7]
    He, Jifeng (1990) Specification oriented semantics for the ProCoS level 0 language, ProCoS doc. id. [OU HJF 5].Google Scholar
  8. [8]
    He, Jifeng, Bowen, J.P. (1990) Compiling Specification for ProCoS Language PLOR, ProCoS doc. id. [OU HJF 6].Google Scholar
  9. [9]
    Hoare, C.A.R. (1990) Refinement algebra proves correctness of compiling specifications, Technical Report PRG-TR-6-90, Programming Research Group, Oxford University, (also ProCoS doc. id. [OU CARH 1]).Google Scholar
  10. [10]
    INMOS Limited (1988) Occam 2 Reference Manual, Prentice Hall International Series in Computer Science, UK.Google Scholar
  11. [11]
    INMOS Limited (1988) Transputer Instruction Set: A compiler writer’s guide, Prentice-Hall International, UK.Google Scholar
  12. [12]
    L’vengreen, H.H. and Jensen, K.M. (1989) Definition of the ProCoS Programming Language Level 0, ProCoS doc. id. [ID/DTH HHL 2].Google Scholar
  13. Nicoud, J-D. and Tyrrell, A.M. (1989) The Transputer T414 Instruction Set, IEEE Micro, pp. 60 – 75.Google Scholar
  14. [14]
    Nilsson, U. and Maluszynski, J. (1990) Logic, Programming and Prolog, John Wiley fc Sons, Chichester, UK.Google Scholar
  15. [15]
    Pandya, P.K. and He, Jifeng (1990) A simulation approach to verification of assembling specification of ProCoS level 0 language, ProCoS doc. id. [OU PKP 3].Google Scholar
  16. [16]
    Quintus Computer Systems, Inc. (1990) Quintus Prolog - Sun 3 & Sun 4 User Manual, Release 2.5, Mountain View, California, USA.Google Scholar
  17. [17]
    Roscoe, A.W. and Hoare, C.A.R. (1988) The Laws of Occam Programming, Theoretical Computer Science, 60, pp. 177 – 229.MathSciNetzbMATHCrossRefGoogle Scholar
  18. [18]
    Warren, D.H.D. (1980) Logic programming and compiler writing, Software—Practice and Experience, 10, pp. 97 – 125.zbMATHCrossRefGoogle Scholar

Copyright information

© ECSC, EEC, EAEC, Brussels and Luxembourg 1990

Authors and Affiliations

  • C. A. R. Hoare
    • 1
  • He Jifeng
    • 1
  • Jonathan Bowen
    • 1
  • Paritosh Pandya
    • 1
  1. 1.Programming Research GroupOxford University Computing LaboratoryOxfordEngland

Personalised recommendations