Dr. Bayes
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Dr. Bayes

This is a probabilistic programming language meant for Bayesian modeling, which carries out inference on any program with any positive-probability condition. It does not matter whether the output distribution can be defined by a density (e.g. discontinuities and variable dimension are fine), nor whether the condition meets the preconditions for using Bayes' law (e.g. is axis-aligned). Examples of atypical Bayesian inference that Dr. Bayes is capable of are stochastic ray tracing and probabilistic program verification.

This is of course possible using rejection sampling for exponential cost, but Dr. Bayes is usually much more efficient. In particular, the positive-probability conditions may have arbitrarily small probability without affecting running time. For more information, see

Neil Toronto. Trustworthy, Useful Languages for Probabilistic Modeling and Inference. Doctoral Dissertation, Brigham Young University, 2014 (to appear).

Dr. Bayes is currently just a core calculus. In the next few months, I intend to put a pretty face on it, make it faster, and turn this repository into an installable Racket package.


  • direct: Direct implementations of the exact and approximating semantics from Chapter 8 (one of them is in Haskell)

  • private: Dr. Bayes implementation

  • tests: Various deterministic and randomized tests