Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 56s
dl-saturate! is now semi-naive: tracks a per-relation delta dict, and on each iteration walks every positive body-literal position, substituting the delta of its relation while joining the rest against the previous-iteration DB. Candidates are collected before mutating the DB so the "full" sides see a consistent snapshot. Rules with no positive body literal (e.g. (p X) :- (= X 5).) fall back to a one-shot naive pass via dl-collect-rule-candidates. dl-saturate-naive! retained as the reference implementation; 8 differential tests compare per-relation tuple counts on every recursive program. Switched dl-tuple-member? to indexed iteration instead of recursive rest (eliminates per-step list copy). Larger chains under bundled conformance trip O(n) membership × CPU sharing — added a Blocker to swap relations to hash-set membership.
23 lines
651 B
Plaintext
23 lines
651 B
Plaintext
# Datalog conformance config — sourced by lib/guest/conformance.sh.
|
|
|
|
LANG_NAME=datalog
|
|
MODE=dict
|
|
|
|
PRELOADS=(
|
|
lib/datalog/tokenizer.sx
|
|
lib/datalog/parser.sx
|
|
lib/datalog/unify.sx
|
|
lib/datalog/db.sx
|
|
lib/datalog/builtins.sx
|
|
lib/datalog/eval.sx
|
|
)
|
|
|
|
SUITES=(
|
|
"tokenize:lib/datalog/tests/tokenize.sx:(dl-tokenize-tests-run!)"
|
|
"parse:lib/datalog/tests/parse.sx:(dl-parse-tests-run!)"
|
|
"unify:lib/datalog/tests/unify.sx:(dl-unify-tests-run!)"
|
|
"eval:lib/datalog/tests/eval.sx:(dl-eval-tests-run!)"
|
|
"builtins:lib/datalog/tests/builtins.sx:(dl-builtins-tests-run!)"
|
|
"semi_naive:lib/datalog/tests/semi_naive.sx:(dl-semi-naive-tests-run!)"
|
|
)
|