A type-based algorithm for the control-flow analysis of higher-order concurrent programs

  • Mourad Debbabi
  • Ali Faour
  • Nadia Tawbi
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1268)


We address, in a type-based framework, the problem of control-flow analysis for concurrent and functional languages. We present an efficient algorithm that propagates automatically types, communication effects and call graphs. The algorithm comes with a logical characterization that consists of a type proof system. The latter operates on a Concurrent ML core-syntax: a strongly typed, polymorphic kernel that supports higher-order functions and concurrency primitives. Effects are represented as algebraic terms that record communication effects resulting from channel creation, sending and receiving. Call graphs record function calls and are captured by a term algebra that is close to usual process algebras. Types are annotated with effects and call graphs. For the sake of flexibility, a subtyping relation is considered on the type algebra. We present the language syntax together with its static semantics that consists of the typing rules and an inference algorithm. The latter is proved to be sound with respect to the typing rules.


Communication Effect Type Scheme Inference Algorithm Static Semantic Typing Rule 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [ASU86]
    A. V. Aho, R. Sethi, and J. D. Ullman. Compilers principles, techniques, and tools. Addison-Wesley, Reading, MA, 1986.Google Scholar
  2. [BD93a]
    D. Bolignano and M. Debbabi. A coherent type inference system for a concurrent, functional and imperative programming language. In Proceedings of the AMAST'93 Conference. Springer Verlag, June 1993.Google Scholar
  3. [BD93b]
    D. Bolignano and M. Debbabi. A denotational model for the integration of concurrent functional and imperative programming. In Proceedings of the ICCI'93 Conference. IEEE, May 1993.Google Scholar
  4. [BD94]
    D. Bolignano and M. Debbabi. A semantic theory for CML. In Proceedings of the TACS'94 Conference. Springer Verlag, April 1994.Google Scholar
  5. [BMT92]
    D. Berry, A.J.R.G. Milner, and D. Turner. A semantics for ML concurrency primitives. In Proc. 17th ACM Symposium on Principles of Programming Languages, 1992.Google Scholar
  6. [CC92]
    P. Cousot and R. Cousot. Inductive definitions, semantics, and abstract interpretation. In Conference Record of the 19th Annual ACM Symposium on Principles of Programming Languages, pages 83–94, Albuquerque, NM, January 1992.Google Scholar
  7. [Deb94]
    M. Debbabi. Intégration des paradigmes de programmation paralléle, fonctionnelle et imperative: fondements sémantiques. Université Paris Sud, Centre d'Orsay, July 1994. These de Doctorat.Google Scholar
  8. [DM82]
    L. M. M. Damas and R. Milner. Principal type schemes for functional programs. In Proceedings of the 9th ACM Symposium on Principles of Programming Languages, Albuquerque, pages 207–212, New York, NY, 1982. ACM.Google Scholar
  9. [GJLS87]
    D.K. Gifford, P. Jouvelot, J.M. Lucassen, and M.A. Sheldon. Fx-87 reference manual. Technical Report MIT/LCS/TR-407, MIT Laboratory for Computer Science, September 1987.Google Scholar
  10. [Ler92]
    X. Leroy. Typage polymorphe d'un langage algorithmique. PhD thesis, Université de Paris VII, June 1992.Google Scholar
  11. [Mil89]
    A.J.R.G. Milner. Communication and Concurrency. Prentice-Hall, 1989.Google Scholar
  12. [Mil91]
    A.J.R.G. Milner. A calculus of communicating systems. In Lecture Notes in Computer Science 92, pages 281–305. Springer-Verlag, 1991.Google Scholar
  13. [NN94a]
    F. Nielson and A. R. Nielsen. Constraints for polymorphic behaviours of concurrent ML. Lecture Notes in Computer Science, 845:73–--, 1994.Google Scholar
  14. [NN94b]
    Hanne Riis Nielson and Flemming Nielson. Higher-order concurrent programs with finite communication topology. In Conference Record of the 21st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'94), pages 84–97, Portland, Oregon, January 17–21, 1994. ACM Press. Extended abstract.Google Scholar
  15. [Rep91a]
    J.H. Reppy. CML: A higher-order concurrent language. In Proceedings of the ACM SIGPLAN '91 PLDI, pages 294–305. SIGPLAN Notices 26(6), 1991.Google Scholar
  16. [Rep91b]
    J.H Reppy. An operational semantics of first-class synchronous operations. Technical Report TR 91–1232, Department of Computer Science, Cornell University, August 1991.Google Scholar
  17. [Shi88]
    O. Shivers. Control flow analysis in scheme. In Proceedings of the ACM SIGPLAN '88 Conference on Programming Language Design and Implementation, volume 23, pages 164–174, Atlanta, GA, June 1988.Google Scholar
  18. [Shi90]
    O. Shivers. Control-Flow Analysis of Higher-Order Languages or Taming Lambda. PhD thesis, School of Computer Science, Carnegie Mellon University, May 1990. also published as CMU Technical Report CMU-CS-91–145.Google Scholar
  19. [Tan94]
    Y. M. Tang. Systèmes d'Effet et Interprétation Abstraite pour l'Analyse de Flot de Controle. PhD thesis, Université de Paris VI, March 1994.Google Scholar
  20. [Tho93]
    B. Thomsen. Polymorphic sorts and types for concurrent functional programs. Technical Report Draft, ECRC, Munich, March 1993.Google Scholar
  21. [TJ92]
    J. Talpin and P. Jouvelot. The type and effect discipline. In Proc. Logic in Computer Science, 1992.Google Scholar
  22. [TJ94]
    Y. M. Tang and P. Jouvelot. Separate abstract interpretation for control-flow analysis. In Proceedings of the TACS'94 Conference. Springer Verlag, April 1994.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1997

Authors and Affiliations

  • Mourad Debbabi
    • 1
  • Ali Faour
    • 1
  • Nadia Tawbi
    • 1
  1. 1.Computer Science DepartmentLaval UniversityQuebecCanada

Personalised recommendations