Skip to main content
  • Get access
    Check if you have access via personal or institutional login
  • Cited by 5
  • Cited by
    This chapter has been cited by the following publications. This list is generated based on data provided by CrossRef.

    Bourke, Timothy Brun, Lélio Dagand, Pierre-Évariste Leroy, Xavier Pouzet, Marc and Rieg, Lionel 2017. A formally verified compiler for Lustre. p. 586.

    Bourke, Timothy Brun, Lélio Dagand, Pierre-Évariste Leroy, Xavier Pouzet, Marc and Rieg, Lionel 2017. A formally verified compiler for Lustre. ACM SIGPLAN Notices, Vol. 52, Issue. 6, p. 586.

    Dockins, Robert 2014. Interactive Theorem Proving. Vol. 8558, Issue. , p. 209.

    Nakata, Keiko 2011. Resumption-based big-step and small-step interpreters for While with interactive I/O. Electronic Proceedings in Theoretical Computer Science, Vol. 66, Issue. , p. 226.

    Benton, Nick Kennedy, Andrew and Varming, Carsten 2009. Theorem Proving in Higher Order Logics. Vol. 5674, Issue. , p. 115.

  • Print publication year: 2009
  • Online publication date: August 2010

17 - A constructive denotational semantics for Kahn networks in Coq



Semantics of programming languages and interactive environments for the development of proofs and programs are two important aspects of Gilles Kahn's scientific contributions. In his paper “The semantics of a simple language for parallel programming”, he proposed an interpretation of (deterministic) parallel programs (now called Kahn networks) as stream transformers based on the theory of complete partial orders (cpos). A restriction of this language to synchronous programs is the basis of the data-flow Lustre language which is used for the development of critical embedded systems.

We present a formalization of this seminal paper in the Coq proof assistant. For that purpose, we developed a general library for cpos. Our cpos are defined with an explicit function computing the least upper bound (lub) of an increasing sequence of elements. This is different from what Kahn developed for the standard Coq library where only the existence of lubs (for arbitrary directed sets) is required, giving no way to explicitly compute a fixpoint. We define a cpo structure for the type of possibly infinite streams. It is then possible to define formally what is a Kahn network and what is its semantics, achieving the goal of having the concept closed under composition and recursion. The library is illustrated with an example taken from the original paper as well as the Sieve of Eratosthenes, an example of a dynamic network.

Recommend this book

Email your librarian or administrator to recommend adding this book to your organisation's collection.

From Semantics to Computer Science
  • Online ISBN: 9780511770524
  • Book DOI:
Please enter your name
Please enter a valid email address
Who would you like to send this to *
[1]P., Audebaud and C., Paulin-Mohring. Proofs of randomized algorithms in Coq. In T., Uustalu (ed.) Mathematics of Program Construction, MPC 2006, volume 4014, Lecture Notes in Computer Science, Kuressaare, Estonia, July 2006. Springer-Verlag, 2006.
[2]P., Audebaud and C., Paulin-Mohring. Proofs of randomized algorithms in Coq. To appear in Science of Computer Programming. Extended version of [1].
[3]Y., Bertot. Filters on coinductive streams, an application to Eratos thenes'sieve. In P., Urzyczyn (ed.) International Conference of Typed Lambda Calculi and Applications, volume 3461, Lecture Notes in Computer Science, pp. 102–115. Springer-Verlag, 2005.
[4]Y., Bertot and P., Castéran. Interactive Theorem Proving and Program Development. Springer-Verlag, 2004.
[5]S., Boulmé and G., Hamon. Certifying synchrony for free. In International Conference on Logic for Programming, Artificial Intelligence and Reasoning (LPAR), volume 2250, Lecture Notes in Artificial Intelligence, La Havana, Cuba, December 2001. Springer-Verlag, 2001. Short version of A clocked denotational semantics for Lucid-Synchrone in Coq, available as a Technical Report (LIP6), at∼pouzet.
[6]V., Capretta. General recursion via coinductive types. Logical Methods in Computer Science, 1(2:1):1–28, 2005.
[7]P., Caspi and M., Pouzet. Synchronous Kahn Networks. In ACM SIGPLAN International Conference on Functional Programming, Philadelphia, Pensylvania, May 1996.
[8]A., Cohen, M., Duranton, C., Eisenbeis, C., Pagetti, F., Plateau and M., Pouzet. N-Synchronous Kahn networks: a relaxed model of synchrony for real-time systems. In ACM International Conference on Principles of Programming Languages (POPL'06), Charleston, South Carolina, USA, January 2006.
[9]B., Courcelle, G., Kahn and J., Vuillemin. Algorithmes d'équivalence et de réduction à des expressions minimales dans une classe d'équations récursives simples. In J., Loeckx (ed.) Automata, Languages and Programming, volume 14, Lecture Notes in Computer Science, pp. 200–213. Springer-Verlag, 1974. Translation from French by T. Veldhuizen with original text, a few comments and additional references.
[10]N., Halbwachs, P., Caspi, P., Raymond and D., Pilaud. The synchronous dataflow programming language lustre. Proceedings of the IEEE, 79(9):1305–1320, 1991.
[11]G., Kahn. The semantics of a simple language for parallel programming. In Information Processing 74. North-Holland, 1974.
[12]G., Kahn and D., MacQueen. Coroutines and networks of parallel processes. In B., Gilchrist (ed.) Information Processing 77. North-Holland, 1977.
[13]G., Kahn and G. D., Plotkin. Concrete domains. Theoretical Computer Science, 121(1& 2):187–277, 1993.
[14]D., Pilaud, P., Caspi, N., Halbwachs and J., Plaice. Lustre: a declarative language for programming synchronous systems. In 14th ACM Conference on Principles of Programming Languages, pp. 178–188, Munich, January 1987.
,The Coq Development Team. The Coq Proof Assistant Reference Manual – Version V8.1, July 2006.