Alea is a probabilistic programming system built in Julia, based on the discrete probabilistic programming language Dice.
Installation | Quick Start | Papers
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
).
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.
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.