Reactive Probabilistic Programming

by   Guillaume Baudart, et al.

Synchronous reactive languages were introduced for designing and implementing real-time control software. These domain-specific languages allow for writing a modular and mathematically precise specification of the system, enabling a user to simulate, test, verify, and, finally, compile the system into executable code. However, to date these languages have had limited modern support for modeling uncertainty – probabilistic aspects of the software's environment or behavior – even though modeling uncertainty is a primary activity when designing a control system. In this paper we extend Zélus, a synchronous programming language, to deliver ProbZélus, the first synchronous probabilistic programming language. ProbZélus is a probabilistic programming language in that it provides facilities for probabilistic models and inference: inferring latent model parameters from data. We present ProbZélus's measure-theoretic semantics in the setting of probabilistic, stateful stream functions. We then demonstrate a semantics-preserving compilation strategy to a first-order functional core calculus that lends itself to a simple semantic presentation of ProbZélus's inference algorithms. We also redesign the delayed sampling inference algorithm to provide bounded and streaming delayed sampling inference for ProbZélus models. Together with our evaluation on several reactive programs, our results demonstrate that ProbZélus provides efficient, bounded memory probabilistic inference.


page 1

page 2

page 3

page 4


Statically Bounded-Memory Delayed Sampling for Probabilistic Streams

Probabilistic programming languages aid developers performing Bayesian i...

Adjoint Reactive GUI

Most interaction with a computer is done via a graphical user interface....

Probabilistic Programming with Densities in SlicStan: Efficient, Flexible and Deterministic

Stan is a probabilistic programming language that has been increasingly ...

A Probabilistic Programming Idiom for Active Knowledge Search

In this paper, we derive and implement a probabilistic programming idiom...

The Art of the Meta Stream Protocol: Torrents of Streams

The rise of streaming libraries such as Akka Stream, Reactive Extensions...

Designing Perceptual Puzzles by Differentiating Probabilistic Programs

We design new visual illusions by finding "adversarial examples" for pri...

Functional Tensors for Probabilistic Programming

It is a significant challenge to design probabilistic programming system...