package ego
Library
Module
Module type
Parameter
Class
Class type
Ego is an extensible egraph library for OCaml. The interface to Ego is loosely based on the Rust's egg library and reimplements their EClass analysis in pure OCaml.
Ego provides two interfaces to its equality saturation engine:
1. Ego.Basic
- an out-of-the-box interface to pure equality saturation (i.e supporting only syntactic rewrites).
2. Ego.Generic
- a higher order interface to equality saturation, parameterised over custom-user defined analyses.
You may want to check out the quick start guide.
module Id : sig ... end
module Basic : sig ... end
This module implements a fairly efficient "syntactic-rewrite-only" EGraph-based equality saturation engine that operates over Sexps.
module Generic : sig ... end
This module implements a generic EGraph-based equality saturation engine that operates over arbitrary user-defined languages and provides support for extensible custom user-defined EClass analyses.