1 unstable release
0.1.0 | Oct 31, 2023 |
---|
#690 in Development tools
25 downloads per month
415KB
10K
SLoC
Contains (Zip file, 4KB) vscode/eggsmol-1.0.0/eggsmol-1.0.0.vsix
egglog
This is 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://egg-smol-python.readthedocs.io/en/latest/
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
.
VS Code plugin
There is a VS Code extension in the vscode folder. Install using 'Install from VSIX...' in the three-dot menu of the extensions tab and pick vscode/vscode/egglog.vsix
.
Enhancing the VS code extension
If you want to hack on the VS Code extension, install nodejs, and make your changes in the files in the vscode/egglog-1.0.0
folder.
Then run
code vscode/egglog-1.0.0
and use F5 to run the extension in a new window. When satisfied, then install VSCE if you do not already have it:
npm install -g @vscode/vsce
Run vsce package
in the vscode/egglog-1.0.0
folder to reconstruct the .vsix file and install it manually.
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
~12–27MB
~334K SLoC