система может пытаться решить задачу
pred4(X,Z):-
pred4(X,Y),
parent(Y,Z).
pred4(X,Z):-
parent(Y,Z).
?- pred4(tom,pat).
==> бесконечный цикл
Данный пример показывает, как пролог- система может пытаться решить задачу таким способом, при котором решение никогда не будет достигнуто, хотя оно существует. Такая ситуация не является редкостью при программировании на Прологе (как и на других языках).
Рекомендации:
1) в первую очередь применяйте самое простое правило;
2) избегайте левой рекурсии.