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 number (i64))


(ruleset myrules1)
(rule ()
      ((number 1))
      :ruleset myrules1)
(ruleset myrules2)
(rule ()
      ((number 2))
      :ruleset myrules2)

(unstable-combined-ruleset rules1and2
    myrules1 myrules2)

;; allowed to add to myrules2 and the change is reflected
(rule ()
      ((number 3))
      :ruleset myrules2)

;; not allowed to add to combined ruleset
(fail
 (rule ()
    ((number 4))
    :ruleset myrules1and2))


(fail
  (rule ()
    ((number 4))
    :ruleset unboundruleset))

(ruleset myrules5)
(rule ()
      ((number 5))
      :ruleset myrules5)

(unstable-combined-ruleset rules1and2and5
     rules1and2 myrules5)

(run-schedule
  rules1and2and5)

(check (number 1))
(check (number 2))
(check (number 3))
(check (number 5))
(fail (check (number 4)))