18 February 2019 - 14h00
Probabilistic Reactive Programming
by Guillaume Baudart from IBM T. J. Watson Research Center, Yorktown Heights
Abstract: Modeling reactive systems with uncertainty is challenging because
reactive systems typically run without terminating, interact with an
external environment, and evolve during execution. To facilitate the
modeling of such systems, we propose a programming language that mixes
features from both probabilistic and reactive languages.
Synchronous programming languages are domain specific languages
designed to facilitate the implementation of reactive systems,
offering intuitive formalism, dedicated analyses, and optimized code
generation. On the other hand, the idea of probabilistic programming
is to use the expressiveness of programming languages to build
probabilistic models. To implement this idea, a common approach is to
take a general purpose language and extend it with (1) a function that
allows to sample a value from a distribution, (2) a function that
allows to condition values of variables in a program via observations,
and (3) an inference procedure that build a distribution for a program
using the two previous constructs.
Following this approach, we
propose to extend a synchronous programming language à la Lustre with
probabilistic constructs. We then show that classic compilation techniques
from stream equations to state machines allow a lightweight
implementation of sequential inference techniques.
We illustrate our approach on multiple examples including time-series
prediction or agent-based systems.