Files
rose-ash/lib/datalog/scoreboard.md
giles 5a1dc4392f
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 54s
datalog: anonymous _ vars are unique per occurrence (Phase 5d, 156/156)
(p X _), (p _ Y) — the two _ are now different variables, matching
standard Datalog semantics. Previously both _ symbols were the same
SX symbol, so unification across them gave wrong answers.

Fix in db.sx: dl-rename-anon-term + dl-rename-anon-lit walk a term
or literal and replace each '_' symbol with a fresh _anon<N>.
dl-make-anon-renamer returns a counter-based name generator scoped
per call. dl-rename-anon-rule applies it to head and body of a
rule. dl-add-rule! invokes the renamer before safety check.

eval.sx: dl-query renames anon vars in the goal before search and
filters '_' out of the projection so user-facing results aren't
polluted with internal _anon<N> bindings.

The previous "underscore in head ok" test now correctly rejects
(p X _) :- q(X) as unsafe (the head's fresh anon var has no body
binder). New "underscore in body only" test confirms the safe
case. Two regression tests for rule-level and goal-level
independence.
2026-05-08 08:58:17 +00:00

394 B

datalog scoreboard

156 / 156 passing (0 failure(s)).

Suite Passed Total Status
tokenize 26 26 ok
parse 18 18 ok
unify 28 28 ok
eval 18 18 ok
builtins 19 19 ok
semi_naive 8 8 ok
negation 10 10 ok
aggregates 10 10 ok
api 9 9 ok
demo 10 10 ok