The principles and practice of probabilistic programming
Synthesizing open worlds with constraints using locally annealed reversible jump MCMC