Details zum Backtracking
Mit der Wissenbasis
p(a).
p(b).
c:-p(X).
reagiert Prolog auf die Anfrage
?- c. mit
yes. Ein Trace zeigt, dass sich das
System mit der Ersetzung
p(a) zufriedengibt.
b wird also nicht in
p
eingesetzt. Das liegt daran, dass das Prädikat
c nullstellig ist. Schreibt man
c(X):-p(X), so werden alle Möglichkeiten für
X getestet und ausgegeben.
Dieses Backtracking kann man auch mit dem Prädikat
fail erzwingen, wie folgende
Wissensbasis zeigt:
p(a).
p(b).
c:-p(X),fail.
c:-p(X).
Bitte mit
trace. überprüfen!