Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Spec_Mov_3k_4k_Lect.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.46 Mб
Скачать

Правила

Логическая программа может включать правила, общий формат которых, можно представить так:

H:- P1, P2, …, PN.

Здесь H, P1, P2, …, PN – простые предикаты. Читается это так: «H, если P1 и P2 и …и PN». Предикат H – заголовок правила, P1, P2, …, PN – тело правила. Правила являются аналогами следующих Хорновских дизъюнктов: «(P1 & P2 & …& PN) É H». Все переменные в правилах связаны кванторами общности.

Пример

дед(X, Y):- отец(X, Z), мать(Z, Y).

Это правило читается так: "x"y"z[отец(x, z) & мать(z, y) É дед(x, y)].

Т.о., факт представляет правило без правой части (без тела), а вопрос – без левой (без головы правила).

Зоны видимости имен

Для переменной областью ее видимости являются факт, правило или вопрос, ее содержащие. Для функторов, символьных констант – область видимости – вся программа.

Логическая программа

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

Пример

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

fakt(X, 1):- le(X, 0).

fakt(N, Fakt):- sub(N, 1, N1), fakt(N1, Fakt1), mult(N, Fakt1, Fakt).

?- fakt(2, X).

Для выполнения данной процедуры должны быть подходящие реализации для предикатов le, sub и mult, встраиваемые в логическую систему и обеспечивающие вычисление X<=0, N1=N-1, X=N*X1.

Вопросы для самоконтроля

  • С какими языками связывают декларативную форму представления программ?

  • Что представляют собой термы в логическом программировании?

  • Как должны записываться переменные в логических программах?

  • Что из себя представляют факты в логических программах?

  • Как записывается анонимная переменная в логической программе?

  • Как в логической программе выглядит «да-нет» вопрос?

  • Как в логической программе выглядит экзистенциональный вопрос?

  • Что из себя представляет правило в логической программе?

  • Зона видимости переменной – вся программа или только правило?

Вопросы на самостоятельную проработку

К оглавлению

Лекция 2. Процедурная семантика интерпретатора Пролога

Основу вычислительной модели (ВМ) логических программ представляют алгоритмы унификации, подстановки и вычисления резольвенты. Если цель доказательства представляет собой конъюнкцию предикатов, то она удовлетворяется в том случае, когда посредством присваиваний переменным некоторых значений будут найдены такие примеры предикатов, что для каждого из них будут найдены их точные копии в базе данных (БД) программы. Такие представления предикатов в БД (без переменных) называются фактами. Факт удовлетворяет предикату, если он имеет такое же имя, столько же аргументов и те же константы на тех же местах, что и у предиката.

Метод резолюций

Метод резолюций, используемый в языке Пролог, является методом доказательства от противного, когда исходя из фактов, правил и отрицания цели, получают противоречие (пустой дизъюнкт - ). Вопрос является отрицанием цели, т.е. вопрос представляет собой следующую формулу:

a É  º ¬a Ú  º ¬a, где символы É, ¬, Ú обозначают, соответственно импликацию, отрицание и логическую связку «ИЛИ».

Интерпретатор (вычислитель) пролог-программ пытается обосновать противоречие между отрицанием цели доказательства и множеством фактов и правил. Удавшееся опровержение, т.е. вывод пустого дизъюнкта дает контрпримеры, - значения переменных из вопроса, представляющие собой ответ на поставленный вопрос. Ответ «НЕТ», формируемый Пролог-системой, - означает, что опровержение не найдено (целевое утверждение не доказано).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]