Published October 16, 2024 | Version v1
Software Open

Dis/Equality Graphs

Description

E-graphs are a data structure to compactly represent a program space and reason about equality of program terms. E-graphs have been successfully applied to a number of domains, including program optimization and automated theorem proving. In many applications, however, it necessary to reason about disequality of terms, not only about equality. While disequality reasoning can be encoded, direct support for disequalities increases performance and simplifies the metatheory.

In this artifact, we present an extension of e-graphs that directly supports disequalities and demonstrate empirically its efficiency compared to embedding techniques that are commonly used in SMT solvers and automated verifiers.

We offer two implementations: the first is an extension to egg, a popular e-graph Rust library, and the second is in Scala. We evaluate our solution in an SMT solver and an automated theorem prover using standard benchmarks. The results indicate that direct support for disequalities significantly outperforms other encodings based on disequality embedding, confirming the results obtained analytically.

Files

die-graph.zip

Files (795.0 MB)

Name Size Download all
md5:fc6661447dcbc1c01a8330db664df094
795.0 MB Preview Download