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

(rule ((edge x y))
      ((path x y)))

(edge 1 2)
(edge 2 3)
(edge 3 4)
(check (edge 1 2))
(run 3)
(check (path 1 2))

(ruleset path-rules)

(rule ((path x y) (edge y z))
      ((path x z))
      :ruleset path-rules)

(edge 3 8)
(run path-rules 1)
(check (path 1 3))



; Should fail
; (check (path 1 4))
; (check (path 3 8))