For efficiency, Prolog code is typically compiled to abstract machine code before it is run.
Many different abstract machine architectures and variants have been proposed for efficient execution of Prolog programs. These include: