Skip to content

Commit 00deffb

Browse files
committed
a
1 parent 6f74269 commit 00deffb

File tree

2 files changed

+50
-10
lines changed

2 files changed

+50
-10
lines changed

index.html

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
&nbsp;&nbsp;
54+
<a href=https://dl.acm.org/doi/10.1145/3720482>DOI</a>
55+
&nbsp;&nbsp;
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
&nbsp;&nbsp;
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
&nbsp;&nbsp;
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
&nbsp;&nbsp;
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
&nbsp;&nbsp;
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
&nbsp;&nbsp;
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

roulette.pdf

900 KB
Binary file not shown.

0 commit comments

Comments
 (0)