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 |