Skip to main content
  • Research Article
  • Open access
  • Published:

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

Abstract

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]

References

  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.

    Chapter  Google 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.805826

    Article  Google 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-V

    Article  MATH  Google 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.97300

    Article  Google 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 Institute

    Google 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. http://www.irisa.fr/espresso/Equipe/Morel/Publications/algoCodeGeneration/algo.pdf

  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.

    Article  Google Scholar 

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

    Article  MathSciNet  MATH  Google 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.359579

    Article  MathSciNet  MATH  Google 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.102806

    Article  Google Scholar 

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

    Chapter  Google 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.

    Chapter  Google 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.

    Article  Google 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.

    Chapter  Google 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.

    Chapter  Google 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/BF00625969

    Article  Google 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.363259

    Article  MATH  Google Scholar 

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

    Article  MathSciNet  Google 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.

    Article  Google 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 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

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 (https://creativecommons.org/licenses/by/2.0), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.

Reprints and permissions

About this article

Cite this article

Morel, L. Array Iterators in Lustre: From a Language Extension to Its Exploitation in Validation. J Embedded Systems 2007, 059130 (2007). https://doi.org/10.1155/2007/59130

Download citation

  • Received:

  • Revised:

  • Accepted:

  • Published:

  • DOI: https://doi.org/10.1155/2007/59130

Keywords