A Program Specialiser for Meta-level Compositions of Logic Programs
Meta-level compositions of object logic programs are naturally
implemented by means of meta-programming techniques.
Meta-interpreters defining program compositions however suffer
from a computational overhead that is due partly to the
interpretation layer present in all meta-programs, and
partly to the specific interpretation layer needed to
deal with program compositions.
We show that meta-interpreters implementing compositions
of object programs can be fruitfully specialised w.r.t.
meta-level queries of the form "Demo(E,G)", where "E"
denotes a program expression and "G" denotes a (partially
instantiated) object level query.
More precisely, we describe the design and implementation
of a declarative program specialiser that suitably
transforms such
meta-interpreters so as to sensibly reduce --- if not
to completely remove --- the overhead due to the handling of
program compositions.
In many cases the specialiser succeeds in
eliminating also the overhead due to meta-interpretation.