- •127994, Москва, ул. Образцова, 15
- •2.Теоретические основы логическоого программирования
- •2.1.Логика высказываний и логика предикатов.
- •2.1.1.Формулы. Синтаксис и семантика формул.
- •2.1.2.Интерпретация формул в логике высказываний.
- •2.1.3.Интерпретация в логике предикатов первого порядка
- •2.1.4.Равносильность формул логики высказываний
- •2.1.5.Тождественная истинность формул логики высказываний
- •2.1.6.Равносильность формул логики первого порядка
- •2.1.7.Тождественная истинность, общезначимость, выполнимость, противоречивость формул логики предикатов
- •2.1.8.Рассуждения в логике высказываний (предикатов)
- •2.2.Метод резолюций
- •2.2.1.Метод резолюций в логике высказываний
- •2.2.2.Подстановка и унификация
- •2.2.3.Метод резолюций для логики первого порядка
- •2.2.4.Стратегии метода резолюций
- •2.3.Отношения и предикаты
- •3.Пролог- язык РекуРсивно-логического программирования
- •3.1.Пролог-история возникновения
- •3.2.Синтаксис языка пролог
- •3.3.Семантика языка пролог
- •3.4.Язык пролог и метод резолюций. Логическая интерпретация языка Пролог.
- •3.5.Работа в пролог-системе
- •3.6.Описание инфиксных операций
- •3.7.Списки в языке пролог
- •3.8.Арифметика в языке пролог
- •3.9.Отсечение и отрицание в языке пролог
- •3.10.Встроенные предикаты языка пролог
- •3.11.Работа с базой данных в языке пролог
- •3.12.Предикаты поиска
- •3.13.Решение головоломки на языке пролог(задача Эйнштейна)
- •4.Лабораторные работы по РекуРсивно-логическому программированию
- •4.1.Задание n1 Отношения между объектами. (на Прологе и Паскале)
- •4.1.1.Методические указания
- •4.1.2.Варианты
- •4.2.Задание n2. Работа со списками
- •4.2.1.Методические указания
- •4.2.2.Варианты
- •4.3.Задание n3. Разные задачи
- •4.3.1.Методические указания
- •4.3.2.Варианты
- •4.4.Содержание отчета
3.4.Язык пролог и метод резолюций. Логическая интерпретация языка Пролог.
Факты в Прологе интерпретируются как положительные литеры. Правила интерпретируются как формула-импликация. Вопросы интерпретируются как отрицательные литеры.
Пример 3.4.1. Логическая интерпретация программы «Родственные отношения». Отношение родитель обозначим предикатным символом R. Отношение мужчина обозначим предикатным символом M. Отношение отец обозначим предикатным символом F. Программа интерпретируется как набор дизъюнктов.
R(пам, боб), R(том, боб), R(том, лиз),
R(боб, энн), R(боб, пат), R(пам, джим),
M(боб), M(том), M(джим),
R(X, Y)M (X) F(X, Y) (получен из импликации R(X, Y)&M (X) F(X, Y))
F(X, боб) (вопрос «Кто является отцом Боба?»)
Дизъюнкты, полученные из предложений Пролог-программы содержат не более одной положительной литеры. Последний (целевой) дизъюнкт не содержит положительных литер. Такие дизъюнкты называются хорновскими. Использование хорновских дизъюнктов существенно снижают возможности языка Пролог по сравнению с методом резолюций, однако упрощает процесс поиска пустого дизъюнкта, т.к. между целевым и любым другим дизъюнктами возможно взятие не более одной резольвенты.
Пример 3.4.2. Логическое решение программы «Родственные отношения».
Используется алгоритм поиска в глубину.
1 |
R(пам, боб), |
|
|
2 |
R(том, боб), |
|
|
3 |
R(том, лиз), |
|
|
4 |
R(боб, энн), |
|
|
5 |
R(боб, пат), |
|
|
6 |
R(пам,джим), |
|
|
7 |
M(боб), |
|
|
8 |
M(том), |
|
|
9 |
M(джим), |
|
|
10 |
R(X,Y)M(X)F(X,Y), |
|
|
11 |
F(X, боб), |
|
|
12 |
R(X,Y)M(X), |
из (11) и (10) |
рекурсивный вызов |
13 |
M(пам), |
из (12) и (1) |
рекурсивный вызов |
14 |
|
резольвент нет |
возврат к шагу 12 |
12 |
R(X,Y)M(X), |
возврат, |
|
13 |
M(том), |
из (12) и (2) |
|
14 |
□. |
из (13) и (8), |
КОНЕЦ РАБОТЫ (успех) |
3.5.Работа в пролог-системе
Простейшие пролог-системы строятся по принципу командной строки. При этом факты и правила, составляющие пролог-программу помещаются в текстовый файл, который подключается к пролог-системе посредством специальной команды (встроенного предиката). После этого в командной строке можно набирать вопросы к системе (определенные пользователем предикаты). Если на вопрос существует несколько ответов, пролог-система может найти все.
Более продвинутые пролог-системы строятся по принципу среды программирования. В этом случае для размещения программы предназначено специальное окно (окно редактирования), а вопросы к системе набираются в другом (целевом) окне. В этом же окне пользователь получает ответы.
