У.Клоксин, К.Меллиш ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ Для программистов и пользователей ЭВМ. ПРЕДИСЛОВИЕ РЕДАКТОРОВ ПЕРЕВОДА ПРЕДИСЛОВИЕ КО ВТОРОМУ ИЗДАНИЮ ПРЕДИСЛОВИЕ К ПЕРВОМУ ИЗДАНИЮ ГЛАВА 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, генатом, найтивсе 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. Приведение формул к стандартной форме 10.3. Форма записи дизъюнктов 10.4. Принцип резолюций и доказательство теорем 10.6. Пролог 10.7. Пролог и логическое программирование ГЛАВА 11. ПРОГРАММНЫЕ ПРОЕКТЫ НА ПРОЛОГЕ 11.1. Простые проекты 11.2. Более сложные проекты ПРИЛОЖЕНИЕ А. ОТВЕТЫ К НЕКОТОРЫМ УПРАЖНЕНИЯМ ПРИЛОЖЕНИЕ В. ПРОГРАММА ПРИВЕДЕНИЯ ФОРМУЛ ИСЧИСЛЕНИЯ ПРЕДИКАТОВ К СТАНДАРТНОЙ ФОРМЕ ПРИЛОЖЕНИЕ С. РАЗЛИЧНЫЕ ВЕРСИИ ЯЗЫКА ПРОЛОГ ПРИЛОЖЕНИЕ D. ПРОЛОГ ДЛЯ ЭВМ DEC SYSTEM-10 ПРИЛОЖЕНИЕ Е. МИКРО-ПРОЛОГ ПРИЛОЖЕНИЕ F. СИСТЕМА МПРОЛОГ[19]
ПРЕДИСЛОВИЕ КО ВТОРОМУ ИЗДАНИЮ После выхода в 1981 г. первого издания книги «Программирование на языке Пролог» этот язык вызвал неожиданно большой интерес у специалистов по информатике, и в настоящее время он рассматривается как возможная основа для принципиально нового поколения языков и систем программирования.
Мы надеемся, что данная книга частично удовлетворила возрастающую потребность в простом и в то же время исчерпывающем введении в язык практического программирования, каким является Пролог. При подготовке второго издания книги мы воспользовались случаем, чтобы улучшить изложение материала и исправить различные незначительные ошибки. Мы благодарны многим читателям, высказавшим предложения по исправлению и улучшению книги.
У. Клоксин К . Меллиш
Кембридж, Англия, август 1984