Open Access

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

EURASIP Journal on Embedded Systems20072007:059130

DOI: 10.1155/2007/59130

Received: 29 June 2006

Accepted: 18 December 2006

Published: 13 March 2007


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]

Authors’ Affiliations



  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.View ArticleGoogle Scholar
  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.805826View ArticleGoogle Scholar
  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-VView ArticleMATHGoogle Scholar
  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.97300View ArticleGoogle Scholar
  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 InstituteGoogle Scholar
  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.Google Scholar
  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.Google Scholar
  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: Google Scholar
  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.Google Scholar
  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.Google Scholar
  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.Google Scholar
  12. Morel L: Generating imperative code from Lustre iterators.
  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.Google Scholar
  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.View ArticleGoogle Scholar
  15. Wadler PL: Deforestation: transforming programs to eliminate trees. Theoretical Computer Science 1990,73(2):231-248. 10.1016/0304-3975(90)90147-AMathSciNetView ArticleMATHGoogle Scholar
  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.359579MathSciNetView ArticleMATHGoogle Scholar
  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.Google Scholar
  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.Google Scholar
  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.Google Scholar
  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.102806View ArticleGoogle Scholar
  21. Gill A, Launchbury J, Peyton Jones SL: A short cut to deforestation. University of Glasgow, Glasgow, UK; 1993.View ArticleGoogle Scholar
  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.View ArticleGoogle Scholar
  23. Colaco J-L, Pouzet M: Prototypages. In Rapport final du projet GENIE II. Verilog SA, Paris, France; 2000.Google Scholar
  24. Caspi P, Pouzet M: Lucid Synchrone, a functional extension of Lustre. Laboratoire LIP6, Université Pierre et Marie Curie, Paris, France; 2000.Google Scholar
  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.View ArticleGoogle Scholar
  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.View ArticleGoogle Scholar
  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.View ArticleGoogle Scholar
  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.Google Scholar
  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/BF00625969View ArticleGoogle Scholar
  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.Google Scholar
  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.Google Scholar
  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.Google Scholar
  33. Hoare CAR: An axiomatic basis of computer programming. Communications of the ACM 1969,12(10):576-580. 10.1145/363235.363259View ArticleMATHGoogle Scholar
  34. Basu SK, Misra J: Proving loop programs. IEEE Transactions on Software Engineering 1975,1(1):76-86.MathSciNetView ArticleGoogle Scholar
  35. Dezan C, Quinton P: Verification of regular architectures using ALPHA: a case study. INRIA, Paris, France; 1994.Google Scholar
  36. Morin-Allory K: Vérification Formelle dans le Modèle Poly edrique, Ph.D. thesis. Université de Rennes 1, Rennes, France; 2004.Google Scholar
  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.View ArticleGoogle Scholar
  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.Google Scholar


© Lionel Morel. 2007

This article is published under license to BioMed Central Ltd. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.