- •У.Клоксин, к.Меллиш программирование на языке пролог Для программистов и пользователей эвм. Предисловие редакторов перевода
- •Предисловие ко второму изданию
- •Предисловие к первому изданию
- •Глава 1 введение
- •1.1. Факты
- •1.2. Вопросы
- •1.3. Переменные
- •1.4. Конъюнкции
- •1.5. Правила
- •1.6. Заключение и упражнения
- •Глава 2 более детальное описание
- •2.1. Синтаксические правила
- •2.1.1. Константы
- •2.1.2. Переменные
- •2.1.3. Структуры
- •2.2. Литеры
- •2.3. Операторы
- •2.4. Равенство и установление соответствия
- •2.5. Арифметика
- •2.6. Общая схема согласования целевых утверждений
- •2.6.1. Успешное доказательство конъюнкции целевых утверждений
- •2.6.2. Рассмотрение целевых утверждений при использовании механизма возврата
- •2.6.3. Установление соответствия
- •Глава 3. Использование структур данных
- •3.1. Структуры и деревья
- •3.2. Списки
- •3.3. Принадлежность элементов списку
- •3.4. Пример: преобразование предложений
- •3.5. Пример: упорядочение по алфавиту
- •3.6. Использование предиката присоединить и спецификация деталей
- •Глава 4. Возврат и отсечение
- •4.1. Порождение множественных решений
- •4.2. Отсечение
- •4.3. Общие случаи использования отсечения
- •4.3.1. Подтверждение правильности выбора правила
- •4.3.2. Комбинация «отсечение-fail»
- •4.4. Проблемы, связанные с использованием отсечения
- •Глава 5 ввод и вывод
- •5.1. Ввод и вывод термов
- •5.1.1. Вывод термов
- •5.1.2. Ввод термов
- •5.2. Ввод и вывод литер
- •5.2.1. Вывод литер
- •5.2.2. Ввод литер
- •5.3. Ввод предложений
- •5.4. Чтение файлов и запись в файлы
- •5.4.1. Запись в файлы
- •5.4.2. Чтение файлов
- •5.4.3. Ввод программ
- •5.5. Объявление операторов
- •Глава 6. Встроенные предикаты
- •6.1. Ввод новых утверждений
- •Списковая форма записи
- •6.2. Выполнение и невыполнение целевого утверждения
- •6.3. Классификация термов
- •6.4. Работа с утверждениями как с термами
- •6.5. Создание структур и работа с компонентами структур
- •6.6. Воздействие на процесс возврата
- •Отсечение
- •6.7. Формирование составных целевых утверждений
- •Конъюнкция целей
- •Дизъюнкция целей
- •6.8. Равенство
- •6.9. Ввод и вывод данных
- •6.10. Обработка файлов
- •6.11. Вычисление арифметических выражений
- •6.12. Сравнение чисел
- •6.13. Наблюдение за выполнением программы на Прологе
- •Глава 7. Еще несколько примеров программ
- •7.1. Словарь в виде упорядоченного дерева
- •7.2. Поиск в лабиринте
- •7.3. Ханойские башни
- •7.4. Справочник комплектующих деталей
- •7.5. Обработка списков
- •7.6. Представление и обработка множеств
- •7.7. Сортировка
- •7.8. Использование базы данных: random, генатом, найтивсе
- •Генератор случайных чисел (random)
- •Генератор имен (генатом)
- •Генератор списков структур (найтивсе)
- •7.9. Поиск по графу
- •7.10. Просеивай Двойки, Просеивай Тройки
- •7.11. Символьное дифференцирование
- •7.12. Отображение структур и преобразование деревьев
- •7.13. Применение предикатов clause и retract
- •Глава 8. Отладка пролог-программ
- •8.1. Расположение текстов программ
- •8.2. Типичные ошибки
- •8.3. Модель трассировки
- •8.4. Трассировка и контрольные точки
- •Выдача информации о цели
- •Выдача информации о предшественниках
- •Изменение уровня трассировки
- •Вмешательство в процесс согласования цели
- •Другие команды
- •Заключение
- •8.5. Фиксация ошибок
- •Глава 9. Использование грамматических правил в прологе
- •9.1. Проблема синтаксического анализа
- •9.2. Описание синтаксического анализа на языке Пролог
- •9.3. Запись грамматических правил в Прологе
- •9.4. Присоединение дополнительных аргументов
- •9.5. Введение дополнительных условий
- •9.6. Заключение
- •Глава 10. Пролог и математическая логика
- •10.1. Краткое введение в исчисление предикатов
- •10.2. Приведение формул к стандартной форме
- •Этап 1 - исключение импликаций и зквивалентностей
- •Этап 2 - перенос отрицания внутрь формулы
- •Этап 3 - сколемизация
- •Этап 4 - вынесение кванторов общности в начало формулы
- •Этап 5 - использование дистрибутивных законов для & и #
- •Этап 6 - выделение множества дизъюнктов
- •10.3. Форма записи дизъюнктов
- •10.4. Принцип резолюций и доказательство теорем
- •10.5. Хорновские дизъюнкты
- •10.6. Пролог
- •10.7. Пролог и логическое программирование
- •Глава 11. Программные проекты на прологе
- •11.1. Простые проекты
- •11.2. Более сложные проекты
- •Приложение а. Ответы к некоторым упражнениям
- •Приложение в. Программа приведения формул исчисления предикатов к стандартной форме
- •Этап 1 - исключение импликаций
- •Этап 2 - перенос отрицания внутрь формулы
- •Этап 3 - сколемизация
- •Этап 4 - вынесение кванторов общности в начало формулы
- •Этап 5 - использование дистрибутивных законов для. & и #
- •Этап 6 - выделение множества дизъюнктов
- •Печать утверждений
- •Приложение с. Различные версии языка пролог
- •Синтаксис
- •Различные ограничения
- •Возможности окружения
- •Компиляция
- •Специальные встроенные предикаты
- •Средства отладки
- •Приложение d. Пролог для эвм dec system-10
- •Пример сеанса работы
- •Синтаксис
- •Различные ограничения
- •Возможности окружения
- •Компиляция
- •Различия во встроенных предикатах
- •Дополнительные встроенные предикаты
- •Средства отладки
- •Литература
- •Приложение е. Микро-пролог
- •Пример сеанса работы
- •Синтаксис
- •Различные ограничения
- •Возможности окружения
- •Специальные встроенные предикаты
- •Средства отладки
- •Литература
- •Приложение f. Система мпролог[19]
- •Пример сеанса работы
- •Синтаксис
- •Модульность
- •Компоненты системы мПролог
- •Различные ограничения
- •Дополнительные встроенные предикаты
- •Средства отладки
- •Литература
- •Примечания
Средства отладки
Средства трассировки МПролога аналогичны тем, что имеются в Прологе-10.
Литература
MPROLOG Language Reference Manual
MPROLOG User's Guide /VAX/11-VMS/ MPROLOG User's Guide /VAX/11 – UNIX/ MPROLOG User's Guide /IBM – VM/CMS/ MPROLOG User's Guide /Siemens BS2000/
Getting Started with MPROLOG
Указанная литература может быть получена через институт по координации вычислительной техники (SZKI), г. Будапешт, ВНР.
Примечания
1
В книге термин «Пролог» употребляется в трех значениях: 1) Пролог – язык программирования с совокупностью синтаксических и семантических правил записи программ; 2) Пролог – программная система (интерпретатор), реализующая язык; эта система и осуществляет диалог с пользователем; 3) Пролог – машина, на которой Пролог-система выполняет (интерпретирует) программы, написанные на языке Пролог. Как правило, из контекста всегда ясно, какое значение используется в каждом конкретном случае. При необходимости явного указания при переводе использовались термины: «язык Пролог», «Пролог-система», «Пролог-машина». - Прим. пepeв.
(обратно)
2
Связь введенного понятия с математической логикой обсуждается в гл. 10. - Прим. ред.
(обратно)
3
В записи программ на Прологе и в ответах Пролог-системы используются слова двух типов: 1) имена, определяемые пользователем (например, джон, книга, нравится); 2) имена и служебные слова, определенные в языке Пролог (например,is, get). Учитывая, что слова первого типа имеют некоторую смысловую нагрузку (для читателя, но не для Пролога), все они переведены на русский язык. Слова второго типа зарезервированы в языке Пролог. Поэтому в тексте они оставлены в исходном виде, за исключением переведенных на русский язык ответов Пролога на вопросы yes - да, no – нет.- Прим. перев.
(обратно)
4
В оригинале – clause for a predicate – термин, определяющий конъюнкты предиката, переменные которых связаны квантором общности. Связь этого понятия с математической логикой обсуждается в гл. 10.- Прим. ред.
(обратно)
5
В книге ничего не говорится о буквах русского алфавита. Мы будем считать, что в набор допустимых литер Пролога входят русские буквы – строчные и прописные. - Прим. ред.
(обратно)
6
Код ASCII соответствует коду КОИ-7, широко распространенному на ЭВМ нашей страны. Различие имеет место лишь для кириллицы, отсутствующей в коде ASCII. - Прим. перев.
(обратно)
7
Это могло бы привести к успеху при соответствующем определении предиката мать. - Прим. ред.
(обратно)
8
В оригинале использован термин Пролога «cut», и при переводе точнее было бы применить термин «сокращение». Однако, следуя терминологии более ранних публикаций о Прологе, мы сохраним термин «отсечение». - Прим. ред.
(обратно)
9
Модель, лежащая в основе трассировки, подробно описывается в гл. 8. - Прим. ред.
(обратно)
10
Имеется перевод: Нильсон Н. Принципы искусственного интеллекта. - М.: Радио и связь, 1985. - Прим. перев.
(обратно)
11
Имеется перевод 1-го издания: Уинстон П., Искусственный интеллект. - М.: Мир, 1980. - Прим. перев.
(обратно)
12
Имеется в виду константа в смысле Пролога. - Прим. ред.
(обратно)
13
Тем самым обеспечивает возможность вновь согласовать предикат consult. В противном случае механизм возврата никогда не смог бы миновать repeat, у которого всегда есть альтернативное решение. - Прим. ред.
(обратно)
14
На «ломаном» русском языке этот пример можно представить следующим образом: «Каждый мужчина нравится некоторая женщина».
все (X, мужчина (X)--› существует (Y, (женщина (Y) & нравится (X)))). - Прим. ред.
(обратно)
15
Имеется перевод: Мендельсон Э. Введение в математическую логику.- М.: Наука, 1971.- Прим. перев.
(обратно)
16
Имеется перевод: Чень Ч., Ли Р. Математическая логика и автоматическое доказательство теорем.- М.: Наука, 1983.- Прим. перев.
(обратно)
17
В некоторых последующих примерах допущена неточность: в формулах используется импликация, хотя все импликации должны быть удалены на первом этапе.- Прим. перев.
(обратно)
18
В дальнейшем – Пролог-10.- Прим. перев.
(обратно)
19
The MPROLOG System, SZKI, Budapest, 1986.
© SZKI, Budapest, 1986
© перевод на русский язык, «Мир», 1987
(обратно)
20
Вспомогательная информация, выдаваемая по команде help, переведена на русский язык.- Прим. ред.
(обратно)
21
Здесь допущена неточность: во входном потоке при возвратном ходе сохраняется не аааа, а то, что прочитано из него до возврата. - Прим. ред.
(обратно)
