  Higher-order logic programming is an interesting extension of traditional
logic programming that allows predicates to appear as arguments and variables
to be used where predicates typically occur. Higher-order characteristics are
indeed desirable but on the other hand they are also usually more expensive to
support. In this paper we propose a program specialization technique based on
partial evaluation that can be applied to a modest but useful class of
higher-order logic programs and can transform them into first-order programs
without introducing additional data structures. The resulting first-order
programs can be executed by conventional logic programming interpreters and
benefit from other optimizations that might be available. We provide an
implementation and experimental results that suggest the efficiency of the
transformation.
