Semantics-directed program analysis: A tool-maker's perspective

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


Developing a tool kit for program analysis requires a general metalanguage (or user interface) in which to specify the program analyses, and many past and current approaches are semantics-directed in the sense that they attempt to exploit the structure of the semantics of the program. In this paper we take a tool-maker's perspective at an approach based on two-level semantics, focusing on the flexible way to incorporate and combine a repertoire of program analyses. We conclude by identifying a number of key considerations for the design of semantics-directed frameworks or tool kits for program analysis.


Program Analysis Abstract Interpretation Denotational Semantics Two-Level Metalanguages Tools for Program Analysis 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    M. Alt and F. Martin. Generation of Efficient Interprocedural Analyzers with PAG. In Proc. SAS '95, SLNCS 983, pages 33–50. Springer-Verlag, 1995.Google Scholar
  2. 2.
    G. L. Burn, C. Hankin, and S. Abramsky. Strictness Analysis for Higher-Order Functions. Science of Computer Programming, 7:249–278, 1986.CrossRefGoogle Scholar
  3. 3.
    P. Cousot and R. Cousot. Abstract Interpretation: a Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In Proc. 4th POPL, pages 238–252. ACM Press, 1977.Google Scholar
  4. 4.
    P. Cousot and N. Halbwachs. Automatic Discovery of Linear Restraints Among Variables of a Program. In Proc. 5th POPL, pages 84–97. ACM Press, 1978.Google Scholar
  5. 5.
    C. Flanagan and M. Felleisen. The Semantics of Future and Its Use in Program Optimization. In Proc. POPL '95, pages 209–220. ACM Press, 1995.Google Scholar
  6. 6.
    C. W. Fraser, D. R. Hanson, and T. A. Proebsting. Engineering a Simple, Efficient Code-Generator Generator. ACM Letters on Programming Languages and Systems, 1(3):213–226, 1992.Google Scholar
  7. 7.
    N. Heintze. Set-Based Analysis of ML Programs. In Proc. LFP'94, pages 306–317, 1994.Google Scholar
  8. 8.
    J. Hughes. Backward Analysis of Functional Programs. In Partial Evaluation and Mixed Computation, pages 187–208. North-Holland, 1988.Google Scholar
  9. 9.
    N. D. Jones and F. Nielson. Abstract Interpretation: a Semantics-Based Tool for Program Analysis. In Handbook of Logic in Computer Science volume 4. Oxford University Press, 1995.Google Scholar
  10. 10.
    J. B. Kam and J. D. Ullman. Monotone Data Flow Analysis Frameworks. Acta Informatica, 7:305–317, 1977.CrossRefGoogle Scholar
  11. 11.
    A. Mycroft and F. Nielson. Strong Abstract Interpretation using Power-Domains. In Proc. ICALP '83, SLNCS 154, pages 536–547. Springer-Verlag, 1983.Google Scholar
  12. 12.
    F. Nielson. Tensor Products Generalize the Relational Data Flow Analysis Method. In Proc. 4th Hungarian Computer Science Conference, pages 211–225, 1985.Google Scholar
  13. 13.
    F. Nielson. Abstract Interpretation of Denotational Definitions. In Proc. STACS '86, SLNCS 210, pages 1–20. Springer-Verlag, 1986.Google Scholar
  14. 14.
    F. Nielson. Expected Forms of Data Flow Analysis. In Proc. Programs as Data Objects, SLNCS 217, pages 172–191. Springer-Verlag, 1986.Google Scholar
  15. 15.
    F. Nielson. Towards a Denotational Theory of Abstract Interpretation. In S. Abramsky and C. Hankin, editors, Abstract Interpretation of Declarative Languages, pages 219–245. Ellis-Horwood, 1987.Google Scholar
  16. 16.
    F. Nielson. A Formal Type System for Comparing Partial Evaluators. In D. BjØrner, A. P. Ershov, and N. D. Jones, editors, Partial Evaluation and Mixed Computation, pages 349–384. North-Holland, 1988.Google Scholar
  17. 17.
    F. Nielson. Strictness Analysis and Denotational Abstract Interpretation. Information and Computation, 76:29–92, 1988.Google Scholar
  18. 18.
    F. Nielson. Two-Level Semantics and Abstract Interpretation. Theoretical Computer Science — Fundamental Studies, 69:117–242, 1989.Google Scholar
  19. 19.
    F. Nielson and H. R. Nielson. Two-Level Semantics and Code Generation. Theoretical Computer Science, 56(1):59–133, 1988.CrossRefGoogle Scholar
  20. 20.
    F. Nielson and H. R. Nielson. Two-Level Functional Languages. Cambridge Tracts in Theoretical Computer Science volume 34. Cambridge University Press, 1992.Google Scholar
  21. 21.
    F. Nielson and H. R. Nielson. Multi-Level Lambda-Calculi: an Algebraic Description. In Proc. Dagstuhl Seminar on Partial Evaluation, SLNCS (to appear). Springer-Verlag, 1996.Google Scholar
  22. 22.
    H. R. Nielson and F. Nielson. Pragmatic Aspects of Two-Level Denotational Meta-Languages. In Proc. ESOP '86, SLNCS 213. Springer-Verlag, 1986.Google Scholar
  23. 23.
    H. R. Nielson, F. Nielson, A. Pilegaard, and T. Lange. The PSI System. Technical Report DAIMI IR-114, Department of Computer Science, Aarhus University, Denmark, 1992.Google Scholar
  24. 24.
    L. Paulson. Compiler Generation from Denotational Semantics. In B. Lorho, editor, Methods and Tools for Compiler Construction, pages 219–250. Cambridge University Press, 1984.Google Scholar
  25. 25.
    G. D. Plotkin. A Structural Approach to Operational Semantics. Technical Report FN-19, DAIMI, Aarhus University, Denmark, 1981 (reprinted 1991).Google Scholar
  26. 26.
    D. Schmidt. Natural-Semantics-Based Abstract Interpretation. In Proc. SAS '95, SLNCS 983, pages 1–18. Springer-Verlag, 1995.Google Scholar
  27. 27.
    J. E. Stoy. Denotational Semantics: the Scott-Strachey Approach to Programming Language Theory. MIT Press, 1977.Google Scholar
  28. 28.
    J.-P. Talpin and P. Jouvelot. The Type and Effect Discipline. In Proc. LICS '92, pages 162–173, 1992.Google Scholar
  29. 29.
    S. Tjiang and J. Hennessy. Sharlit — a Tool for Building Optimizers. In Proc. PLDI '92. ACM Press, 1992.Google Scholar
  30. 30.
    G. V. Venkatesh and C. N. Fischer. Spare: a Development Environment for Program Analysis Algorithms. IEEE Transactions on Software Engineering, 1992.Google Scholar
  31. 31.
    A. N. Whitehead and B. Russell. Principia Mathematica. Cambridge University Press, 1910 (reprinted 1950).Google Scholar
  32. 32.
    R. Wilhelm. Global Flow Analysis and Optimization in the MUG2 Compiler Generating System. In S. S. Muchnick and N. D. Jones, editors, Program Flow Analysis: Theory and Applications, chapter 5. Prentice-Hall, 1981.Google Scholar
  33. 33.
    K. Yi and W. L. Harrison III. Automatic Generation and Management of Interprocedural Program Analyses. In Proc. POPL '93, pages 246–259. ACM Press, 1993.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1996

Authors and Affiliations

  • Flemming Nielson
    • 1
  1. 1.Computer Science DepartmentAarhus UniversityAarhus CDenmark

Personalised recommendations