Alex Simpson: Programming with streams of interdependent random variables: Denotational semantics
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