A Formally Verified Compiler for Lustre

被引:4
|
作者
Bourke, Timothy [1 ,2 ]
Brun, Lelio [1 ,2 ]
Dagand, Pierre-Evariste [1 ,3 ,4 ]
Leroy, Xavier [1 ]
Pouzet, Marc [1 ,2 ,3 ]
Rieg, Lionel [5 ,6 ]
机构
[1] INRIA, Paris, France
[2] PSL Res Univ, Ecole Normale Super, Dept Informat, Paris, France
[3] UPMC Univ Paris 06, Sorbonne Univ, Paris, France
[4] CNRS, LIP6, UMR 7606, Paris, France
[5] Coll France, Paris, France
[6] Yale Univ, New Haven, CT USA
关键词
Formally Verified Compilation; Synchronous Languages (Lustre) Interactive Theorem Proving (Coq); TRANSLATION VALIDATION; VERIFICATION; MODEL;
D O I
10.1145/3062341.3062358
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
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.
引用
收藏
页码:586 / 601
页数:16
相关论文
共 50 条
  • [1] Towards a verified Lustre compiler with modular reset
    Bourke, Timothy
    Brun, Lelio
    Pouzet, Marc
    [J]. SCOPES '18: PROCEEDINGS OF THE 21ST INTERNATIONAL WORKSHOP ON SOFTWARE AND COMPILERS FOR EMBEDDED SYSTEMS, 2018, : 14 - 17
  • [2] A Formally Verified Compiler Back-end
    Leroy, Xavier
    [J]. JOURNAL OF AUTOMATED REASONING, 2009, 43 (04) : 363 - 446
  • [3] A Formally Verified Compiler Back-end
    Xavier Leroy
    [J]. Journal of Automated Reasoning, 2009, 43 : 363 - 446
  • [4] Formally Verified Speculation and Deoptimization in a JIT Compiler
    Barriere, Aurele
    Blazy, Sandrine
    Fluckiger, Olivier
    Pichardie, David
    Vitek, Jan
    [J]. PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2021, 5 (POPL):
  • [5] Formally Verified Native Code Generation in an Effectful JIT: Turning the CompCert Backend into a Formally Verified JIT Compiler
    Barrière A.
    Blazy S.
    Pichardie D.
    [J]. Proceedings of the ACM on Programming Languages, 2023, 7
  • [6] A formally verified transformation to unify multiple nested clocks for a Lustre-like language
    Gang Shi
    Yucheng Zhang
    Shu Shang
    Shengyuan Wang
    Yuan Dong
    Pen-Chung Yew
    [J]. Science China Information Sciences, 2019, 62
  • [7] A formally verified transformation to unify multiple nested clocks for a Lustre-like language
    Shi, Gang
    Zhang, Yucheng
    Shang, Shu
    Wang, Shengyuan
    Dong, Yuan
    Yew, Pen-Chung
    [J]. SCIENCE CHINA-INFORMATION SCIENCES, 2019, 62 (01)
  • [8] A formally verified transformation to unify multiple nested clocks for a Lustre-like language
    Gang SHI
    Yucheng ZHANG
    Shu SHANG
    Shengyuan WANG
    Yuan DONG
    Pen-Chung YEW
    [J]. Science China(Information Sciences), 2019, 62 (01) : 208 - 210
  • [9] A Formally-Verified C Compiler Supporting Floating-Point Arithmetic
    Boldo, Sylvie
    Jourdan, Jacques-Henri
    Leroy, Xavier
    Melquiond, Guillaume
    [J]. 2013 21ST IEEE SYMPOSIUM ON COMPUTER ARITHMETIC (ARITH), 2013, : 107 - 115
  • [10] A Formally Verified Sequentializer for Lustre-Like Concurrent Synchronous Data-Flow Programs
    Shi, Gang
    Gan, Yuanke
    Shang, Shu
    Wang, Shengyuan
    Dong, Yuan
    Yew, Pen-Chung
    [J]. PROCEEDINGS OF THE 2017 IEEE/ACM 39TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING COMPANION (ICSE-C 2017), 2017, : 109 - 111