Предикаты этого вида всегда завершаются успешно и имеют одно решение.
Multi
Такой предикат не может завершиться неудачно, при этом он имеет множество решений.
Nondeterm
Недетерминированный предикат может завершиться либо неудачно, либо успешно, и при этом иметь множество решений.
Если предикат имеет много решений и одно из его решений не в состоянии удовлетворить другой предикат в той же конъюнкции, то Пролог осуществляет откат (backtrack) и предлагает другое решение в попытке удовлетворить эту конъюнкцию.
Примеры.
gr_father: (symbol, symbol) nondeterm anyflow.
factorial: (integer,integer) procedure(i,o).
Раздел clauses
Этот раздел состоит из правил. Правила записываются в формате:
H:- T1, T2, T3, …
и читаются таким образом: предикат H выполняется, если выполняются все из перечисленных условий T1, T2, T3 и т.д.
Раздел goal
В этом разделе формулируется вопрос и потому он называется разделом целей. Если цель расположена в тексте программы, то она называется внутренней, если в окне диалога, то внешней. Внешняя цель дает возможность получать все решения задачи, внутренняя – только первое.
Для удобства чтения программы в Прологе предусмотрены комментарии:
% – комментарий до конца строки;
/* текст, который не является программой */ – длинный комментарий.
Примеры построения правил