Probabilistic programming for procedural modeling and design