Semantics and compilation of recursive sequential streams in 81/2

  • Jean-Louis Giavitto
  • Dominique De Vito
  • Olivier Michel
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1292)


Recursive definition of streams (infinite lists of values) have been proposed as a fundamental programming structure in various fields. A problem is to turn such expressive recursive definitions into an efficient imperative code for their evaluation. One of the main approach is to restrict the stream expressions to interpret them as a temporal sequence of values. Such sequential stream rely on a clock analysis to decide at what time a new stream value must be produced. In this paper we present a denotational semantics of recursively defined sequential streams. We show how an efficient implementation can be derived as guarded statements wrapped into a single imperative loop.


stream clock compilation of dataflow graphs 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    G. L. Tesler and H. J. Enea. A language design for concurrent processes. In AFIPS Conference Proceedings, volume 32, pages 403–408, 1968.Google Scholar
  2. 2.
    W. W. Wadge and E. A. Ashcroft. Lucid, the Data flow programming language. Academic Press U. K., 1985.Google Scholar
  3. 3.
    R. C. Waters. Automatic transformation of series expressions into loops. ACM Trans. on Prog. Languages and Systems, 13(1):52–98, January 1991.Google Scholar
  4. 4.
    W. W. Wadge and E. A. Ashcroft. Lucid — A formal system for writing and proving programs. SIAM Journal on Computing, 3:336–354, September 1976.Google Scholar
  5. 5.
    P. Caspi, D. Pilaud, N. Halbwachs, and J. A. Plaice. LUSTRE: A declarative language for programming synchronous systems. In Conference Record of the Fourteenth Annual ACM Symposium on Principles of Programming Languages, pages 178–188, Munich, West Germany, January 21–23, 1987. ACM SIGACT-SIGPLAN, ACM Press.Google Scholar
  6. 6.
    P. Le Guernic, A. Benveniste, P. Bournai, and T. Gautier. Signal, a dataflow oriented language for signal processing. IEEE-ASSSP, 34(2):362–374, 1986.Google Scholar
  7. 7.
    M. C. Chen. A parallel language and its compilation to multiprocessor machines or VLSI. In Principles of Programming Languages, pages 131–139, Florida, 1986.Google Scholar
  8. 8.
    N. Schmitz and J. Greiner. Software aids in PAL circuit design, simulation and verification. Electronic Design, 32(11), May 1984.Google Scholar
  9. 9.
    S. D. Johnson. Synthesis of Digital Designs from Recursion Equations. ACM Distinguished Dissertations. ACM Press, 1983.Google Scholar
  10. 10.
    J.-L. Giavitto. A synchronous data-flow language for massively parallel computer. In D. J. Evans, G. R. Joubert, and H. Liddell, editors, Proc. of Int. Conf. on Parallel Computing (ParCo'91), pages 391–397, London, 3–6 September 1991. North-Holland.Google Scholar
  11. 11.
    K. Chandy and J. Misra. Parallel Program Design — a Foundation. Addison Wesley, 1989.Google Scholar
  12. 12.
    J. A. Plaice, R. Khédri, and R. Lalement. From abstract time to real time. In ISLIP'93: Proc. of the 6th Int. Symp. on Lucid and Intensional programming, 1993.Google Scholar
  13. 13.
    A. Benveniste and G. Berry. Special section: Another look at real-time programming. Proc. of the IEEE, 79(9):1268–1336, September 1991.Google Scholar
  14. 14.
    N. Halbwachs. Synchronous programming of reactive systems. Kluwer Academic publishers, 1993.Google Scholar
  15. 15.
    Paul Caspi. Clocks in dataflow languages. Theoretical Computer Science, 94:125–140, 1992.Google Scholar
  16. 16.
    O. Michel, J.-L. Giavitto, and J.-P. Sansonnet. A data-parallel declarative language for the simulation of large dynamical systems and its compilation. In SMS-TPE'94: Software for Multiprocessors and Supercomputers, Moscow, 21–23 September, 1994. Office of Naval Research USA & Russian Basic Research Foundation.Google Scholar
  17. 17.
    Gilles Kahn. The semantics of a simple language for parallel programming. In proceedings of IFIP Congress'74, pages 471–475. North-Holland, 1974.Google Scholar
  18. 18.
    J. A. Plaice. Sémantique et compilation de LUSTRE un langage déclaratif synchrone. PhD thesis, Institut national polytechnique de Grenoble, 1988.Google Scholar
  19. 19.
    T. P. Jensen. Clock analysis of synchronous dataflow programs. In Proc. of ACM Symposium on Partial, Evaluation and Semantics-Based Program Evaluation, San Diego CA, June 1995.Google Scholar
  20. 20.
    H. R. Andersen and M. Mendler. An asynchronous process algebra with multiple clocks. In D. Sannella, editor, Programming languages and systems — ESOP'94, volume 788 of Lecture Notes in Computer Sciences, pages 58–73, Edinburgh, U.K., April 1994. Springer-Verlag.Google Scholar
  21. 21.
    P.-A. Nguyen. Représentation et construction d'un temps asynchrone pour le langage 81/2, Avril–Juin 1994. Rapport d'option de l'Ecole Polytechnique.Google Scholar
  22. 22.
    Patti Maes. A bottom-up mechanism for behavior selection in an artificial creature. In Bradford Book, editor, proceedings of the first international conference on simulation of adaptative behavior. MIT Press, 1991.Google Scholar
  23. 23.
    P. D. Mosses. Handbook of Theoretical Computer Science, volume 2, chapter Denotational Semantics, pages 575–631. Elsevier Science, 1990.Google Scholar
  24. 24.
    A. Benveniste, P. Le Guernic, and C. Jacquemot. Synchronous programming with events and relations: the SIGNAL language and its semantics. Science of Computer Programming, 16:103–149, 1991.Google Scholar
  25. 25.
    O. Michel. Design and implementation of 81/2, a declarative data-parallel language. Computer Languages, 22(2/3):165–179, 1996. special issue on Parallel Logic Programming.Google Scholar
  26. 26.
    O. Michel, D. De Vito, and J.-P. Sansonnet. 81/2: data-parallelism and data-flow. In E. Ashcroft, editor, Intensional Programming ILProc. of the 9th Int. Symp. on Lucid and Intensional Programming. World Scientific, May 1996.Google Scholar
  27. 27.
    D. De Vito and O. Michel. Effective SIMD code generation for the high-level declarative data-parallel language 81/2. In Euro Micro '96, pages 114–119. IEEE Computer Society, 2–5 September 1996.Google Scholar
  28. 28.
    D. De Vito. Semantics and compilation of sequential streams into a static SIMD code for the declarative data-parallel language 81/2. Technical Report 1044, Laboratoire de Recherche en Informatique, May 1996. 34 pages.Google Scholar
  29. 29.
    N. Halbwachs, P. Raymond, and C. Ratel. Generating efficient code from data-flow programs. In Springer Verlag, editor, 3rd international symposium, PLILP'91, Passau, Germany, volume 528 of Lecture Notes in Computer Sciences, pages 207–218, August 1991.Google Scholar
  30. 30.
    D. C. Cann and P. Evripidou. Advanced array optimizations for high performance functional languages. IEEE Trans. on Parallel and Distributed Systems, 6(3):229–239, March 1995.Google Scholar
  31. 31.
    A. A. Faustini. An operational semantics of pure dataflow. In M. Nielsen and E. M. Schmidt, editors, Automata, languages and programing: ninth colloquium, volume 120 of Lecture Notes in Computer Sciences, pages 212–224. Springer-Verlag, 1982. equivalence sem. op et denotationelle.Google Scholar
  32. 32.
    J.-L. Bergerand. LUSTRE: un langage déclaratif pour le temps réel. PhD thesis, Institut national polytechnique de Grenoble, 1986.Google Scholar
  33. 33.
    A. Benveniste, P. Le Guernic, Y. Sorel, and M. Sorine. A denotational theory of synchronous reactive systems. Information and Computation, 99(2):199–230, 1992.Google Scholar
  34. 34.
    Paul Caspi and Marc Pouzet. Synchronous Kahn networks. In Proceedings of the 1996 ACM SIGPLAN International Conference on Functional Programming, pages 226–238, Philadelphia, Pennsylvania, 24–26 May 1996.Google Scholar
  35. 35.
    W. W. Wadge. An extensional treatment of dataflow deadlock. Theoretical Computer Science, 13(1):3–15, 1981.Google Scholar
  36. 36.
    E. A. Lee and D. G. Messerschmitt. Synchronous dataflow. Proc. of the IEEE, 75(9), September 1987.Google Scholar
  37. 37.
    B. A. Sijtsma. On the productivity of recursive list definitions. ACM Transactions on Programming Languages and Systems, 11(4):633–649, October 1989.Google Scholar
  38. 38.
    R. E. Bryant. Graph based algorithms for boolean function manipulation. IEEE Trans. on Computers, C-35(8):677–691, August 1986.Google Scholar
  39. 39.
    K. K. Parhi and D. G. Messerschmitt. Static rate-optional scheduling of iterative data-flow programs via optimum unfolding,. IEEE Trans. on Computers, 40(2), February 1991.Google Scholar
  40. 40.
    A. Aho, J. Hopcroft, and J. Ullman. The design and analysis of computer algorithms. Addison-Wesley, 1974.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1997

Authors and Affiliations

  • Jean-Louis Giavitto
    • 1
  • Dominique De Vito
    • 1
  • Olivier Michel
    • 1
  1. 1.LRI u.r.a. 410 du CNRSUniversité Paris-SudOrsay CedexFrance

Personalised recommendations