Skip to main content
Log in

Design and correctness of a compiler for a non-procedural language

  • Published:
Acta Informatica Aims and scope Submit manuscript

Summary

Design and correctness proof of a compiler for Lucid, a non-procedural proof-oriented programming language, are given. Starting with the denotational semantics of Lucid, an equivalent operational semantics is derived, and from it the design of compiling algorithms. The algorithms are proved to compile correctly a subset of the language. A discussion of the design choices and of the subset restrictions gives insight into the nature of Lucid as well as into the problem of compiling related non-procedural languages.

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

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Allen, F.E.: Program optimization. In: Annl. review of autom. programming (Halpern, Shaw, eds.), Vol. 5, pp. 239–308. New York: Pergamon 1969

    Google Scholar 

  2. Ashcroft, E.A.: Program proving without tears. Proc. of the Intl. Symp. on Proving and Improving Programs, pp. 99–111, Senans, France, July 1975

    Google Scholar 

  3. Ashcroft, E.A., Wadge, W.: Lucid, a non-procedural language with iteration. Comm. ACM 20, 7, 519–526 (1977)

    Google Scholar 

  4. Ashcroft, E.A., Wadge, W.: Lucid, a formal system for writing and proving programs. SIAM J. Comput. 5, 336–354 (1976)

    Google Scholar 

  5. Ashcroft, E.A., Wadge, W.: Lucid, scope structures and defined functions. Tech. Rept. CS-76-22, Dept. of Comp. Sci., University of Waterloo, Nov. 1976, 28 pp.

  6. Cargill, T.A.: Deterministic operational semantics for Lucid. Tech. Rept. CS-76-19, Dept. of Comp. Sci., University of Waterloo, June 1976, 35 pp.

  7. Chirica, L.M., Martin, D.F.: An approach to compiler correctness. Intl. Conf. on Reliable Software, June 1976, pp. 96–103

  8. Dennis, J.B.: First version of a data-flow language. Proj. MAC Memo 61, MIT, May 1975

  9. Floyd, R.W.: Assigning meaning to programs. In: Math, aspects of comp. sci., Vol. 19, pp. 19–32. Providence, R.I.:

  10. Guttag, J.: Abstract data types and the development of data structures. Suppl. of Proc. of ACM Conf. on Data, Salt Lake City, Utah, Mar. 1976, pp. 37–46

  11. Hoare, C.A.R., Wirth, N.: An axiomatic definition of the programming language PASCAL. Acta Informat. 2, 335–355 (1973)

    Google Scholar 

  12. Hoffmann, C.M.: Design and correctness proof of a compiler for Lucid. Tech. Rept. CS-76-20, Dept. of Comp. Sci., Univ. of Waterloo, May 1976, 85 pp.

  13. Kosinski, P.R.: A data-flow programming language. IBM Res. Rept. RC-4264, Mar. 1973, 134 pp.

  14. London, R.L.: Correctness of two compilers for a LISP subset. A.I.Memo 151, Stanford Univ., 1971

  15. McCarthy, J., Painter, J.A.: Correctness of a compiler for arithmetic expressions. In: Math. aspects of comp. sci., Vol. 19. Providence, R.I.: 1967

  16. Miller, R.E., Cocke, J.: Configurable computers: A new class of general purpose machines. IBM Res. Rept. RC-3897, June 1972, 14 pp.

  17. Milner, R., Weyrauch, R.: Proving compiler correctness in a mechanized logic. Machine Intelligence, Vol. 7, pp. 51–71, Univ. of Edinburgh, 1973

    Google Scholar 

  18. Morris, F.L.: Advice on strucuring compilers and proving them correct. ACM Symp. on Principles of Progr. Lang. Boston, 1973, pp. 144–152

  19. Rumbaugh, J.E.: A parallel asynchronous architecture for data-flow languages. MIT Proj. MAC Rept. TR-150, May 1975, 319 pp.

  20. VanEmden, M.: Verification conditions as representation for programs. Res. Rept. CS-76-03, Dept. of Comp. Sci., Univ. of Waterloo, Jan. 1976, 21 pp.

Download references

Author information

Authors and Affiliations

Authors

Additional information

Work supported by the National Research Council of Canada

Rights and permissions

Reprints and permissions

About this article

Cite this article

Hoffmann, C.M. Design and correctness of a compiler for a non-procedural language. Acta Informatica 9, 217–241 (1978). https://doi.org/10.1007/BF00288883

Download citation

  • Received:

  • Issue Date:

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

Keywords

Navigation