Skip to content

Latest commit

 

History

History
45 lines (27 loc) · 2.52 KB

File metadata and controls

45 lines (27 loc) · 2.52 KB

Alea.jl

Unit Tests codecov

Alea is a probabilistic programming system built in Julia, based on the discrete probabilistic programming language Dice.

Installation | Quick Start | Papers

Installation

Install Julia 1.8.5 or higher using these instructions.

Then, install SymPy using the following command:

pip3 install sympy

Then, to install Alea and update dependencies:

julia --project -e "import Pkg;Pkg.update()"

One can now run a program from the Julia REPL (which can be opened with julia --project).

Quick Start

Once the setup is complete, see tutorial/tour_1_core.jl for a quick start to Alea. Then, see tutorial/tour_2_learning.jl for an introduction to learning probabilities.

Finally, see the following:

  • examples/ contains simple examples to get started with using Alea Julia package to write probabilistic programs.
  • test/ contains unit test cases for all the functions and data types implemented.

Papers

This repository currently consists of code for the following papers:

Tuning Random Generators: Property-Based Testing as Probabilistic Programming. Ryan Tjoa, Poorva Garg, Harrison Goldstein, Todd Millstein, Benjamin Pierce, Guy Van den Broeck. OOPSLA 2025.

  • Alea incorporates Loaded Dice, a discrete probabilistic programming system that supports differentiaton and parameter learning. The tutorials, linked in Quick Start, cover parameter learning, and pbt/ contains examples in tuning generators for property-based testing.

Bit Blasting Probabilistic Programs. Poorva Garg, Steven Holtzen, Guy Van den Broeck, Todd Millstein. PLDI 2024.

  • Alea incorporates HyBit, a bit blasting-based probabilistic programming system for discrete-continuous probabilistic programs. See hybrid/ for more.

Scaling Integer Arithmetic in Probabilistic Programs. William X. Cao, Poorva Garg, Ryan Tjoa, Steven Holtzen, Todd Millstein, Guy Van den Broeck. UAI 2023.