Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

David Cao

dblp:182/4532 · DBLP profile ↗
← Back
3ranked-venue papers
1as first author
3since 2021 · last 2023
0000-0002-6163-1821ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 3 · 1 first-author · 3 since 2021

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
3 papers
Programming languages and type systems · 58% Program synthesis and code generation · 25% Program analysis · 14%

Topics — the 8 heaviest of 8, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems › term rewriting
equality saturation
1.322023
Better Together: Unifying Datalog and Equality Saturation · Proc. ACM Program. Lang. 2023
babble: Learning Better Abstractions with E-Graphs and Anti-unification · Proc. ACM Program. Lang. 2023
Programming languages and type systems › logic programming
datalog
0.712023
Better Together: Unifying Datalog and Equality Saturation · Proc. ACM Program. Lang. 2023
Program synthesis and code generation › inductive program synthesis
library learning
0.712023
babble: Learning Better Abstractions with E-Graphs and Anti-unification · Proc. ACM Program. Lang. 2023
Program analysis › static analysis
pointer analysis
0.712023
Better Together: Unifying Datalog and Equality Saturation · Proc. ACM Program. Lang. 2023
Programming languages and type systems
term rewriting
0.712023
Better Together: Unifying Datalog and Equality Saturation · Proc. ACM Program. Lang. 2023
Program synthesis and code generation
type-directed synthesis
0.612022
Type-directed program synthesis for RESTful APIs · PLDI 2022
Programming languages and type systems
equational theory
0.212023
babble: Learning Better Abstractions with E-Graphs and Anti-unification · Proc. ACM Program. Lang. 2023
Services computing and microservices › web service interfaces
RESTful APIs
0.212022
Type-directed program synthesis for RESTful APIs · PLDI 2022

Methods — techniques the papers use, named apart from their topics

term rewriting · 0.7equality saturation · 0.7e-graph anti-unification · 0.7congruence closure · 0.7type inhabitation · 0.6
YearPublicationVenuePosition
2023 babble: Learning Better Abstractions with E-Graphs and Anti-unification
abstract
Library learning compresses a given corpus of programs by extracting common structure from the corpus into reusable library functions. Prior work on library learning suffers from two limitations that prevent it from scaling to larger, more complex inputs. First, it explores too many candidate library functions that are not useful for compression. Second, it is not robust to syntactic variation in the input. We propose library learning modulo theory (LLMT), a new library learning algorithm that additionally takes as input an equational theory for a given problem domain. LLMT uses e-graphs and equality saturation to compactly represent the space of programs equivalent modulo the theory, and uses a novel e-graph anti-unification technique to find common patterns in the corpus more directly and efficiently. We implemented LLMT in a tool named babble. Our evaluation shows that babble achieves better compression orders of magnitude faster than the state of the art. We also provide a qualitative evaluation showing that babble learns reusable functions on inputs previously out of reach for library learning.
David Cao, Rose Kunkel, Chandrakana Nandi, Max Willsey, Zachary Tatlock, Nadia Polikarpova
Proc. ACM Program. Lang.1
2023 Better Together: Unifying Datalog and Equality Saturation
abstract
We present egglog, a fixpoint reasoning system that unifies Datalog and equality saturation (EqSat). Like Datalog, egglog supports efficient incremental execution, cooperating analyses, and lattice-based reasoning. Like EqSat, egglog supports term rewriting, efficient congruence closure, and extraction of optimized terms. We identify two recent applications -- a unification-based pointer analysis in Datalog and an EqSat-based floating-point term rewriter -- that have been hampered by features missing from Datalog but found in EqSat or vice-versa. We evaluate our system by reimplementing those projects in egglog. The resulting systems in egglog are faster, simpler, and fix bugs found in the original systems.
Yihong Zhang 0004, Yisu Remy Wang, Oliver Flatt, David Cao, Philip Zucker, Eli Rosenthal, Zachary Tatlock, Max Willsey
Proc. ACM Program. Lang.4
2022 Type-directed program synthesis for RESTful APIs
abstract
With the rise of software-as-a-service and microservice architectures, RESTful APIs are now ubiquitous in mobile and web applications. A service can have tens or hundreds of API methods, making it a challenge for programmers to find the right combination of methods to solve their task.
Zheng Guo 0003, David Cao, Davin Tjong, Jean Yang 0001, Cole Schlesinger, Nadia Polikarpova
PLDI2