Probabilistic Programming with Densities in SlicStan: Efficient, Flexible and Deterministic
This work addresses usability and formalization issues for users of probabilistic programming languages, though it is incremental as it builds directly on Stan.
The paper tackles the usability and formalization limitations of the Stan probabilistic programming language by introducing SlicStan, a compositional and self-optimizing version, with contributions including formal semantics and a semantic-preserving translation to Stan.
Stan is a probabilistic programming language that has been increasingly used for real-world scalable projects. However, to make practical inference possible, the language sacrifices some of its usability by adopting a block syntax, which lacks compositionality and flexible user-defined functions. Moreover, the semantics of the language has been mainly given in terms of intuition about implementation, and has not been formalised. This paper provides a formal treatment of the Stan language, and introduces the probabilistic programming language SlicStan --- a compositional, self-optimising version of Stan. Our main contributions are: (1) the formalisation of a core subset of Stan through an operational density-based semantics; (2) the design and semantics of the Stan-like language SlicStan, which facilities better code reuse and abstraction through its compositional syntax, more flexible functions, and information-flow type system; and (3) a formal, semantic-preserving procedure for translating SlicStan to Stan.