Опубликован: 12.02.2014 | Уровень: для всех | Доступ: платный
Лекция 1:

Определение отношений в программе

Лекция 1: 123456 || Лекция 2 >

В настоящей главе вводятся основные понятия логического программирования и базовые понятия языка Пролог. Рассматриваются примеры определения отношений в программе на языке Пролог. Показывается, как использовать интерпретатор PIE для написания программ на языке Пролог, а также как создавать консольные приложения в системе Visual Prolog. Описываются основные разделы программы в языке Visual Prolog.

1.1. Понятие логической программы

Логическая программа — это последовательность предложений, описывающих отношения между элементами, или объектами, некоторой задачи. Объекты представляются термами. Термы определяются индуктивно — это константы, переменные или выражения вида f(t_1,t_2,\dots,t_m), где f — функциональный символ, а t_1,t_2,\dots,t_m — термы. Термы без переменных называются основными, или замкнутыми термами. Отношения описываются с помощью предикатов. Выражения вида p(t_1,t_2,\dots,t_n), где p — имя предиката, а t_1,t_2,\dots,t_n — термы, называются атомарными формулами. Атомарная формула или ее отрицание называется литералом.

Предложение логической программы имеет вид:

A_1\&A_2\&\dots \&A_k\to A_0,

где \& — знак конъюнкции, \to — знак импликации, A_0 — атомарная формула, а A_1, A_2,\dots, A_k — литералы. На языке Пролог такое предложение записывается следующим образом:

A_0:- A_1, A_2, \dots, A_k.

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

заголовок :- тело .

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

По умолчанию предполагается, что переменные в правилах программы связаны кванторами всеобщности, а в запросе — кванторами существования.

Рассмотрим программу

млекопитающее("слон").
млекопитающее("зебра").

животное("страус").
животное("уж").
животное(X):- млекопитающее(X).

С помощью фактов определяются безусловные отношения. Отношению "млекопитающее" принадлежат элементы "слон" и "зебра". В программе они представлены константами. Соответственно, область истинности предиката млекопитающее имеет вид: {слон, зебра}.

Правило выражает импликацию

\forall x(млекопитающее(x)\to животное(x)).

Областью истинности предиката животное является множество {страус, уж, слон, зебра}.

Вопросы бывают частные и общие, простые и составные. Частные вопросы помогают выяснить, верно ли, что заданные элементы принадлежат отношению:

?- животное("зебра").

В ответе на частный запрос отмечается истинность или ложность цели.

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

?- животное(Z).

Ответом на запрос является множество значений переменных, при которых формула цели является истинной.

Простые вопросы состоят из одной цели, составные — из нескольких, их называют подцелями. В составных вопросах подцели соединяются знаками конъюнкции "," или знаками дизъюнкции ";" (см. упр. 2). В первом случае запрос называется конъюнктивным, во втором — дизъюнктивным. Значения переменных в подцелях, разделенных знаками дизъюнкции, не связаны между собой.

Переменные в языке Пролог локальны и имеют математический смысл. Их значение сохраняется только на протяжении одного правила. Они не объявляются, в любом предложении их всегда можно переименовать. Переменные пишутся с прописной буквы или начинаются со знака подчеркивания. Состоят только из знака подчеркивания или начинаются с него анонимные переменные, которые не принимают никаких значений. Если в предложении встречается несколько анонимных переменных, то все они считаются разными переменными, хотя и обозначаться могут одинаково, например, с помощью только знака подчеркивания "_".

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

В языке Visual Prolog комментарий до конца строки начинается со знака %. Между знаками /* и */ можно заключать комментарии произвольной длины.

Всюду ниже обозначение p/n используется для указания арности отношения или предиката: предикат p имеет арность n.

Лекция 1: 123456 || Лекция 2 >
Жаныл Айкын
Жаныл Айкын
Rustam Inatov
Rustam Inatov

Доброго времени суток, подскажите пожалуйста, visual prolog examples, pie, vip7.5 - это все, где я могу скачать? (в смысле) может быть на сайте есть какой-то архив? Увы я не нашел его.

Подскажите, пожалуйста.

С уважением, Рустам.

Айдана Ахметова
Айдана Ахметова
Россия
Дмитрий Куянов
Дмитрий Куянов
Россия, Омск, ОмГТУ