Probabilistic and Inferential Programming