Abstract
The proof rules for the programming language Euclid are closely modelled on the axiomatic definition of Pascal. However, there is intended to be a much closer correspondence between the language as actually implemented and the proof rules. This has been achieved by a combination of language changes, more stringent requirements on the compiler, and modifications of the proof rules. Several novel features of Euclid were introduced specifically in response to problems and limitations of the Pascal definition.
Typical proof rules and proofs for programs using basic language constructs are very similar in Euclid and Pascal. We discuss some of these as a review of Hoare's methodology.
The proof rules for Euclid functions and procedures deviate from those for Pascal, and avoid some of their problems. We discuss the reasons for some of the changes.
Some parts of the Euclid language, such as modules and zones, were motivated by application or implementation considerations. These have been more difficult to axiomatize, and have proved to be some of the most troublesome parts of the language. We mention a few of the problem areas.
These notes should be read in conjunction with the published proof rules.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Ashcroft, E. A., M. Clint, and C. A. R. Hoare [1976]. “Remarks on ‘Program proving: Jumps and functions' by M. Clint and C. A. R. Hoare.” Acta Informatica 6, pp. 317–318.
Clarke, E. M. Jr. [1977]. “Programming language constructs for which it is impossible to obtain good Hoare-like axiom systems.” Conference Record, Fourth ACM Symposium on Principles of Programming Languages, Los Angeles, pp. 10–20.
Clint, M., and C. A. R. Hoare [1972]. “Program proving: Jumps and functions.” Acta Informatica 1, pp. 214–224.
Guttag, John V., James J. Horning, and Ralph L. London [1978]. “A proof rule for Euclid Procedures.” In Formal Description of Programming Concepts, ed. E. J. Neuhold, pp. 211–220, North-Holland, Amsterdam.
Hoare, C. A. R. and N. Wirth [1973]. “An axiomatic definition of the programming language Pascal.” Acta Informatica 2, pp. 335–355.
Ichbiah, J. D., J. P. Rissen, and J. C. Heliard [1973]. “The two-level approach to data definition and space management in the LIS system implementation language.” SIGPLAN Notices 8, no. 9, pp. 79–81.
—,—, and — [1974]. “The two-level approach to data independent programming in the LIS system implementation language.” In Machine Oriented Higher Level Languages, ed. W. L. van der Poel and L. A. Maarssen, pp. 161–174, North-Holland, Amsterdam.
Lampson, B. W., J. J. Horning, R. L. London, J. G. Mitchell, and G. J. Popek [1977]. “Report on the programming language Euclid.” SIGPLAN Notices 12, no. 2.
London, R. L., J. V. Guttag, J. J. Horning, B. W. Lampson, J. G. Mitchell, and G. J. Popek [1978]. “Proof rules for the programming language Euclid.” Acta Informatica 10, pp. 1–26.
Musser, David R. [1977]. “A proof rule for functions.” University of Southern California Information Sciences Institute Technical Report ISI/RR-77-62.
Parnas, D. L. [1971]. “Information distribution aspects of design methodology.” In Proc. IFIP Congress 71. pp. 339–344, North-Holland, Amsterdam.
SIGPLAN [1976]. Special issue on data: abstraction, definition, and structure. SIGPLAN Notices 11.
Wirth, N. [1971]. “The programming language Pascal.” Acta Informatica 1, pp. 35–63.
— [1977]. “Modula: A language for modular multiprogramming.” Software—Practice and Experience 7, pp. 3–35.
—, and K. Jensen [1974]. Pascal—User Manual and Report, Springer-Verlag, New York.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1979 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Horning, J.J. (1979). Verification of Euclid programs. In: Bauer, F.L., et al. Program Construction. Lecture Notes in Computer Science, vol 69. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0014667
Download citation
DOI: https://doi.org/10.1007/BFb0014667
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-09251-3
Online ISBN: 978-3-540-35312-6
eBook Packages: Springer Book Archive