3 releases (breaking)
0.3.0 | Oct 2, 2024 |
---|---|
0.2.0 | May 24, 2024 |
0.1.0 | Oct 31, 2023 |
#136 in Programming languages
73 downloads per month
475KB
12K
SLoC
egglog
This is the repo for the egglog
tool accompanying the paper
"Better Together: Unifying Datalog and Equality Saturation"
(ACM DL, arXiv).
If you use this work, please use this citation.
See also the Python binding, which provides a bit more documentation: https://egglog-python.readthedocs.io/
Chat
There is a Zulip chat about egglog here: https://egraphs.zulipchat.com/#narrow/stream/375765-egglog
Prerequisites & compilation
apt-get install make cargo
cargo install cargo-nextest
make all
Usage
cargo run [-f fact-path] [-naive] [--to-json] [--to-dot] [--to-svg] <files.egg>
or just
cargo run
for the REPL.
- The
--to-dot
command will save a graphviz dot file at the end of the program, replacing the.egg
extension with.dot
. - The
--to-svg
, which requires Graphviz to be installed, will save a graphviz svg file at the end of the program, replacing the.egg
extension with.svg
.
Community extensions
- @hatoo maintains an egglog-language extension in VS Code (just search for "egglog" in VS Code).
- @segeljakt maintains a Neovim plugin for egglog using tree-sitter.
Development
To run the tests use make test
.
Documentation
To view documentation, run cargo doc --open
.
TODO migrate the following documentation to cargo doc:
Sort: i64
Signed 64-bit integers supporting these primitives:
+ - * / % ; arithmetic
& | ^ << >> not-i64 ; bit-wise operations
< > <= >= ; comparisons
min max log2
to-f64
to-string
Sort: f64
64-bit floating point numbers supporting these primitives:
+ - * / % ; arithmetic
< > <= >= ; comparisons
min max neg
to-i64
to-string
Sort: map
A map from a key type to a value type supporting these primitives:
empty
insert
get
not-contains
contains
set-union
set-diff
set-intersect
map-remove
Sort: rational
Rational numbers (fractions) with 64-bit precision for numerator and denominator with these primitives:
+ - * / ; arithmetic
min max neg abs floor ceil round
rational ; construct from a numerator and denominator
numer denom ; get numerator and denominator
pow log sqrt
< > <= >= ; comparisons
These primitives are only defined when the result itself is a pure rational.
Sort: string
Use double quotes to get a quote: "Foo "" Bar"
is Foo " Bar
.
No primitives defined.
Dependencies
~14–28MB
~383K SLoC