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