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