Flow Logic: A Multi-paradigmatic Approach to Static Analysis

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


Flow logic is an approach to static analysis that separates the specification of when an analysis estimate is acceptable for a program from the actual computation of the analysis information. It allows one not only to combine a variety of programming paradigms but also to link up with state-of-the-art developments in classical approaches to static analysis, in particular data flow analysis, constraint-based analysis and abstract interpretation. This paper gives a tutorial on flow logic and explains the underlying methodology; the multi-paradigmatic approach is illustrated by a number of examples including functional, imperative, object-oriented and concurrent constructs.


  1. 1.
    M. Abadi and L. Cardelli. A Theory of Objects. Springer, 1996.Google Scholar
  2. 2.
    A. Aiken, M. Fähndrich, J. S. Foster, and Z. Su. A toolkit for constructing type-and constraint-based program analyses. In Proc. TIC’98, 1998.Google Scholar
  3. 3.
    C. Bodei, P. Degano, F. Nielson, and H. Riis Nielson. Static analysis for the π-calculus with applications to security. Information and Computation, to appear, 2000.Google Scholar
  4. 4.
    C. Bodei, P. Degano, F. Nielson, and H. Riis Nielson. Static analysis for secrecy and non-interference in networks of processes. In Proc. PaCT’01, number 2127 in Lecture Notes in Computer Science, pages 27–41. Springer-Verlag, 2001.Google Scholar
  5. 5.
    L. Cardelli and A. Gordon. Mobile ambients. In Proc. FoSSaCS’98, 1998.Google Scholar
  6. 6.
    D. Clement, J. Despeyroux, T. Despeyroux, and G. Kahn. A simple applicative language: Mini-ml. In Proc. L & FP, 1986.Google Scholar
  7. 7.
    P. Cousot and R. Cousot. Abstract Interpretation: a Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In Proc. POPL’ 77, pages 238–252. ACM Press, 1977.Google Scholar
  8. 8.
    K.L.S. Gasser, F. Nielson, and H. Riis Nielson. Systematic realisation of control flow analyses for CML. In Proc. ICFP’97, pages 38–51. ACM Press, 1997.Google Scholar
  9. 9.
    M. S. Hecht. Flow Analysis of Computer Programs. North Holland, 1977.Google Scholar
  10. 10.
    N. Heintze. Set-based analysis of ML programs. In Proc. LFP’ 94, pages 306–317, 1994.Google Scholar
  11. 11.
    R. Milner. A theory of type polymorphism in programming. Journal of Computer Systems, 17:348–375, 1978.MATHCrossRefMathSciNetGoogle Scholar
  12. 12.
    R. Milner, J. Parrow, and D. Walker. A calculus of mobile processes. Information and Computation, 100:1–77, 1992.MATHCrossRefMathSciNetGoogle Scholar
  13. 13.
    R. Milner, M. Tofte, and R. Harper. The definition of Standard ML. MIT Press, 1990.Google Scholar
  14. 14.
    F. Nielson and H. Riis Nielson. Infinitary control flow analysis: a collecting semantics for closure analysis. In Proc. POPL’97, pages 332–345. ACM Press, 1997.Google Scholar
  15. 15.
    F. Nielson and H. Riis Nielson. The flow logic of imperative objects. In Proc. MFCS’98, number 1450 in Lecture Notes in Computer Science, pages 220–228. Springer-Verlag, 1998.Google Scholar
  16. 16.
    F. Nielson and H. Riis Nielson. Flow logics and operational semantics. Electronic Notes of Theoretical Computer Science, 10, 1998.Google Scholar
  17. 17.
    F. Nielson and H. Riis Nielson. Interprocedural control flow analysis. In Proc. ESOP’99, number 1576 in Lecture Notes in Computer Science, pages 20–39. Springer-Verlag, 1999.Google Scholar
  18. 18.
    F. Nielson, H. Riis Nielson, and C. L. Hankin. Principles of Program Analysis. Springer, 1999.Google Scholar
  19. 19.
    F. Nielson, H. Riis Nielson, R. R. Hansen, and J. G. Jensen. Validating firewalls in mobile ambients. In Proc. CONCUR’99, number 1664 in Lecture Notes in Computer Science, pages 463–477. Springer-Verlag, 1999.Google Scholar
  20. 20.
    F. Nielson, H. Riis Nielson, and M. Sagiv. A Kleene analysis of mobile ambients. In Proc. ESOP’00, number 1782 in Lecture Notes in Computer Science, pages 304–319. Springer-Verlag, 2000.Google Scholar
  21. 21.
    H. Riis Nielson and F. Nielson. Flow logics for constraint based analysis. In Proc. CC’98, number 1383 in Lecture Notes in Computer Science, pages 109–127. Springer-Verlag, 1998.Google Scholar
  22. 22.
    H. Riis Nielson and F. Nielson. Shape analysis for mobile ambients. In Proc. POPL’00, pages 142–154. ACM Press, 2000.Google Scholar
  23. 23.
    G. D. Plotkin. A structural approach to operational semantics. Technical Report FN-19, DAIMI, Aarhus University, Denmark, 1981.Google Scholar
  24. 24.
    J. Reppy. Concurrent Programming in ML. Cambridge University Press, 1999.Google Scholar
  25. 25.
    M. Sagiv, T. Reps, and R. Wilhelm. Parametric shape analysis via 3-valued logic. In Proc. POPL’99, 1999.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2002

Authors and Affiliations

  • Hanne Riis Nielson
    • 1
  • Flemming Nielson
    • 1
  1. 1.Informatics and Mathematical ModellingTechnical University of DenmarkDenmark

Personalised recommendations