/ego

EGraphs in OCaml

Primary LanguageOCamlGNU General Public License v3.0GPL-3.0

Ego - EGraphs in OCaml

Ego (EGraphs OCaml) is an OCaml library that provides generic equality saturation using EGraphs.

The design of Ego loosely follows the design of Rust's egg library, providing a flexible interface to run equality saturation extended with custom user-defined analyses.

(* create an egraph *)
let graph = EGraph.init ()
(* add expressions *)
let expr1 = EGraph.add_sexp graph [%s ((a << 1) / 2)]
(* Convert to graphviz *)
let g : Odot.graph = EGraph.to_dot graph