egg: Fast and Extensible Equality Saturation
E-graphs, originally developed for use in automated theorem provers, are data structures that compactly represent a large number of expressions and the equalities between them. Recently, a technique called equality saturation adapted e-graphs for program optimization. Equality saturation can ameliorate issues with traditional, destructive term rewriting since e-graph rewriting only adds information to the e-graph. After rewriting, the e-graph represents a large space of equivalent terms (including the original term), and a final extraction procedure selects the best term according to a user-provided cost function. The egg library is a fast and flexible open-source implementation of e-graphs and equality saturation. Unlike solvers, egg is a white-box library for programmatic use. Users can easily define their own languages, rewrites, and analyses, and they can inspect and manipulate the e-graph directly. It incorporates novel techniques such as e-class analysis , a mechanism for integrating program analyses modulo equality; and rebuilding , a deferred invariant restoration algorithm. egg has been used in hundreds of academic and industrial projects for program optimization, synthesis, and verification in many domains; some are briefly highlighted in this article.
Authors
- Pavel Panchekha (ORCID: https://orcid.org/0000-0003-2621-3592)
- Zachary Tatlock (ORCID: https://orcid.org/0000-0002-4731-0124)
- Yisu Remy Wang (ORCID: https://orcid.org/0000-0002-6887-9395)
- Max Willsey (ORCID: https://orcid.org/0000-0001-8066-4218)
- Oliver Flatt (ORCID: https://orcid.org/0000-0002-0656-235X)
- Chandrakana Nandi (ORCID: https://orcid.org/0000-0001-8633-8413)
Institutions
- University of California, Los Angeles (US)
- University of Washington (US)
- University of Utah (US)
- University of Washington Applied Physics Laboratory (US)
- University of California, Berkeley (US)
Publication Details
- Journal
- Communications of the ACM
- Published
- 2026-07-29
- DOI
- https://doi.org/10.1145/3815481
- Citations
- 133
- Primary Topic
- Software Testing and Debugging Techniques
- Type
- article
- Field-Weighted Citation Impact
- 0.00
Funders
- National Science Foundation