Je nach Prädikat erwartet Prolog instantiierte (+
) oder uninstantiierte (-
) Argumente, wobei deren Modus auf den Informationsfluss im Programm hindeutet. Bei In-/Out-Parametern (?
) entscheidet erst die Instantiierung beim Beweisen, ob anhand des Parameters gefiltert oder konstruiert wird. Deshalb ist es sinnvoll, die Terme im Rumpf prozedural geschickt anzuordnen. Der Kontrollfluss lässt sich prozedural strukturieren, indem man Konjunktionen als Sequenz, mehrfache Klauseln (eliminierte Disjunktion) als Alternation und Regeln als Abstraktion betrachtet. Desweiteren lassen sich folgende Prädikate gebrauchen: fail/0
(unerfüllbar) und Cut !/0
, das Suchbäume stutzt (hierbei geht aber die deklarative Semantik verloren).
Die Nicht-Beweisbarkeit \+/1
ist nur bei vollständig definierten Prädikaten äquivalent zur logischen Negation.