egglog 2.0.0

egglog is a language that combines the benefits of equality saturation and datalog. It can be used for analysis, optimization, and synthesis of programs. It is the successor to the popular rust library egg.
Documentation
(datatype Expr 
  (Num i64 :cost 1)
  (Add Expr Expr :cost 5))

(constructor Fib (i64) Expr :cost 10)

(rewrite (Add (Num a) (Num b)) (Num (+ a b)))
(rewrite (Fib x) (Add (Fib (- x 1)) (Fib (- x 2)))
         :when ((> x 1)))
(rewrite (Fib x) (Num x)
         :when ((<= x 1)))

(let $f7 (Fib 7))
(run 1000)
(print-function Fib 10)
(extract $f7)
(check (= $f7 (Num 13)))