From Church Wiki
Revision as of 12:22, 30 October 2013 by Noah Goodman (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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.

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.

  • Webchurch, a javascript Church implementation that requires no special installation.
  • 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

Probabilistic Programming

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 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.

Personal tools