1

According to this paper [1], higher-order Datalog is more expressive:

... we demonstrate that on ordered databases, for all k ≥ 2, k-order Datalog captures (k − 1)-EXPTIME. This result suggests that higher-order extensions of Datalog possess superior expressive power ...

But how is it possible for higher-order Datalog to be more expressive?

Can't we simply take every statement like

a(X, Y) :- b(X, Y, Z), a(Y, Z).

and rewrite it as:

p(a, X, Y) :- p(b, X, Y, Z), p(a, Y, Z).

using the same universal predicate p throughout?

This translation would allow us to quantify over what used to be predicates (a and b), while staying in the original first-order Datalog.

Can you give an example of what higher-order Datalog can express that first-order Datalog with the above translation scheme cannot?


[1] Non-paywalled link: https://arxiv.org/abs/1907.09820

MWB
  • 515
  • 3
  • 11

0 Answers0