Логическое программирование. Язык Пролог

Основные конструкции

В математической логике теории задаются при помощи аксиом и правил вывода. То же самое можно наблюдать и в языке Пролог.

В нем аксиомы принято называть фактами.

Факты

Факты, они же аксиомы, принято представлять как правила с пустой «посылкой» (6.1).

В виде фактов в программе записываются данные, которые принимаются за истину и не требуют доказательства. Данные в фактах могут быть использованы для логического вывода. Факт может описывать некоторые свойства объекта или отношения между объектами. Можно дать следующее определение факта: факт — это свойство объекта или отношение между объектами, для которого известно, что оно истинно.

Примеры фактов:

%объект кот - черный

black (cat).

%города Новосибирск и Омск связаны железной дорогой railway (novosibirsk, omsk).

Правила

Правила вывода в Прологе ограничены по форме до так называемых «дизъюнктов Хорна» — утверждений вида А <= В1 &... & Вп. В Прологе такие утверждения записываются в виде.

Правило вывода состоит из двух частей, разделенных условным обозначением которое читается как «если», или «при условии, что». Левая часть правила вывода А называется заголовком, или головной целью. Правая часть правила вывода — последовательность Bi называется телом правила. Тело правила может состоять из нескольких условий (хвостовых целей, подцелей), перечисленных через запятую или точку с запятой. Запятая означает операцию «логическое И», точка с запятой — операцию «логическое ИЛИ». Использовать скобки в теле правила вывода нельзя.

Головная цель правила вывода считается доказанной, если доказаны все подцели в теле правила вывода.

Пример правил вывода:

% Объект, обозначенный переменной Bird,

% является пингвином, если объект умеет плавать

% и у него есть крылья

penguin (Bird):- swim (Bird), wings(Bird).

% Некоторый объект, обозначенный переменной Bird,

% является страусом, если объект не умеет летать,

% у него длинные ноги и есть крылья

ostrich (Bird):- not_fly (Bird), long_legs (Bird), wings(Bird).

Заметим, что факт является частным случаем правила при п = 0, а вопрос можно рассматривать как правило без заголовка. Учитывая это обстоятельство, правила, факты и вопросы (запросы, цели) называют предложениями.

В предложениях используются переменные для обобщенной формулировки правил вывода. Все предложения обязательно заканчиваются точкой.

Возможны два способа интерпретации правил.

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

Введенное нами правило следует понимать так: «Для всех объектов Bird, если объект не умеет летать, у него длинные ноги и есть крылья, то X — является страусом». Такой способ толкования обычно называют декларативной интерпретацией правил.

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

Каждое действие, связанное с ответом на вопрос, можно рассматривать как вызов процедуры, имя которой определяется функтором терма, а параметры — его аргументами.

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

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >