Productivity of Stream Definitions

  • Jörg Endrullis
  • Clemens Grabmayer
  • Dimitri Hendriks
  • Ariya Isihara
  • Jan Willem Klop
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4639)


We give an algorithm for deciding productivity of a large and natural class of recursive stream definitions. A stream definition is called ‘productive’ if it can be evaluated continuously in such a way that a uniquely determined stream is obtained as the limit. Whereas productivity is undecidable for stream definitions in general, we show that it can be decided for ‘pure’ stream definitions. For every pure stream definition the process of its evaluation can be modelled by the dataflow of abstract stream elements, called ‘pebbles’, in a finite ‘pebbleflow net(work)’. And the production of a pebbleflow net associated with a pure stream definition, that is, the amount of pebbles the net is able to produce at its output port, can be calculated by reducing nets to trivial nets.


Production Function Stream Function Output Port Input Port Stream Element 
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. 1.
    Buchholz, W.: A term calculus for (co-)recursive definitions on streamlike data structures. Annals of Pure and Applied Logic 136(1-2), 75–90 (2005)zbMATHCrossRefMathSciNetGoogle Scholar
  2. 2.
    Coquand, T.: Infinite Objects in Type Theory. In: Barendregt, H., Nipkow, T. (eds.) TYPES 1993. LNCS, vol. 806, pp. 62–78. Springer, Heidelberg (1994)Google Scholar
  3. 3.
    Dijkstra, E.W.: On the productivity of recursive definitions, EWD749 (1980)Google Scholar
  4. 4.
    Endrullis, J., Grabmayer, C., Hendriks, D.: Productivity of Stream Definitions. Technical report, Vrije Universiteit Amsterdam (2007), Available via
  5. 5.
    Hughes, J., Pareto, L., Sabry, A.: Proving the correctness of reactive systems using sized types. In: POPL 1996, pp. 410–423 (1996)Google Scholar
  6. 6.
    Kahn, G.: The semantics of a simple language for parallel programming. Information Processing, 471–475 (1974)Google Scholar
  7. 7.
    Kennaway, R., Klop, J.W., Sleep, M.R., de Vries, F.-J.: Transfinite reductions in orthogonal term rewriting systems. Inf. and Comput. 119(1), 18–38 (1995)zbMATHCrossRefGoogle Scholar
  8. 8.
    Kennaway, R., Klop, J.W., Sleep, M.R., de Vries, F.-J.: Infinitary lambda calculus. TCS 175(1), 93–125 (1997)zbMATHCrossRefGoogle Scholar
  9. 9.
    Klop, J.W., de Vrijer, R.: Infinitary normalization. In: We Will Show Them: Essays in Honour of Dov Gabbay (2). College Publications, pp. 169–192 (2005), Item 95 at
  10. 10.
    Lafont, Y.: Interaction nets. In: POPL 1990, pp. 95–108. ACM Press, New York (1990)CrossRefGoogle Scholar
  11. 11.
    Rutten, J.J.M.M.: Behavioural differential equations: a coinductive calculus of streams, automata, and power series. TCS 308(1-3), 1–53 (2003)zbMATHCrossRefMathSciNetGoogle Scholar
  12. 12.
    Sijtsma, B.A.: On the productivity of recursive list definitions. ACM Transactions on Programming Languages and Systems 11(4), 633–649 (1989)CrossRefGoogle Scholar
  13. 13.
    Tait, W.W.: Intentional interpretations of functionals of finite type I. Journal of Symbolic Logic 32(2) (1967)Google Scholar
  14. 14.
    Telford, A., Turner, D.: Ensuring the Productivity of Infinite Structures. Technical Report 14-97, The Computing Laboratory, Univ. of Kent at Canterbury (1997)Google Scholar
  15. 15.
    Terese: Term Rewriting Systems. Cambridge Tracts in Theoretical Computer Science, vol. 55. Cambridge University Press, Cambridge (2003)Google Scholar
  16. 16.
    Wadge, W.W.: An extensional treatment of dataflow deadlock. TCS 13, 3–15 (1981)zbMATHCrossRefMathSciNetGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2007

Authors and Affiliations

  • Jörg Endrullis
    • 1
  • Clemens Grabmayer
    • 3
  • Dimitri Hendriks
    • 1
  • Ariya Isihara
    • 1
  • Jan Willem Klop
    • 1
    • 2
  1. 1.Vrije Universiteit Amsterdam, Department of Computer Science, De Boelelaan 1081a, 1081 HV AmsterdamThe Netherlands
  2. 2.Radboud Universiteit Nijmegen, Department of Computer Science, Toernooiveld 1, 6525 ED NijmegenThe Netherlands
  3. 3.Universiteit Utrecht, Department of Philosophy, Heidelberglaan 8, 3584 CS UtrechtThe Netherlands

Personalised recommendations