- •Глава 1 факты и правила
- •1.1. Использование языка пролог
- •Вызов транслятора языка Пролог
- •Синтаксис различных версий Пролога
- •1. 2. Факты Части Пролог-программы
- •Форма записи фактов в Прологе
- •Ввод программы
- •3. Запросы к базе данных Составление запроса
- •Запросы с константами
- •Запросы с переменными
- •Выполнение запроса
- •Составные запросы
- •Переменная _
- •1. 4. Прав ила
- •Форма записи правила: Заголовок:— Тело
- •Правило, при определении которого используются переменные
- •Пример: база данных "путешествие"
- •Косвенные отношения
- •1. 5. Процедуры Декларативная и процедурная семантика
- •Версия программы "можно_путешествовать", состоящая из двух правил
- •Запросы к предикату "можно_путешествовать2"
- •Соединитель "или"
- •Версия предиката "можно_путешествовать", в которой употребляется соединитель;
- •1. 6. Рекурсивные процедуры Определение понятия рекурсии
- •"Предок"
- •Состав рекурсивной процедуры
- •Рекурсивная версия процедуры "можно_путешествовать"
- •Порядок выполнения запроса к процедуре "можно_путешествовать4"
- •1. 7. Типы отношений Характеристики отношений
- •Ограничения вида один-к-одному
- •Ограничения вида один-к-многим
- •Ограничения вида многие-к-одному
- •Ограничения вида многие-к-многим
- •Симметрия
- •Асимметрия
- •Рефлексивность и нерефлексивность
- •Транзитивность
- •Анализ общеупотребительных отношений
- •Библиографические заметки
- •Упражнения
Глава 1 факты и правила
1.1. Использование языка пролог
Вызов транслятора языка Пролог
Автор выражает надежду, что читатели изучают данную книгу, имея "под рукой" компьютер с некоторой версией языка Пролог. Если дело обстоит именно так, то первым делом нужно научиться вызывать интерпретатор Пролога. Полезно несколько раз войти в интерпретатор Пролога и выйти из него, чтобы хорошо освоить эту процедуру. К сожалению, способ вызова транслятора языка Пролог будет различным для разных версий языка и при различном операционном окружении. Рекомендуется обратиться к руководству по языку Пролог для Вашей ЭВМ и выяснить, как выполняются перечисленные ниже основные операции.
Основые операции
1) вызов транслятора Пролога при помощи средств операционной системы;
2) выход из транслятора Пролога;
3) применение текстового редактора для создания файла с Пролог-программой;
4) загрузка файла с Пролог-программой во время сеанса работы с интерпретатором языка Пролог;
5) ввод программы в диалоговом режиме во время сеанса работы с интерпретатором языка Пролог.
После того как Вы освоите эти основные операции, двигайтесь дальше и приступайте к изучению конкретных возможностей Вашей версии языка. Выясните следующее:
Особые средства некоторых версий Пролога
* какая команда позволяет переписать текущую программу в файл во время работы с интерпретатором Пролога'1
* какие средства редактирования программы доступны во время сеанса работы с интерпретатором языка Пролог?
* какая команда применяется для компиляции (а не интерпретации) Пролог-программы, находящейся в файле?
Синтаксис различных версий Пролога
В оставшейся части книги все примеры программ написаны с использованием синтаксиса "ядра Пролога". Сообщение-подсказка (или "приглашение") верхнего уровня выглядит так:
|? -
Когда на терминал выводится приглашение верхнего уровня, то это означает, что интерпретатор Пролога находится в командном режиме и ожидает ввода запроса.
"Ядро Пролога" - это подмножество первоначальной версии языка для ЭВМ DEC-10. Оно стало фактическим стандартом языка по той простой причине, что оно совместимо с очень большим числом версий Пролога. В то же время авторы различных реализации Пролога посчитали нужным изменить некоторые детали языка и несколько расширить его. В приложении IV рассказывается о конкретных особенностях ряда версий языка Пролог. Если какой-либо пример из данной книги не будет работать в Вашей версии языка, то, обратившись к приложению IV, Вы сможете выяснить, какие изменения нужно внести в текст программы из этого примера, чтобы обеспечить ее работоспособность.
Интерпретатор Пролога
В настоящей книге термин интерпретатор Пролога используется несколько нестрого для обозначения механизма решения задач при помощи языка Пролог. Более точными терминами были бы система выполнения Пролог-программ или исполнитель Пролог-программ. Интерпретатор языка Пролог - это та "активная сила", которая фактически выполняет программы, написанные на Прологе.
1. 2. Факты Части Пролог-программы
Программа на Прологе состоит из множества фраз, и ее можно рассматривать как сеть отношений, существующих между термами. Каждый терм обозначает некоторую сущность, принадлежащую миру. Фраза — это либо факт, либо правило. Факт - это утверждение о том, что соблюдается некоторое конкретное отношение. Он записывается как имя, за которым следует список термов (они называются аргументами), заключенный в скобки. Правило - это факт, истинностное значение которого зависит от значений истинности других фактов.
Сравнение предиката и процедуры
Иногда термины процедура и предикат используются почти как синонимы, хотя между ними есть различие. И предикат, и процедура идентифицируются именем предиката и количеством аргументов*). Предикат -это абстрактный смысл существующего отношения между некоторым количеством аргументов. Процедура - это множество фраз, заголовки которых содержат одинаковые имена предикатов и одно и то же количество аргументов. В языке Пролог предикат определяется (реализуется) при помощи процедуры.