Church is a probabilistic programming language designed for expressive description of generative models (Goodman, Mansinghka, Roy, Bonawitz and Tenenbaum, 2008). Church is a derivative of the programming language Scheme with probabilistic semantics. This website serves as a portal to work related to Church, tutorials, reference implementations and a repository of probabilistic models expressed in Church.
Perhaps the best way to grasp the Church (and more broadly, probabilistic programming) idiom is to work through a tutorial.
- Probabilistic Models of Cognition
- Older tutorials: Old PMC Tutorial, ESSLLI Tutorial, Cornell tutorial.
The original Church paper and the work that it has inspired are part of several much larger trends that span cognitive science, theoretical computer science, probability, and statistics. In particular, the study of probabilistic programming languages within areas of theoretical computer science spans over four decades. Recent work within the area of probabilistic programming is related to the tradition of combining probability and logic that, within AI, dates back to the mid 1980's and continues today.
- See Papers using or studying the Church language.
There are currently several experimental implementations of Church.
- Bher Church, a transformational compiler that uses MCMC for inference.
- MIT-Church, an interpreted Church that uses MCMC for inference.
- Cosh, an exact inference algorithm for Church that uses continuation hashing for aggressive sub-computation sharing (dynamic programming).
It is also possible (and easier) to use Church through the ChurchServ online interface, hosted by the Church Working Group at MIT. However limited computation is available through ChurchServ, so this should not be used for complex modeling or long jobs.
Many probabilistic models are described as generative processes. Church is a formal language for describing generative processes. Here are a few examples, for more see the tutorials above.
Church and its various implementations constitute one of a growing number of probabilistic programming systems. With the announcement of a DARPA program focused on probabilistic programming, we expect to see even more systems, as well as new research into applications and theory. The Probabilistic-Programming.org wiki is a repository for links that readers may find useful.
The Church wiki is funded by grants from the Office of Naval Research and the James S. McDonnell Foundation.