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