  Yet Another Prolog (YAP) is a Prolog system originally developed in the
mid-eighties and that has been under almost constant development since then.
This paper presents the general structure and design of the YAP system,
focusing on three important contributions to the Logic Programming community.
First, it describes the main techniques used in YAP to achieve an efficient
Prolog engine. Second, most Logic Programming systems have a rather limited
indexing algorithm. YAP contributes to this area by providing a dynamic
indexing mechanism, or just-in-time indexer (JITI). Third, a important
contribution of the YAP system has been the integration of both or-parallelism
and tabling in a single Logic Programming system.
