In 1983, David H. D. Warren presented an abstract architecture, well-suited to run Prolog
programs on. According to Warren, the actual Prolog code is supposed to be transformed
(or compiled) to an (abstract) meta-code, which then is to be executed on an abstract,
virtual machine. Today, most publicly available Prolog compilers use the architecture suggested
by Warren or at least a derivate of it.
In the course of the exercises accompanying the lecture "Artificial Intelligence I",
taught by H. Stoyan at the FAU in winter term 2001/2002, I have developed a Java implementation
of this WAM model, which is able to solve most of the tasks today's commercial Prolog implementations
can cope with.