# Alex Simpson: Programming with streams of interdependent random variables: Language definition

Source: Mathematics and theoretical computing seminar

**Abstract**: Probabilistic programming languages manipulate variables representing probability distributions. However, it is not possible for distinct such variables to have dependencies, because only individual distributions are specified, not joint distributions.

In this talk, I shall present programming language primitives for programming with random variables that can possess such dependencies (distinct random variables may be correlated, uncorrelated, independent, etc.). I shall do this in the context of a typed functional programming language with infinite streams.

Regarding types, distribution types are replaced with new random variable types. The functional paradigm provides a natural style for manipulating functions operating on random variables. And infinite streams provide, for example, a vehicle for modelling discrete-time stochastic processes.

In the language, random variables are manipulated in three main ways. One can create a new random random variable with a given distribution, which may be conditional on other random variables and on previously sampled data. One can sample a random variable. And one can create abstract sample points, which allow correlations between random variables to be exploited.

The material will be presented in separate talks in three instalments.

Part 1: Language definition

Part 2: Operational semantics

Part 3: Denotational semantics