Ph.D. student in Computer Science at UC San Diego.
xup002 [at] ucsd [dot] edu
I am a third year Ph.D. student in computer science at University of California, San Diego. I am fortunate to work with Loris D’Antoni. My research aims to enhance software reliability and efficiency through program synthesis, with a current focus on its applications in specification mining, static analysis, and fuzzing. I worked as an Applied Scientist Intern at Amazon Automated Reasoning Group, mentored by Victor Nicolet and Joey Dodds.
Before moving to UCSD, I had a wonderful year at UW–Madison. I received my B.S. degree in computer science from Turing Class, Peking University. I used to be a member of PKU-PLL, supervised by Yingfei Xiong and Di Wang.
Static analyses play a fundamental role during compilation: they discover facts that are true in all executions of the code being compiled, and then these facts are used to justify optimizations and diagnostics. Each static analysis is based on a collection of abstract transformers that provide abstract semantics for the concrete instructions that make up a program. It can be challenging to implement abstract transformers that are sound, precise, and efficient—and in fact both LLVM and GCC have suffered from miscompilations caused by unsound abstract transformers. Moreover, even after more than 20 years of development, LLVM lacks abstract transformers for some instructions in its intermediate representation (IR). We developed NiceToMeetYou: a program synthesis framework for abstract transformers that are aimed at the kind of non-relational integer abstract domains that are heavily used by today’s production compilers. It exploits a simple but novel technique for breaking the synthesis problem into parts: each of our transformers is the meet of a collection of simpler, sound transformers that are synthesized such that each new piece fills a gap in the precision of the final transformer. Our design point is bulk automation: no sketches are required, and formal semantics for IR instructions were previously created using an SMT dialect of MLIR. Each of our synthesized transformers is provably sound, and some of them are more precise than those provided by LLVM.
@inproceedings{Peng2026Transformer,title={Nice to Meet You: Synthesizing Practical {MLIR} Abstract Transformers},author={Peng, Xuanyu and Kennedy, Dominic and Fan, Yuyou and Greenman, Ben and Regehr, John and D'Antoni, Loris},booktitle={Symposium on Principles of Programming Languages},year={2026},doi={10.1145/3776722},}
OOPSLA
LOUD: Synthesizing Strongest and Weakest Specifications
Kanghee Park*, Xuanyu Peng*, and Loris D’Antoni
In Object-Oriented Programming, Systems, Languages, and Applications, 2025
This paper tackles the problem of synthesizing specifications for nondeterministic programs. For such programs, useful specifications can capture demonic properties, which hold for every nondeterministic execution, but also angelic properties, which hold for some nondeterministic execution. We build on top of a recently proposed Spyro framework in which given (i) a quantifier-free query Psi posed about a set of function definitions, and (ii) a language L in which each extracted property is to be expressed, the goal is to synthesize a conjunction of L-properties such that each is a strongest L-consequence for Psi. This paper extends the framework to support existential quantifiers in queries and to compute weakest L-implicants, presenting a framework, LOUD, and a solver, ASPIRE.
@inproceedings{Park2025LOUD,title={{LOUD}: Synthesizing Strongest and Weakest Specifications},author={Park, Kanghee and Peng, Xuanyu and D'Antoni, Loris},booktitle={Object-Oriented Programming, Systems, Languages, and Applications},year={2025},doi={10.1145/3720470},}
OOPSLA
Synthesizing Efficient Memoization Algorithms
Yican Sun, Xuanyu Peng, and Yingfei Xiong
In Object-Oriented Programming, Systems, Languages, and Applications, 2023
In this paper, we propose an automated approach to finding correct and efficient memoization algorithms from a given declarative specification. This problem has two major challenges: (i) a memoization algorithm is too large to be handled by conventional program synthesizers; (ii) we need to guarantee the efficiency of the memoization algorithm. To address this challenge, we structure the synthesis of memoization algorithms by introducing the local objective function and the memoization partition function and reduce the synthesis task to two smaller independent program synthesis tasks. Moreover, the number of distinct outputs of the function synthesized in the second synthesis task also decides the efficiency of the synthesized memoization algorithm, and we only need to minimize the number of different output values of the synthesized function. However, the generated synthesis task is still too complex for existing synthesizers. Thus, we propose a novel synthesis algorithm that combines the deductive and inductive methods to solve these tasks. To evaluate our algorithm, we collect 42 real-world benchmarks from Leetcode, the National Olympiad in Informatics in Provinces-Junior, and previous approaches. Our approach successfully synthesizes 39/42 problems in a reasonable time, outperforming the baselines.
@inproceedings{Sun2023Memoization,title={Synthesizing Efficient Memoization Algorithms},author={Sun, Yican and Peng, Xuanyu and Xiong, Yingfei},booktitle={Object-Oriented Programming, Systems, Languages, and Applications},year={2023},doi={10.1145/3622800},}