Wird eine Variable beim Unifizieren an einen Term gebunden, in welchem diese Variable wiederum vorkommt, entsteht ein zyklischer Term. Diese sind mit Vorsicht zu geniessen und lassen sich durch das Prädikat unify_with_occurs_check/2
vermeiden.
Zum Auffinden von Fehlern (Debuggen) bietet Prolog ein Reihe von nützlichen Prädikaten:
listing/0, listing/1
zeigt den Inhalt der benutzerdefinierten Wissensbasis an.
trace/0
schaltet den Verfolgungsmodus ein, wobei jeder Portdurchgang einer Byrds Box ausgegeben wird. Eine Byrds Box repräsentiert ein Prädikat, mit 4 Ports als Ein- bzw. Ausgänge: call für den Erstaufruf, exit für einen gelungenen Beweis, redo für einen Backtrackingaufruf und fail, falls das Prädikat nicht bewiesen werden konnte. Konjunkiv verknüpfte Prädikate ergeben nacheinander stehende Boxen, Unterziele von Regeln bilden verschachtelte Boxen.
debug/0
und spy/1
schaltet erst in den Verfolgungsmodus, wenn das bei spy/1
angegebene Prädikat verarbeitet wird.
Schliesslich existieren in Prolog Exceptions, welche beim Auftreten von Fehlern generiert werden. Diese haben einen eigenen, fünften Port in einer Byrds Box, welcher ein Verlassen quer zum Beweisvorgang erlaubt.