Lightweight Implementations of Probabilistic Programming Languages Via Transformational Compilation
The authors describe a general method of transforming arbitrary programming languages into probabilistic programming languages with straightforward MCMC inference engines. Random choices in the program are "Named" with information about their position in an execution trace; these names are used in conjunction with a database holding values of random variables to implement MCMC inference in the space of execution traces. They encode naming information using lightweight source-to-source compilers. Their method enables one to reuse existing infrastructure (compilers, profilers, etc.) with minimal additional code, implying fast models with low development overhead.