@@ -40,6 +40,46 @@ <h1 class="title">John Li</h1>
4040< h3 > Papers</ h3 >
4141
4242< table class ="entries ">
43+ < tr >
44+ < td >
45+ Roulette: A Language for Expressive, Exact, and Efficient Discrete Probabilistic Programming
46+ < span class ="label "> PLDI 2025</ span >
47+ < small >
48+ < br /> < span class ="authors "> Cameron Moy, Jack Czenszak, John M. Li, Brianna Marshall, and Steven Holtzen.</ span >
49+ < br />
50+ < details >
51+ < summary >
52+ < span class ="summary-text "> Abstract</ span >
53+
54+ < a href =https://dl.acm.org/doi/10.1145/3720482 > DOI</ a >
55+
56+ < a href =roulette.pdf > Local copy</ a >
57+ </ summary >
58+ < p > Exact probabilistic inference is a requirement for many applications
59+ of probabilistic programming languages (PPLs) such as in high-consequence
60+ settings or verification. However, designing and implementing a PPL with
61+ scalable high-performance exact inference is difficult: exact inference engines,
62+ much like SAT solvers, are intricate low-level programs that are hard to
63+ implement. Due to this implementation challenge, PPLs that support scalable
64+ exact inference are restrictive and lack many features of general-purpose
65+ languages.</ p >
66+ < p > This paper presents Roulette, the first discrete probabilistic programming
67+ language that combines high- performance exact inference with general-purpose
68+ language features. Roulette supports a significant subset of Racket, including
69+ data structures, first-class functions, surely-terminating recursion, mutable
70+ state, modules, and macros, along with probabilistic features such as finitely
71+ supported discrete random variables, conditioning, and top-level inference. The
72+ key insight is that there is a close connection between exact probabilistic
73+ inference and the symbolic evaluation strategy of Rosette. Building on this
74+ connection, Roulette generalizes and extends the Rosette solver-aided
75+ programming system to reason about probabilistic rather than symbolic
76+ quantities. We prove Roulette sound by generalizing a proof of correctness for
77+ Rosette to handle probabilities, and demonstrate its scalability and
78+ expressivity on a number of examples.</ p >
79+ </ details >
80+ </ small >
81+ </ td >
82+ </ tr >
4383 < tr >
4484 < td >
4585 Multi-Language Probabilistic Programming
@@ -57,7 +97,7 @@ <h3>Papers</h3>
5797
5898 < a href =multi-language-probabilistic-programming.pdf > Local copy</ a >
5999 </ summary >
60- There are many different probabilistic programming languages that
100+ < p > There are many different probabilistic programming languages that
61101 are specialized to specific kinds of probabilistic programs. From a
62102 usability and scalability perspective, this is undesirable: today,
63103 probabilistic programmers are forced up-front to decide which
@@ -78,7 +118,7 @@ <h3>Papers</h3>
78118 and provide empirical evidence that it enables programmers to
79119 perform inference on complex heterogeneous probabilistic programs
80120 and flexibly exploits the strengths and weaknesses of two languages
81- simultaneously.
121+ simultaneously.</ p >
82122 </ details >
83123 </ small >
84124 </ td >
@@ -102,7 +142,7 @@ <h3>Papers</h3>
102142
103143 < a href =a-nominal-approach-to-probabilistic-separation-logic.pdf > Local copy</ a >
104144 </ summary >
105- Currently, there is a gap between the tools used by probability
145+ < p > Currently, there is a gap between the tools used by probability
106146 theorists and those used in formal reasoning about probabilistic
107147 programs. On the one hand, a probability theorist decomposes
108148 probabilistic state along the simple and natural product of probability
@@ -115,7 +155,7 @@ <h3>Papers</h3>
115155 the classic equivalence between the category of nominal sets and the
116156 Schanuel topos. Through this equivalence, we validate design decisions
117157 in prior work on probabilistic separation logic and create new
118- connections to nominal-set-like models of probability.
158+ connections to nominal-set-like models of probability.</ p >
119159 </ details >
120160 </ small >
121161 </ td >
@@ -139,7 +179,7 @@ <h3>Papers</h3>
139179
140180 < a href =lilac-a-modal-separation-logic-for-conditional-probability.pdf > Local copy</ a >
141181 </ summary >
142- We present Lilac, a separation logic for reasoning about probabilistic
182+ < p > We present Lilac, a separation logic for reasoning about probabilistic
143183 programs where separating conjunction captures probabilistic
144184 independence. Inspired by an analogy with mutable state where sampling
145185 corresponds to dynamic allocation, we show how probability spaces over a
@@ -155,7 +195,7 @@ <h3>Papers</h3>
155195 theory for reasoning about conditional probability. We show how the
156196 resulting modal logic validates examples from prior work, and give a
157197 formal verification of an intricate weighted sampling algorithm whose
158- correctness depends crucially on conditional independence structure.
198+ correctness depends crucially on conditional independence structure.</ p >
159199 < p >
160200 < b > Notes:</ b >
161201 Since publication, < a href ="http://baojia.lu/ "> Jialu Bao</ a >
@@ -192,7 +232,7 @@ <h3>Papers</h3>
192232
193233 < a href =deriving-efficient-program-transformations-from-rewrite-rules.pdf > Local copy</ a >
194234 </ summary >
195- An efficient optimizing compiler can perform many cascading rewrites in
235+ < p > An efficient optimizing compiler can perform many cascading rewrites in
196236 a single pass, using auxiliary data structures such as variable binding
197237 maps, delayed substitutions, and occurrence counts. Such optimizers
198238 often perform transformations according to relatively simple rewrite
@@ -210,7 +250,7 @@ <h3>Papers</h3>
210250 evaluation of case expressions and record projections. The generated
211251 implementations are sometimes faster, and at most 40% slower, than
212252 hand-written counterparts on a small set of benchmarks; in some cases,
213- they require significantly less code to write and prove correct.
253+ they require significantly less code to write and prove correct.</ p >
214254 </ details >
215255 </ small >
216256 </ td >
@@ -230,7 +270,7 @@ <h3>Papers</h3>
230270
231271 < a href =compositional-optimizations-for-certicoq.pdf > Local copy</ a >
232272 </ summary >
233- Compositional compiler verification is a difficult problem that focuses
273+ < p > Compositional compiler verification is a difficult problem that focuses
234274 on separate compilation of program components with possibly different
235275 verified compilers. Logical relations are widely used in proving
236276 correctness of program transformations in higher-order languages;
@@ -249,7 +289,7 @@ <h3>Papers</h3>
249289 traditional logical-relation frameworks, our framework supports
250290 divergence preservation---even when transformations reduce the number of
251291 program steps. We achieve this by parameterizing our logical relations
252- with a pair of < i > relational invariants</ i > .
292+ with a pair of < i > relational invariants</ i > .</ p >
253293 < p >
254294 We apply this technique to verify a multi-pass, optimizing middle-end
255295 pipeline for CertiCoq, a compiler from Gallina (Coq's specification
0 commit comments