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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(datatype list
    (Cons i64 list))
(constructor EmptyConst () list)
(let $Empty (EmptyConst))

(relation eq (list list))

(eq $Empty $Empty)

(rule ((= x (Cons x1 rest1)) (= y (Cons x2 rest2)) (= x1 x2) (eq rest1 rest2))
      ((eq (Cons x1 rest1) (Cons x2 rest2))))

(let $mylist (Cons 1 $Empty))

(run 100)