egg (e-graphs good) is a e-graph library optimized for equality saturation.
This is the API documentation.
The tutorial is a good starting point if you're new to e-graphs, equality saturation, or Rust.
The tests on Github provide some more elaborate examples.
There is also a paper
egg and some of its technical novelties.
A Guide-level Explanation of
A macro to easily create a
A macro to easily make
Make a test function
An equivalence class of enodes.
A data structure to keep track of equalities between expressions.
Data generated by running a
A recursive expression from a user-defined
A rewrite that searches for the lefthand side and applies the righthand side.
Faciliates running rewrites over an
The result of searching a
A very simple
An interned string.
A simple language used for testing.
The language of
Error returned by
Arbitrary data associated with an
The righthand side of a
A condition to check in a
A cost function that can be used by an
Trait that defines a Language whose terms will be in the
A marker that defines acceptable children types for
The lefthand side of a
Replace the first with second value if they are different returning whether or not something was done.