## Section: New Results

### Reactive Probabilistic Programming

Participant : Marc Pouzet.

Synchronous languages were introduced to design and implement real-time embedded systems with a (justified) enphasis on determinacy. Yet, they interact with a physical environment that is partially known and are implemented on architectures subject to failures and noise (e.g., channels, variable communication delays or computation time). Dealing with uncertainties is useful online monitoring, learning, statistical testing or to build simplified models for faster simulation. Actual synchronous and languages provide limited support for modeling the non-deterministic behaviors that are omnipresent in embedded systems.

In 2019, we started a new topic on
*reactive probabilistic programming* under the initiative of
Guillaume Baudart and Louis Mandel (IBM Research, Watson); in
collaboration with Erik Atkinson, Michael Carbin and Benjamin Sherman
(MIT). We have designed ProbZelus, an extension of Zelus with
probabilistic programming constructs. The language makes it
possible to describe probabilistic models in interaction with an
observable environment. At runtime, a set of inference techniques
can be used to learn the distributions of model parameters from
observed data. The main results are (1) the design of the ProbZelus
compiler, the formalization of the static and dynamic semantics of
the language that mixes deterministic and probabilistic components,
(2) the design and implementation of inference methods which can be
executed with bounded resources, (3) the evaluation of ProbZelus on
a set of examples and case studies.

For the moment, ProbZelus is mainly a library of Zelus, with minor
changes of the language itself (essentially the type
system) (Yet, higher-order was only used occasionally
since then; hence an important implementation effort has been
spent this year to make it work well.) It exploits heavilly the
higher-order nature of Zelus. E.g., if `f` is a stream
function (with type `f: 'a -D-> 'b` ) and `x` is a stream
(with type `'a` ),
`Particule.infer f x: 'a -D-> 'b Distribution.t` implements an
inference algorithm which computes a distribution for the result of
type `'b` with a particule filter algorithm.

A prelimary report describes a part of this work [24] and a presentation at JFLA will be given in January 2020. ProbZelus is available in open source at https://github.com/IBM/probzelus since december 2019. Our purpose is to go beyond the library approach with a closer integration of probabilistic constructs and reactive constructs, with dedicated static analyses and compilation techniques to give static guaranties on the result of inference, efficient inference techniques tuned for reactive applications and that ensure execution in bounded time and space; efficient dedicated compilation techniques for probabilistic programs. Finally, the treatment of both discrete-time and continuous-time signals and systems must be investigated (only discrete-time is considered at the moment).