Особенности языка Пролог
В языке Пролог сочетается использование нескольких важных концепций, к числу которых относятся:
1) применение фраз Хорна для представления знаний;
2) дескриптивный стиль программирования;
3) как декларативная, так и процедурная семантика;
4) возможность чередовать программный текст метауровня с текстом объектного уровня.
Как логические фразы Хорна записываются на языке Пролог?
Логическая или, точнее, хорновская логическая программа состоит из набора хорновских фраз, которые в языке Пролог называются фактами и правилами. Структура этих правил и фактов такова, что, с одной стороны, с их помощью довольно естественно описываются многие задачи, а с другой стороны, они допускают простую процедурную интерпретацию. Два этих обстоятельства и позволяют использовать язык фактов и правил в качестве языка программирования.
Фактом называется формула вида
P(t1,...,tn),
где P - предикатный символ, а t1,...,tn - термы, построенные из переменных, констант и функциональных символов. С точки зрения математической логики, факты - это атомарные формулы.
Правилом называется формула вида
A1 Ù ... Ù An Þ A0 (равносильная формула A0ÚØA1Ú...ÚØAn),
где все Ai - атомарные формулы (таким образом, факт - это частный случай правила). В обозначениях Пролога эту формулу принято записывать по-иному:
A0 :- A1,A2,...,An.
Запросом к логической программе называется формула вида
A1Ù...ÙAn,
где все Ai - атомарные формулы, вместе с приглашением Пролога на ввод такой запрос записывается в виде
?- A1,A2,...,An.
Запрос, не содержащий переменных, читается так: верно ли, что A1 и ... и An? Если же в атомарных формулах запроса содержатся переменные X1,...,Xm, то его следует читать иначе: для каких объектов X1,...,Xm верно A1 и ... и An?
Мы будем использовать SWI-prolog (1994, University of Amsterdam).
Основные синтаксические объекты: атомы, константы и переменные. Константы
состоят из атомов и чисел. Числа - целые и вещественные. Атомы - обозначения для других постоянных объектов предметной области. Атомы могут изображаться тремя различными способами:
1) последовательностью латинских букв, цифр, начинающейся со строчной буквы;
2) последовательностью, состоящей из специальных символов
<---> | ==>| ... | &,
(Не используйте для обозначения атомов следующие комбинации и отдельные символы :- | , | ; | . | ! );
3) любыми последовательностями символов, заключенными в апострофы (в т.ч. и русскими буквами).
Атомы используются и для обозначения предикатных символов, некоторые предикатные символы являются встроенными. Переменные обозначаются любыми последовательностями латинских букв или цифр, начинающимися с большой буквы или символа подчеркивания.
Главным компонентом интерпретатора языка Пролог является универсальный механизм решения задач, принцип действия которого основан на правиле резолюции. Для того, чтобы воспользоваться этим механизмом, программист должен четко описать задачу при помощи фраз Хорна, выраженных на языке Пролог. В каждой фразе формулируется некоторое отношение между термами. Терм - это обозначение, представляющее некоторую сущность из исследуемого мира. Для того, чтобы привести в действие данный механизм решения задач, программист должен написать запрос, согласно которому будет необходимо выяснить, является ли конкретная атомарная формула следствием текущего множества фраз, представленных в программе.