A calculus for Esterel: if can, can. if no can, no can.

The language Esterel has found success in many safety-critical applications, such as fly-by-wire systems and nuclear power plant control software. Its imperative style is natural to programmers building such systems and its precise semantics makes it work well for reasoning about programs. Existing semantics of Esterel generally fall into two categories: translation to Boolean circuits, or operational semantics that give a procedure for running a whole program. In contrast, equational theories enable reasoning about program behavior via equational rewrites at the source level. Such theories form the basis for proofs of transformations inside compilers or for program refactorings, and defining program evaluation syntactically. This paper presents the first such equational calculus for Esterel. It also illustrates the calculus’s usefulness with a series of example equivalences and discuss how it enabled us to find bugs in Esterel implementations.

[1]  K. Schneider,et al.  A new method for compiling schizophrenic synchronous programs , 2001, CASES '01.

[2]  Gérard Berry,et al.  The constructive semantics of pure esterel , 1996 .

[3]  Benjamin C. Pierce,et al.  Types and programming languages: the next generation , 2003, 18th Annual IEEE Symposium of Logic in Computer Science, 2003. Proceedings..

[4]  Matthias Felleisen,et al.  Semantics Engineering with PLT Redex , 2009 .

[5]  Robert Hieb,et al.  The Revised Report on the Syntactic Theories of Sequential Control and State , 1992, Theor. Comput. Sci..

[6]  Stephen A. Edwards,et al.  The synchronous languages 12 years later , 2003, Proc. IEEE.

[7]  Ryan Newton,et al.  LVars: lattice-based data structures for deterministic parallelism , 2013, FHPC '13.

[8]  Manuel Serrano,et al.  Hiphop: a synchronous reactive extension for hop , 2011, PLASTIC '11.

[9]  Xuejun Yang,et al.  Finding and understanding bugs in C compilers , 2011, PLDI '11.

[10]  Pierre Weis,et al.  Bigloo: A Portable and Optimizing Compiler for Strict Functional Languages , 1995, SAS.

[11]  Gérard Berry,et al.  The Esterel Synchronous Programming Language: Design, Semantics, Implementation , 1992, Sci. Comput. Program..

[12]  Robert de Simone,et al.  ESTEREL: a formal method applied to avionic software development , 2000, Sci. Comput. Program..

[13]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[14]  Olivier Tardieu,et al.  A deterministic logical semantics for pure Esterel , 2007, TOPL.

[15]  Stephen A. Edwards,et al.  Compiling Esterel , 2007 .

[16]  Paul R. Yarnold,et al.  POP-PL: a patient-oriented prescription programming language , 2016 .

[17]  Albert Benveniste,et al.  The synchronous approach to reactive and real-time systems , 1991 .

[18]  Michael Mendler,et al.  Constructive Boolean circuits and the exactness of timed ternary simulation , 2012, Formal Methods Syst. Des..

[19]  Paul R. Yarnold,et al.  POP-PL: a patient-oriented prescription programming language , 2015, GPCE.