Запись правил и процедур

 

Правила в Прологе используются для описания определений, запросов к базам данных, а также обращений к другим правилам и процедурам. Примеры записи правил:

родитель (х,у) ← мама (х,у);

родитель (х,у) ← папа (х,у);

бабушка (x,z) ← мама (х,у), родитель (y,z);

дедушка (x,z) ← папа (х,у), родитель (y,z);

 

Общая форма записи правил на Прологе:

правило:

 

Здесь <заголовок> отделяется от <определения> двумя знаками: «меньше» и «тире». В конце правила записывается «точка с запятой».

 

Заголовки правил имеют следующую форму:

заголовок:

 

Здесь <имя> — это любое слово или словосочетание. В роли параметров в заголовках правил могут указываться переменные или конкретные значения либо неопределенные значения с помощью знака подчеркивания [ _ ].

Описание заголовка служит образцом записи обращений к правилам и процедурам. Определения в правилах образуются из обращений к другим правилам и процедурам, а также из запросов к данным и встроенным процедурам Пролога. Общая форма записи определений в правилах:

 

определение:

 

Запросы и определения отделяются в описаниях правил запятыми и записываются по тем же правилам, что и заголовки.

 

Порядок записи обращений и запросов в определениях правил в языке Пролог весьма существен, поскольку он задает порядок их применения и выполнения. Нарушение этого порядка может привести к значительному изменению конечных результатов выполнения правил и процедур.

 

Результатом выполнения любых процедур и правил в Прологе всегда являются логические значения — ДА либо НЕТ, соответствующие успеху или неуспеху их применения. В этом смысле применение правил в Прологе совпадает с проверкой условий в логике. Соответственно форма записи обращений к правилам и процедурам в Прологе совпадает с формой записи предикатов в математической логике.

 

Однако в отличие от математической логики, где существенны только логические значения этих предикатов, в Прологе результатом применения правил и процедур может быть конкретизация значений переменных, указанных в обращениях к ним.

 

Пример такого обращения:

? родитель (х,вова)

х = зина

 

Полученный ответ имеет двойной результат: во-первых, подтверждение истинности наличия«родителей»у«вовы», а во-вторых, конкретизация переменной «х» в обращении к процедуре«родитель» с именем«вова», которая дает значение «х = зина».

 

Кроме конкретизации значений переменных в запросах и обращениях результатами выполнения процедур и правил в Прологе могут быть различного рода побочные эффекты — вывод на экран линий, точек, картинок, сообщений, запись и считывание данных и т. п.

 

В этом смысле результаты выполнения процедур и программнаПрологе могут быть эквивалентны результатам выполнения программ на других языках программирования.