Common Prolog is a logic programming system within Common Lisp. It conforms closely to Edinburgh Prolog and at the same time integrates well with Lisp. The basic syntax of Common Prolog is Lisp-like, but an Edinburgh syntax translator is included that provides the ability to use pre-existing code. The implementation of Common Prolog was motivated by the desire to use the logic programming paradigm without having to give up the advantages of a Lisp development environment. Common Prolog is tightly integrated with Lisp and can be easily used in a mixed fashion with Lisp definitions even within the same source file. Common Prolog predicates are compiled into Lisp functions which may then be compiled by a standard Lisp compiler. Substantial effort has gone into providing a powerful debugging environment for Common Prolog, so that it can be used when building serious applications. The implementation of Common Prolog is based loosely on the Warren Abstract Machine (WAM) modified to take advantage of a Lisp environment's built in support for control flow and memory allocation. (For more details of the WAM, see An Abstract Prolog Instruction Set, by David H D Warren, Technical Note 309, SRI International, October 1983.)
KnowledgeWorks and Prolog User Guide (Unix version) - 24 Mar 2017