I am a Ph.D. student in the Programming Languages Group at the University of Waterloo (since Fall 2021), co-supervised by Yizhou Zhang and Ondřej Lhoták.
I care about software safety and efficiency across the entire life cycle: from design (model checking), to program (program analysis, and formal verification via automatic and interactive theorem proving such as Rocq, Agda, and Lean), to compilation (type checking, optimization, and compiler correctness).
I design probabilistic programming languages and implement compilers for sound and scalable (Bayesian) inference. My work applies type systems, program analyses, and logical relations to achieve efficient, reliable, and certified probabilistic programming.
Previously, I worked on formal verification of adversarial robustness of deep neural networks.
I am currently seeking both academic and industrial positions.[CV]
Geni: A compiler that compiles functional-programming-style probabilistic programs into probability-generating functions, a compact and exact compilation target representing measures.
Mappl: A compiler that enables scalable inference by factorizing recursive probabilistic programs via continuation-passing-style (CPS) compilation and information-flow typing (with a denotational, logical-relations model).
[DOI | Artifact | TR | Talk | Poster version for Cheriton Symposium]
The compiler perspective leads to sound, scalable ways to automate probabilistic inference for a rich class of probabilistic models.
| Compilers | Venues | Inference Methods | Compilation Artifacts | Keywords |
|---|---|---|---|---|
| Geni | ICFP'25 | Knowledge Compilation | Probability Generating Functions | Compiler Optimization |
| Mappl | PLDI'24 | Variable Elimination | CPS-Transformed Factor Functions | Program Partitioning |
| Fidelio | POPL'23 | Variational Inference | Neural-Aided Guide Program | Absolute Continuity |
In a clever compiler for a probabilistic programming language, general-purpose compiler techniques can rival the power of domain-specific expertise and specialized decision procedures.
CS 450/650 Computer Architecture
CS 444/644 Compiler Construction
CS 245 & CS 245E Logic and Computation
CS 241 Foundations of Sequential Programs