Contextual Equivalence for a Probabilistic Language with Continuous Random Variables and Recursion
Abstract
We present a complete reasoning principle for contextual equivalence in an untyped probabilistic language. The language includes continuous (realvalued) random variables, conditionals, and scoring. It also includes recursion, since the standard callbyvalue fixpoint combinator is expressible. We demonstrate the usability of our characterization by proving several equivalence schemas, including familiar facts from lambda calculus as well as results specific to probabilistic programming. In particular, we use it to prove that reordering the random draws in a probabilistic program preserves contextual equivalence. This allows us to show, for example, that (let x = $e_1$ in let y = $e_2$ in $e_0$) is equivalent to (let y = $e_2$ in let x = $e_1$ in $e_0$) (provided $x$ does not occur free in $e_2$ and $y$ does not occur free in $e_1$) despite the fact that $e_1$ and $e_2$ may have sampling and scoring effects.
 Publication:

arXiv eprints
 Pub Date:
 July 2018
 arXiv:
 arXiv:1807.02809
 Bibcode:
 2018arXiv180702809W
 Keywords:

 Computer Science  Programming Languages
 EPrint:
 Extended version of ICFP 2018 paper