hegg (hackage): Fast equality saturation and equality graphs based on "egg: Fast and Extensible Equality Saturation" and "Relational E-matching".  This package provides e-graphs (see Data.Equality.Graph), a data structure which efficiently represents a congruence relation over many expressions.  For a monadic interface to e-graphs check out Data.Equality.Graph.Monad (home to the convenient function represent).  Secondly, it provides functions for doing equality saturation (see Data.Equality.Saturation), an optimization/term-rewriting technique that applies rewrite rules non-destructively to an expression represented in an e-graph until saturation, and then extracts the best representation.  Equality matching (see Data.Equality.Matching) is done as described in "Relational E-Matching"  For a walkthrough of writing a simple symbolic simplification program see the hegg symbolic tutorial.  Additional information can be found in the README.
Keywords: bsd3|data|library|egraphs|equality-saturation|haskell