Skip to main content


Array Iterators in Lustre: From a Language Extension to Its Exploitation in Validation

Article metrics

  • 1059 Accesses

  • 1 Citations


The design of safety critical embedded systems has become a complex task, which requires both appropriate language features and efficient validation techniques. In this work, we propose the introduction of array iterators to the synchronous dataflow language Lustre as a mean to alleviate this complexity. We propose these new operators to provide Lustre programmers with a new mean for designing regular reactive systems. We study a compilation scheme that allows us to generate efficient loop imperative code from these iterators. This language aspect of our work has been fruitful since the iterators are being introduced in the industrial version of Lustre. Finally, we propose to take these regular structures into account during the validation process. This approach has already shown its applicability on different real-life case studies. The work we relate here is thus complete in the sense that our propositions at the language level are taken into account both at the compilation and the validation levels.

[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38]


  1. 1.

    Harel D, Pnueli A: On the development of reactive systems. In Logics and Models of Concurrent Systems. Springer, New York, NY, USA; 1985:477-498.

  2. 2.

    Benveniste A, Caspi P, Edwards SA, Halbwachs N, Le Guernic P, de Simone R: The synchronous languages 12 years later. Proceedings of the IEEE 2003,91(1):64-83. 10.1109/JPROC.2002.805826

  3. 3.

    Berry G, Gonthier G: The Esterel synchronous programming language: design, semantics, implementation. Science of Computer Programming 1992,19(2):87-152. 10.1016/0167-6423(92)90005-V

  4. 4.

    Halbwachs N, Caspi P, Raymond P, Pilaud D: The synchronous dataflow programming language Lustre. Proceedings of the IEEE 1991,79(9):1305-1320. 10.1109/5.97300

  5. 5.

    Le Guernic P, Benveniste A: The synchronous language SIGNAL. In Proceedings of the 2nd Workshop on Large-Grained Parallelism, November 1987, Pittsburgh, Pa, USA Edited by: Barbacci MR. 56-57. Carnegie-Mellon University Software Engineering Institute

  6. 6.

    Halbwachs N, Lagnier F, Raymond P: Synchronous observers and the verification of reactive systems. In Proceedings of the 3rd International Conference on Algebraic Methodology and Software Technology (AMAST '93), June 1993, Twente, The Netherlands, Workshops in Computing Edited by: Nivat M, Rattray C, Rus T, Scollo G. 83-96.

  7. 7.

    Jeannet B: Partitionnement Dynamique Dans l'Analyse de Relations Linéaires et Application à la Vérification de Programmes Synchrones, Ph.D. thesis. Institut National Polytechnique de Grenoble, Grenoble, France; 2000.

  8. 8.

    Morel L: Efficient compilation of array iterators for Lustre. In Proceedings of the 1st Workshop on Synchronous Languages, Applications, and Programming (SLAP '02), April 2002, Grenoble, France, Electronic Notes in Theoretical Computer Science Edited by: Maraninchi F, Girault A, Rutten É. 65:

  9. 9.

    Rocheteau F: Extension du langage Lustre et application la conception de circuits: le langage Lustre-V4 et le système Pollux, Ph.D. thesis. Institut National Polytechnique de Grenoble, Grenoble, France; 1992.

  10. 10.

    Rocheteau F, Halbwachs N: Pollux: a Lustre-based hardware design environment. In Proceedings of the International Workshop on Algorithms and Parallel VLSI Architectures II, June 1991, Chateau de Bonas, France Edited by: Quinton P, Robert Y. 335-346.

  11. 11.

    Bertin P, Roncin D, Vuillemin J: Introduction to programmable active memories. In Systolic Array Processors. Edited by: McCanny J, McWhirter J, Swartzlander E. Prentice-Hall, Englewood Cliffs, NJ, USA; 1989:301-309.

  12. 12.

    Morel L: Generating imperative code from Lustre iterators.

  13. 13.

    Wadler PL: Listlessness is better than laziness: lazy evaluation and garbage collection at compile-time. Proceedings of the ACM Symposium on LISP and Functional Programming, August 1984, Austin, Tex, USA 45-52.

  14. 14.

    Wadler PL: Listlessness is better than laziness II: composing listless functions. Proceedings of a Workshop on Programs as Data Objects, October 1985, Copenhagen, Denmark, Lecture Notes in Computer Science 217: 282-305.

  15. 15.

    Wadler PL: Deforestation: transforming programs to eliminate trees. Theoretical Computer Science 1990,73(2):231-248. 10.1016/0304-3975(90)90147-A

  16. 16.

    Backus J: Can programming be liberated from the von neumann style? A functional style and its algebra of programs. Communications of the ACM 1978,21(8):613-641. 10.1145/359576.359579

  17. 17.

    Bird RS: Lectures on constructive functional programming. In Constructive Methods in Computer Science, NATO ASI Series. Volume F55. Edited by: Broy M. Springer, New York, NY, USA; 1988:151-216.

  18. 18.

    Sansonnet J-P, Michel O, De Vito D: 8-1/2: data-parallelism and data-flow. In Tech. Rep. LRI-CNRS. Université Paris-Sud, Orsay Campus, France; 1992.

  19. 19.

    Mauras C: Alpha, un langage équationnel pour la conception et la programmation d'architectures parallèles synchrones, Ph.D. thesis. Université de Rennes I, Rennes, France; 1989.

  20. 20.

    Waters RC: Automatic transformation of series expressions into loops. ACM Transactions on Programming Languages and Systems 1991,13(1):52-98. 10.1145/114005.102806

  21. 21.

    Gill A, Launchbury J, Peyton Jones SL: A short cut to deforestation. University of Glasgow, Glasgow, UK; 1993.

  22. 22.

    Launchbury J, Sheard T: Warm fusion: deriving build-catas from recursive definitions. Proceedings of the 7th International Conference on Functional Programming Languages and Computer Architecture (FPCA '95), June 1995, La Jolla, Calif, USA 314-323.

  23. 23.

    Colaco J-L, Pouzet M: Prototypages. In Rapport final du projet GENIE II. Verilog SA, Paris, France; 2000.

  24. 24.

    Caspi P, Pouzet M: Lucid Synchrone, a functional extension of Lustre. Laboratoire LIP6, Université Pierre et Marie Curie, Paris, France; 2000.

  25. 25.

    Maraninchi F, Morel L: Logical-time contracts for reactive embedded components. Proceedings of the 30th EUROMICRO Conference on Component-Based Software Engineering Track (ECBSE '04), August 2004, Rennes, France 30: 48-55.

  26. 26.

    Huber P, Jensen AM, Jepsen LO, Jensen K: Towards reachability trees for high-level petri nets. In Advances in Petri Nets, Lecture Notes in Computer Science 1984. Volume 188. Springer, New York, NY, USA; 1985:215-233.

  27. 27.

    Emerson EA, Sistla AP: Symmetry and model checking. Proceedings of the 5th International Conference on Computer Aided Verification, November 1993, Austin, Minn, USA 463-478.

  28. 28.

    Clarke EM, Emerson EA, Jha S, Sistla AP: Symmetry reductions in model checking. Proceedings of the 10th International Computer Aided Verification Conference, June-July 1998, Vancouver, BC, Canada 145-458.

  29. 29.

    Clarke EM, Enders R, Filkorn T, Jha S: Exploiting symmetry in temporal logic model checking. Formal Methods in System Design 1996,9(1-2):77-104. 10.1007/BF00625969

  30. 30.

    Ip CN, Dill DL: Better verification through symmetry. In Proceedings of the 11th International Conference on Computer Hardware Description Languages and Their Applications (CHDL '93), April 1993, Amsterdam, The Netherlands, IFIP Transactions A: Computer Science and Technology Edited by: Agnew D, Claesen L, Camposano R. 32: 97-112.

  31. 31.

    Ip CN, Dill DL: Efficient verification of symmetric concurrent systems. In Proceedings of the IEEE International Conference on Computer Design: VLSI in Computers and Processors (ICCD '93), October 1993, Cambridge, Mass, USA Edited by: Straub E. 230-234.

  32. 32.

    Ip CN, Dill DL: Verifying systems with replicated components in mur ϕ . Proceedings of the 8th International Conference on Computer Aided Verification (CAV '96), July-August 1996, New Brunswick, NJ, USA, Lecture Notes in Computer Science 1102: 147-158.

  33. 33.

    Hoare CAR: An axiomatic basis of computer programming. Communications of the ACM 1969,12(10):576-580. 10.1145/363235.363259

  34. 34.

    Basu SK, Misra J: Proving loop programs. IEEE Transactions on Software Engineering 1975,1(1):76-86.

  35. 35.

    Dezan C, Quinton P: Verification of regular architectures using ALPHA: a case study. INRIA, Paris, France; 1994.

  36. 36.

    Morin-Allory K: Vérification Formelle dans le Modèle Poly edrique, Ph.D. thesis. Université de Rennes 1, Rennes, France; 2004.

  37. 37.

    Dumas C, Caspi P: A PVS proof obligation generator for Lustre programs. Proceedings of the 7th International Conference on Logic for Programming and Automated Reasoning, November 2000, Saint Denis, France, Lecture Notes in Artificial Intelligence 1955: 179-188.

  38. 38.

    Morel L: Exploitation des Structures Régulières et des Specifications Locales pour le Developpement Correct de Systèmes Réactifs de Grande Taille, Ph.D. thesis. Institut National Polytechnique de Grenoble, Grenoble, France; 2005.

Download references

Author information

Correspondence to Lionel Morel.

Rights and permissions

Open Access This article is distributed under the terms of the Creative Commons Attribution 2.0 International License (, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.

Reprints and Permissions

About this article


  • Embed System
  • Language Level
  • Language Feature
  • Language Extension
  • Validation Level