- •Глава 0 логика, логическое программирование и пролог
- •Знакомство с логическим программированием Определение логического программирования
- •Наследие логики
- •2. Традиционная логика Аристотель
- •Законы традиционной логики
- •Критика силлогизма
- •3. Начальный период развития формальной логики Де Морган
- •Таблицы истинности
- •Фреже и Пеано
- •Исчисления
- •4. Логика высказываний Высказывания
- •Правильно построенные формулы
- •Т а б л и ц а 0. 8
- •Истинностное значение ппф
- •Теории и аксиомы
- •Методы доказательства
- •Метаязык и объектный язык
- •5. Логика предикатов Атомарные формулы
- •Правильно построенные формулы
- •Истинностное значение ппф
- •Построение теории некоторой области знаний
- •Переменные как термы
- •Семантические свойства формул
- •Методы доказательства
- •Аксиоматическое определение отношения
- •Разрешимость свойств
- •0.6. От формальной логики - к логическому программированию Автоматизация процедур доказательства
- •Процедуры опровержения
- •Основание Хербранда
- •Хербрандовские интерпретации
- •Полезные свойства хербрандовских интерпретаций
- •Фразовая форма
- •Резолюция
- •0.7. Развитие языка пролог Развитие языка Пролог
- •Особенности языка Пролог
- •0. 8. Синтаксис языка пролог
- •Пример Пролог-программы
- •9. Фразы хорна как средство представления знаний Решение задач
- •Программирование
- •0.10. Семантика пролога Три семантические модели
- •Декларативная модель
- •Процедурная модель
- •Модель в виде абстрактной машины
- •Сферы употребления моделей
- •0.11. Метаязык / объектный язык Функции метаязыка
- •Метаязык Пролога
- •Предикаты метаязыка
- •0. 12. Сферы применения языка пролог
- •Реляционные базы данных
- •Программная инженерия
- •Естественный язык
- •Представление знаний
- •Экспертные системы
- •Библиографические заметки
Метаязык Пролога
Неявный вопрос, содержащийся в запросе
Взаимодействие между пользователем и интерпретатором Пролога можно рассматривать как на уровне объектного языка, так и на уровне метаязыка. Если подходить с позиций объектного языка, то пользователь при вводе запроса к интерпретатору неявно задает и такой вопрос:
Соблюдается ли отношение, описанное в данном запросе?
Но на уровне метаязыка неявный вопрос будет следующим:
Является ли отношение, описанное в данном запросе, доказуемым при помощи стратегии решения задач интерпретатора в соответствии с множеством фраз, содержащихся в текущей программе?
Запрос сам по себе — это предложение объектного языка, а характеристика "быть доказуемым при помощи стратегии... б соответствии с множеством фраз, содержащихся в текущей программе" может быть свойством этого предложения. Интерпретатор откликается на запрос, выясняя, какой ответ должен быть дан на него — положительный или отрицательный. У этого ответа имеются две интерпретации. На уровне объектного языка этот ответ говорит о том, соблюдается ли описанное в запросе отношение. На уровне метаязыка ответ свидетельствует о том, доказуемо ли или нет данное отношение при помощи стратегии решения задач интерпретатора в соответствии с множеством фраз, входящих в текущую программу.
Как осуществляется ответ на вопрос
Интерпретатор обрабатывает запрос следующим образом. Если фраза программы, согласующаяся с запросом, не имеет условий, то запрос будет успешным (т. е. на него будет дан положительный ответ). Если в программе отсутствуют фразы, согласующиеся с запросом, то он потерпит неудачу (т. е. будет дан отрицательный ответ на запрос). Если же фраза, согласующаяся с запросом, снабжена некоторыми условиями, то запрос будет успешным только в том случае, когда интерпретатор сможет установить, что все условия истинны. В противном случае запрос окажется неудачным. Если в запросе содержится переменная, то интерпретатор попытается найти такие ее значения, при которых отношение, описанное в запросе, будет соблюдаться.
Предположение о замкнутости мира
Если запрос терпит неудачу, то это означает, что интерпретатор не смог выполнить его доказательство по множеству фраз, которые содержатся в текущей программе. Таким образом, интерпретатор языка Пролог исходит из предположения о том, что если соблюдение некоторого конкретного случая отношения доказать нельзя, то этот случай отношения является ложным. Здесь не делается различия между неизвестным отношением и отношением, неистинность которого доказуема. Множество фраз текущей программы иногда называют миром. Тот факт, что Пролог действует так, как будто бы множество фраз текущей программы является единственным источником знаний, известен как предположение о замкнутости мира.
Пусть в текущей программе имеется только лишь одна фраза, в которой утверждается, что:
Человек является выходцем из Франции, если его фамилия - Делакруа.
Бели мы напишем запрос о том, является ли мистер Шевалье выходцем из Франции, то будет получен отрицательный ответ. На уровне же метаязыка это будет означать, что утверждение о том, является или нет мистер Шевалье выходцем из Франции, недоказуемо. Если принять во внимание предположение о замкнутости мира, то фактический смысл приведенной выше фразы будет таким:
Человек является выходцем из Франции тогда и только тогда, когда его фамилия - Делакруа.
Здесь член "только тогда" относится к метаязыку. Обсуждение предположения о замкнутости мира будет продолжено в разд. 3. 2.