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
(relation edge (i64 i64))
(relation path (i64 i64))


(ruleset myrules1)
(rule ((edge x y))
      ((path x y))
      :ruleset myrules1)
(ruleset myrules2)
(rule ((path x y) (edge y z))
      ((path x z))
      :ruleset myrules2)

(unstable-combined-ruleset myrules-combined
    myrules1 myrules2)


(edge 0 1)
(edge 1 2)
(edge 2 3)
(edge 2 4)

(run-schedule
  (repeat 3 myrules-combined))


(check (path 0 1))
(check (path 0 2))
(check (path 0 3))
(check (path 0 4))
(check (path 1 2))
(check (path 1 3))
(check (path 1 4))