Title: Zèlus, a Synchronous Language with ODEs for Hybrid Systems Modeling

Presentation: Prof. Marc Pouzet, ENS Paris.

Abstract: Synchronous languages have been invented in the 80's for designing and implementing real time control software. They allow to write a mathematically precise and deterministic specification, to simulate, test, verify it, and to automatically generate embedded code that runs in bounded time and space. Those languages gave birth to several industrial tools, in particular SCADE which is used today for implementing safety critical software in planes, for example.

Synchronous language are limited to discrete-time systems only. They do not not model, nor faithfully nor efficiently hybrid systems that mix discrete and continuous-time behaviors. This creates a gap in the development chain, with one language for hybrid systems modeling and an other for the implementation.

In this talk, I will present Zèlus, a new synchronous language in which it is possible to write, in the very same source, a model of the control software like it would be done in a synchronous language and a model of its physical environment. From a user's perspective, its main originality is to extend an existing synchronous language like Lustre with Ordinary Differential Equations (ODEs) and zero-crossing events. The extension is conservative: any synchronous program expressed as data-flow equations and hierarchical automata can be composed arbitrarily with ODEs in the same source code. A dedicated type system and causality analysis ensure that all discrete changes are aligned with zero-crossing events. Well-typed programs are then statically scheduled and translated into sequential code and the final code is paired with an off-the-shelf numerical solver (Sundials CVODE). The compiler recycles several classical techniques of synchronous compilers (causality analysis, code generation). Some others (like the type system to statically separate discrete-time from continuous-time) are original. Finally, the key features of Z\'elus have been implemented in the industrial prototype SCADE Hybrid, built on top of SCADE 6 KCG, the qualified code generator of SCADE 6.

Back to Workshop Homepage