Passer à la navigation principale Passer à la recherche Passer au contenu principal

A formally verified compiler for Lustre

  • Timothy Bourke
  • , Lélio Brun
  • , Pierre Évariste Dagand
  • , Xavier Leroy
  • , Marc Pouzet
  • , Lionel Rieg
  • INRIA Institut National de Recherche en Informatique et en Automatique
  • PSL research University & IPSL
  • Sorbonne Université
  • LIP6, UPMC Sorbonne Universités - Paris 6
  • Collège de France
  • Yale University

Résultats de recherche: Contribution à un journalArticleRevue par des pairs

Résumé

The correct compilation of block diagram languages like Lustre, Scade, and a discrete subset of Simulink is important since they are used to program critical embedded control software. We describe the specification and verification in an Interactive Theorem Prover of a compilation chain that treats the key aspects of Lustre: Sampling, nodes, and delays. Building on CompCert, we show that repeated execution of the generated assembly code faithfully implements the dataflow semantics of source programs. We resolve two key technical challenges. The first is the change from a synchronous dataflow semantics, where programs manipulate streams of values, to an imperative one, where computations manipulate memory sequentially. The second is the verified compilation of an imperative language with encapsulated state to C code where the state is realized by nested records. We also treat a standard control optimization that eliminates unnecessary conditional statements.

langue originaleAnglais
Pages (de - à)586-601
Nombre de pages16
journalACM SIGPLAN Notices
Volume52
Numéro de publication6
Les DOIs
étatPublié - 14 juin 2017

Empreinte digitale

Examiner les sujets de recherche de « A formally verified compiler for Lustre ». Ensemble, ils forment une empreinte digitale unique.

Contient cette citation