  We introduce Church, a universal language for describing stochastic
generative processes. Church is based on the Lisp model of lambda calculus,
containing a pure Lisp as its deterministic subset. The semantics of Church is
defined in terms of evaluation histories and conditional distributions on such
histories. Church also includes a novel language construct, the stochastic
memoizer, which enables simple description of many complex non-parametric
models. We illustrate language features through several examples, including: a
generalized Bayes net in which parameters cluster over trials, infinite PCFGs,
planning by inference, and various non-parametric clustering models. Finally,
we show how to implement query on any Church program, exactly and
approximately, using Monte Carlo techniques.
