  Probabilistic inference procedures are usually coded painstakingly from
scratch, for each target model and each inference algorithm. We reduce this
effort by generating inference procedures from models automatically. We make
this code generation modular by decomposing inference algorithms into reusable
program-to-program transformations. These transformations perform exact
inference as well as generate probabilistic programs that compute expectations,
densities, and MCMC samples. The resulting inference procedures are about as
accurate and fast as other probabilistic programming systems on real-world
problems.
