Correctness of code generation from a two-level meta-language

Extended abstract
  • Flemming Nielson
Part of the Lecture Notes in Computer Science book series (LNCS, volume 213)


We present a two-level denotational metalanguage suitable for defining programming languages with procedures as second class citizens. Code generation is developed for a slight restriction of this metalanguage and this generalizes previous algebraic approaches. This paper focuses on the correctness proof of the code generation; in particular the method used for directly proving equivalence between an operational and a denotational semantics and the modification of Reynolds' idea of a relational functor.


Code Generation Abstract Interpretation Correctness Proof Program Counter Springer Lecture Note 
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.


  1. Backus, J., Can Programming Be Liberated from the von Neuman Style, CACM Vol. 21 No. 8 (1978).Google Scholar
  2. Cardelli, L., The Functional Abstract Machine, Bell Labs Technical Report TR-107 (1983).Google Scholar
  3. Cousot, P., and Cousot, R., Systematic Design of Program Analysis Framework, 6th POPL (1979).Google Scholar
  4. Dybjer, P., Using Domain Algebras to Prove the Correctness of a Compiler, STACS 1985, Springer Lecture Notes in Computer Science.Google Scholar
  5. Gordon, M., The Denotational Description of Programming Languages, Springer Verlag (1979).Google Scholar
  6. Milne, R., and Strachey, C., A Theory of Programming Language Semantics, Chapman and Hall (1976).Google Scholar
  7. Milner, R., An Algebraic Definition of Simulation between Programs, in: Proceedings of 2nd International Conference on Artificial Intelligence, British Comp. Soc. (1971).Google Scholar
  8. Morris, F.L., Advice on Structuring Compilers and Proving Them Correct, POPL 1973, pp. 144–152.Google Scholar
  9. Mosses, P.D., A Constructive Approach to Compiler Correctness, ICALP 1980, Springer Lecture Notes in Computer Science.Google Scholar
  10. Nielson, F., Abstract Interpretation using Domain Theory, Ph.D. thesis, University of Edinburgh (1984).Google Scholar
  11. Nielson, H.R., and Nielson, F., Pragramatic Aspects of Two-level Metalanguages, these proceedings (1986).Google Scholar
  12. Nielson, F., and Nielson, H.R., Code Generation from Two-level Denotational Meta-Languages, in the proceedings from "Programs as Data Objects", (Copenhagen 1985), Springer Lecture Notes in Computer Science.Google Scholar
  13. Reynolds, J., On the Relation between Direct and Continuation Semantics, ICALP 1974, Springer Lecture Notes in Computer Science, vol. 14.Google Scholar
  14. Smyth, M., and Plotkin, G.D., The Category-Theoretic Solution of Recursive Domain Equations, SIAM J. Comput., Vol. 11 No. 4 (1982).Google Scholar
  15. Tennent, R.D., Principles of Programming Languages, Prentice-Hall (1981).Google Scholar
  16. Thatcher, J.W., and Wagner, E.G., and Wright, J.B., More on Advice on Structuring Compilers and Proving Them Correct, 6th ICALP (1979).Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1986

Authors and Affiliations

  • Flemming Nielson
    • 1
  1. 1.Institute of Electronic SystemsAalborg University CentreAalborg CDenmark

Personalised recommendations