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.
Preview
Unable to display preview. Download preview PDF.
References
Bowen, J.P. and P.K. Pandya, Specification of the ProCoS level 0 instruction set, ProCoS Project Document OU JB 2, 1990.
Clocksin, W.F. and C.S. Mellish, Programming in Prolog, Springer-Verlag, 1981.
He, Jifeng, Specification oriented semantics for the ProCoS level 0 language, ProCoS Project Document OU HJF 5, 1990.
He, Jifeng and C.A.R. Hoare, Operational Semantics for ProCoS Programming Language Level 0, ProCoS Project Document OU HJF 1, 1989.
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.
He, Jifeng and J.P. Bowen, Compiling Specification for ProCoS Language PL RO , ProCoS Project Document OU HJF 6, 1990.
He, Jifeng, P.K. Pandya and J.P. Bowen, Compiling Specification for ProCoS level 0 language, ProCoS Project Document OU HJF 4, 1990.
INMOS Limited, Occam 2 Reference Manual, Prentice Hall International Series in Computer Science, 1988.
INMOS Limited, Transputer Instruction Set: A compiler writer's guide, Prentice-Hall International, 1988.
Løvengreen, H.H. and K.M. Jensen: Definition of the ProCoS Programming Language Level 0, ProCoS Project Document ID/DTH HHL 2, 1989.
Nilsson, U. and J. Małuszyński, Logic, Programming and Prolog, John Wiley & Sons, 1990.
Nicoud, J-D. and A.M. Tyrrell, The transputer T414 instruction set, IEEE Micro, pp 60–75, June 1989.
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.
Quintus Prolog — Sun 3 User Manual, Release 2.4 (unix), Quintus Computer Systems, Inc., Mountain View, California, USA, 1988.
Roscoe, A.W. and C.A.R. Hoare, The Laws of Occam Programming, Theoretical Computer Science, 60, pp 177–229, 1988.
Warren, D.H.D., Logic programming and compiler writing, Software—Practice and Experience, 10, pp 97–125, 1980.
Author information
Authors and Affiliations
Editor information
Rights 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