diff --git a/lib/datalog/scoreboard.json b/lib/datalog/scoreboard.json index 28545113..43ef5417 100644 --- a/lib/datalog/scoreboard.json +++ b/lib/datalog/scoreboard.json @@ -1,13 +1,13 @@ { "lang": "datalog", - "total_passed": 219, + "total_passed": 220, "total_failed": 0, - "total": 219, + "total": 220, "suites": [ {"name":"tokenize","passed":26,"failed":0,"total":26}, {"name":"parse","passed":18,"failed":0,"total":18}, {"name":"unify","passed":28,"failed":0,"total":28}, - {"name":"eval","passed":28,"failed":0,"total":28}, + {"name":"eval","passed":29,"failed":0,"total":29}, {"name":"builtins","passed":19,"failed":0,"total":19}, {"name":"semi_naive","passed":8,"failed":0,"total":8}, {"name":"negation","passed":10,"failed":0,"total":10}, @@ -16,5 +16,5 @@ {"name":"magic","passed":22,"failed":0,"total":22}, {"name":"demo","passed":21,"failed":0,"total":21} ], - "generated": "2026-05-08T10:23:54+00:00" + "generated": "2026-05-08T10:27:32+00:00" } diff --git a/lib/datalog/scoreboard.md b/lib/datalog/scoreboard.md index 590c3c02..65bbd501 100644 --- a/lib/datalog/scoreboard.md +++ b/lib/datalog/scoreboard.md @@ -1,13 +1,13 @@ # datalog scoreboard -**219 / 219 passing** (0 failure(s)). +**220 / 220 passing** (0 failure(s)). | Suite | Passed | Total | Status | |-------|--------|-------|--------| | tokenize | 26 | 26 | ok | | parse | 18 | 18 | ok | | unify | 28 | 28 | ok | -| eval | 28 | 28 | ok | +| eval | 29 | 29 | ok | | builtins | 19 | 19 | ok | | semi_naive | 8 | 8 | ok | | negation | 10 | 10 | ok | diff --git a/lib/datalog/tests/eval.sx b/lib/datalog/tests/eval.sx index 9c688f86..c3e056ea 100644 --- a/lib/datalog/tests/eval.sx +++ b/lib/datalog/tests/eval.sx @@ -273,6 +273,17 @@ (dl-saturated? db)) false) + ;; A relation can be both EDB-seeded and rule-derived; + ;; saturate combines facts + derivations. + (dl-et-test-set! "mixed EDB + IDB same relation" + (dl-query + (dl-program + "link(a, b). link(c, d). link(e, c). + via(a, e). + link(X, Y) :- via(X, M), link(M, Y).") + (list (quote link) (quote a) (quote X))) + (list {:X (quote b)} {:X (quote c)})) + (dl-et-test! "saturated? after assert" (let ((db (dl-program "parent(a, b).