egg: e-graphs good

The egg project uses e-graphs to provide a new way to build program optimizers and synthesizers.

An e-graph compactly represents many equivalent programs. These four e-graphs represent more and more (even infinite!) ways to write (a × 2) / 2. egg makes e-graphs fast and flexible enough for use in program optimization and synthesis.

The egg project maintains two systems that offer different ways to use e-graphs:

egg

egglog

EGRAPHS Community

The egg project is part of the larger EGRAPHS Community, which aims to bring together researchers and practitioners interested in e-graphs and related techniques. Check out the EGRAPHS Community resources, including:

News

For updates on egg itself, see the changelog.

Projects using egg and e-graphs

Check out Philip Zucker’s page on Awesome E-graphs for a list of egg and e-graph related projects. PRs are welcome to add your project to the list!

You can also see who's using egg on GitHub and Google Scholar.