Church
From Church Wiki
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.
Interactive tutorials
Perhaps the best way to grasp the Church (and more broadly, probabilistic programming) idiom is to work through a tutorial. We have a number of tutorials aimed at cognitive modeling.
- The Probabilistic Models of Cognition Tutorial. (This has been used to teach graduate courses at Stanford, MIT, and UCSD.)
- Older tutorials: ESSLLI Tutorial, Cornell tutorial.
Academic publications
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.
Church Implementations
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.
Church Examples
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.
Under Construction
Support
The Church wiki is funded by grants from the Office of Naval Research and the James S. McDonnell Foundation.
