# Skolem chase: deterministic labeled nulls for existential variables. # # With the Skolem variant, re-applying a rule with the same frontier # bindings reuses the same null value, so the chase terminates even for # rules that introduce existentials. Compare this with the oblivious # variant, which generates a fresh null each round and hits the step # limit. # # NOTE: the REPL uses the restricted chase by default. To run with the # Skolem variant, use the Rust API: # # let result = skolem_chase(instance, &rules); fact Person(alice). fact Person(bob). fact Person(carol). # Every person has an id (existential Y). rule Person(?X) -> HasId(?X, ?Y). run. query HasId(?X, ?Y)?