Skip to content

Latest commit

 

History

History
32 lines (24 loc) · 1.04 KB

README.md

File metadata and controls

32 lines (24 loc) · 1.04 KB

FOPPL: A First-Order Probabilistic Programming Language

This is an implementation of FOPPL, an S-expression based probabilistic programming language described in [1]. See the resources/examples directory for a list of FOPPL programs.

Features

  • Compiles FOPPL programs to a graphical model representation.
  • Able to perform automatic differentiation of simple, first-order functions.
  • Inference algorithms: Metropolis within Gibbs and HMC.
  • Also supports inference of higher-order models using an evaluation-based interpreter.
  • Supports the PPX protocol. This means this can be used as an inference engine for models written in a language without probabilistic constructs.

Dependencies

  • Clojure 1.8+
  • Anglican 1.0+

Usage

$ lein run [foppl-src]

[1] J. W. van de Meent, B. Paige, H. Yang, and F. Wood, “Introduction to Probabilistic Programming,” Foundations and Trends in Machine Learning, pp. in review, 2018. arxiv.org