paperbot · PL 论文追踪

RSS

Roulette: A Language for Expressive, Exact, and Efficient Discrete Probabilistic Programming

PLDI 9(PLDI)2025
Cameron Moy, Jack Czenszak, John M. Li, Brianna Marshall, Steven Holtzen

尚未生成 AI 速览(可能缺少 API key 或等待下次运行补跑)。

原文摘要(Abstract)

Exact probabilistic inference is a requirement for many applications of probabilistic programming languages (PPLs) such as in high-consequence settings or verification. However, designing and implementing a PPL with scalable high-performance exact inference is difficult: exact inference engines, much like SAT solvers, are intricate low-level programs that are hard to implement. Due to this implementation challenge, PPLs that support scalable exact inference are restrictive and lack many features of general-purpose languages. This paper presents Roulette, the first discrete probabilistic programming language that combines high-performance exact inference with general-purpose language features. Roulette supports a significant subset of Racket, including data structures, first-class functions, surely-terminating recursion, mutable state, modules, and macros, along with probabilistic features such as finitely supported discrete random variables, conditioning, and top-level inference. The key insight is that there is a close connection between exact probabilistic inference and the symbolic evaluation strategy of Rosette. Building on this connection, Roulette generalizes and extends the Rosette solver-aided programming system to reason about probabilistic rather than symbolic quantities. We prove Roulette sound by generalizing a proof of correctness for Rosette to handle probabilities, and demonstrate its scalability and expressivity on a number of examples.

链接与引用

DOI 原文 ·

BibTeX
@article{paperbot3118,
  title = {Roulette: A Language for Expressive, Exact, and Efficient Discrete Probabilistic Programming},
  author = {Cameron Moy and Jack Czenszak and John M. Li and Brianna Marshall and Steven Holtzen},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {9},
  number = {PLDI},
  year = {2025},
  doi = {10.1145/3729334}
}