datalog: SX-data embedding API (Phase 9, 143/143)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 57s

New lib/datalog/api.sx: dl-program-data facts rules takes SX data
lists. Rules accept either dict form or list form using <- as the
rule arrow (since SX parses :- as a keyword). dl-rule constructor
for the dict shape. dl-assert! adds a fact and re-saturates;
dl-retract! drops EDB matches, wipes all rule-headed IDB
relations, and re-saturates from scratch — simplest correct
semantics until provenance tracking arrives.

9 API tests cover ancestor closure via data, dict-rule form,
dl-rule constructor, incremental assert/retract, cyclic-graph
reach, assert into empty, fact-style rule (no arrow), dict
passthrough.
This commit is contained in:
2026-05-08 08:34:08 +00:00
parent 6d04cf7bf2
commit ce603e9879
6 changed files with 396 additions and 14 deletions

View File

@@ -1,8 +1,8 @@
{
"lang": "datalog",
"total_passed": 134,
"total_passed": 143,
"total_failed": 0,
"total": 134,
"total": 143,
"suites": [
{"name":"tokenize","passed":26,"failed":0,"total":26},
{"name":"parse","passed":18,"failed":0,"total":18},
@@ -11,7 +11,8 @@
{"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},
{"name":"aggregates","passed":10,"failed":0,"total":10}
{"name":"aggregates","passed":10,"failed":0,"total":10},
{"name":"api","passed":9,"failed":0,"total":9}
],
"generated": "2026-05-08T08:28:29+00:00"
"generated": "2026-05-08T08:33:54+00:00"
}