Skip to main navigation Skip to search Skip to main content

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

Research output: Contribution to journalArticlepeer-review

Abstract

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.

Original languageEnglish
Pages (from-to)586-601
Number of pages16
JournalACM SIGPLAN Notices
Volume52
Issue number6
DOIs
Publication statusPublished - 14 Jun 2017

Keywords

  • Interactive Theorem Proving (Coq)
  • Synchronous Languages (Lustre)
  • Verified Compilation

Fingerprint

Dive into the research topics of 'A formally verified compiler for Lustre'. Together they form a unique fingerprint.

Cite this