Компьютерное моделирование логических процессов. Архитектура и языки решателя задач
Покупка
Основная коллекция
Издательство:
Физматлит
Год издания: 2008
Кол-во страниц: 1024
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Профессиональное образование
ISBN: 978-5-9221-1045-7
Артикул: 124619.01.01
В книге представлено описание разработанного автором пакета прикладных программ «Логическая система "Искра"», обобщающего многолетний опыт компьютерного моделирования логических процессов, в результате которого возникла развитая технология обучения «решателя». В основном моделировались процессы решения математических задач. Было проработано около 9000 задач из разных разделов математики. Создана база приемов решателя задач, насчитывающая в настоящее время около 25 тыс. приемов. Фактически возникла мощная система символьной компьютерной математики нового типа, позволяющая не только получать ответы, но и прослеживать ход решения по шагам. Для обучения «решателя» был развит новый язык, объединяющий в себе два логических уровня — предметной области и принятия решений, что позволило существенно ускорить обучение решателя и создало предпосылки для исследований по автоматическому синтезу приемов. Прилагается адрес в сети программы «решателя». Студентам, аспирантам и специалистам по искусственному интеллекту, программированию и компьютерной математике.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.02: Информационные системы и технологии
- ВО - Магистратура
- 09.04.02: Информационные системы и технологии
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Подколзин А.С. Компьютерное моделирование логических процессов. Архитектура и язы ки реш ателя задач МОСКВА ФИЗМАТЛИТ ®
УДК 519.95; 007:159.955 ББК 32.81 П 44 Издание осуществлено при поддержке Российского фонда фундаментальных исследований по проекту 08-01-07074 Под к о л з и н А. С. Компьютерное моделирование логических процессов. Архитектура и язык решателя задач. — М.: ФИЗМАТЛИТ, 2008. — 1024 с. — ISBN 978-5-9221-1045-7. В книге представлено описание разработанного автором пакета прикладных программ «Логическая система “Искра”», обобщающего многолетний опыт компьютерного моделирования логических процессов, в результате которого возникла развитая технология обучения «решателя». В основном моделировались процессы решения математических задач. Было проработано около 9000 задач из разных разделов математики. Создана база приемов решателя задач, насчитывающая в настоящее время около 25 тыс. приемов. Фактически возникла мощная система символьной компьютерной математики нового типа, позволяющая не только получать ответы, но и прослеживать ход решения по шагам. Для обучения «решателя» был развит новый язык, объединяющий в себе два логических уровня — предметной области и принятия решений, что позволило существенно ускорить обучение решателя и создало предпосылки для исследований по автоматическому синтезу приемов. Прилагается адрес в сети программы «решателя». Студентам, аспирантам и специалистам по искусственному интеллекту, программированию и компьютерной математике. ISBN 978-5-9221-1045-7 c⃝ ФИЗМАТЛИТ, 2008 c⃝ А. С. Подколзин, 2008
ОГЛАВЛЕНИЕ Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Г л а в а 1. Общие замечания о логических процессах и их моделировании . . . . . . 14 Г л а в а 2. Логический язык решателя задач . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.1. Общелогические понятия . .. . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . 31 2.2. Алгебра множеств . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.3. Элементарная алгебра. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 34 2.4. Математический анализ . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.5. Элементарная геометрия . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.6. Аналитическая геометрия . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . 41 2.7. Элементы линейной алгебры . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.8. Комплексные числа . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.9. Теория вероятностей. .. . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.10. Элементарная физика . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Г л а в а 3. Представление задач в решателе . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3.1. Структуры данных, используемые для представления задачи. .. . . . . . . . . . . . . . 59 3.2. Целевые установки задач . .. . . . . . . . .. . . . . . . . .. . . . . . . . . . . . . . . . . . . . . 61 3.3. Примеры формулировки задач для решателя. .. . . . . . . . . . . . . . . . . . . . .. . . . . 64 3.3.1. Алгебра множеств (64). 3.3.2. Элементарная алгебра (65). 3.3.3. Комбинаторика (68). 3.3.4. Элементарная геометрия (69). 3.3.5. Математический анализ (71). 3.3.6. Дифференциальные уравнения (78). 3.3.7. Аналитическая геометрия и линейная алгебра (80). 3.3.8. Комплексные числа (82). 3.3.9. Теория вероятностей (84). 3.3.10. Элементарная физика (85). 3.3.11. Вычислительные задачи (88). 3.4. Интерфейс ввода задач . .. . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . 89 3.4.1. Оглавление задачника (89). 3.4.2. Просмотр задач и основные операции над задачами (90). 3.4.3. Ввод новой задачи (92). 3.4.4. Формульный редактор (99). 3.4.5. Текстовый редактор (117). 3.4.6. Геометрический редактор (119). Г л а в а 4. Общая схема функционирования решателя . . . . . . . . . . . . . . . . . . . . 123 4.1. Сканирование задачи . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 4.2. Запуск решения задачи и его пошаговый просмотр . .. . . . . . . . . . . . . . . . . .. . . 125
Оглавление 4.3. Диалоговые задачи. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 4.4. Упражнения по вводу и решению задач . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 4.4.1. Элементарная алгебра (132). 4.4.2. Планиметрия (134). 4.4.3. Математический анализ (137). 4.4.4. Аналитическая геометрия и линейная алгебра (139). 4.4.5. Дифференциальные уравнения (142). 4.5. Анализ траекторий решения задач при обучении решателя . .. . . . . . . . . . . . . . . 143 4.6. Сравнение логической системы с системами компьютерной математики . .. . . . . . 165 4.6.1. Упрощение выражений и уравнения с одной неизвестной (166). 4.6.2. Системы уравнений и неравенств (171). 4.6.3. Элементарная геометрия (173). 4.6.4. Аналитическая геометрия (175). 4.6.5. Алгебра логики, алгебра множеств и комбинаторика (175). 4.6.6. Математический анализ (177). 4.6.7. Дифференциальные уравнения (179). 4.6.8. Теория вероятностей (179). 4.6.9. Линейная алгебра (180). 4.6.10. Комплексный анализ (181). 4.6.11. Элементарная физика (181). 4.6.12. Вычисления (182). 4.6.13. Понимание текстов (184). 4.6.14. Анализ изображений (184). 4.6.15. Игровые ситуации (186). 4.6.16. Прочие возможности (186). Г л а в а 5. Алгоритмический язык ЛОС . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 5.1. Структуры данных и общая схема организации программы на языке ЛОС . . . . . . 188 5.2. Основные операторы языка ЛОС. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 5.2.1. Общие операторы (193). 5.2.2. Операторы просмотра и преобразования задачи (196). 5.2.3. Операторы логического представления данных (198). 5.2.4. Операторы сетевого представления данных (200). 5.2.5. Арифметические операторы (202). 5.2.6. Операторы интерфейса (205). Г л а в а 6. Библиотека вспомогательных операторов ЛОСа . . . . . . . . . . . . . . . . . 221 6.1. Операторы для работы с наборами и вхождениями в наборы . .. . . . . . . . . . . . . . 221 6.2. Операторы для работы с логическими структурами данных. .. . . . . . . . . . . . . . . 222 6.2.1. Перечисляющие операторы (223). 6.2.2. Вхождения в терм (226). 6.2.3. Построение нового терма (228). 6.2.4. Свойства терма и отношения между термами (230). 6.2.5. Списки термов (232). 6.3. Операторы для работы с задачами . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 6.3.1. Элементы задачи и связи ее с другими задачами (233). 6.3.2. Преобразования задачи (234). 6.3.3. Создание и решение вспомогательных задач (237). 6.4. Арифметические операторы . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 6.4.1. Десятичные числа (240). 6.4.2. Термы, представляющие числовые константы (241). 6.4.3. Вычисления с плавающей запятой (243). 6.5. Общие процедуры интерфейса . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 6.5.1. Клавиатура, мышь и меню (243). 6.5.2. Текстовый редактор (245). 6.5.3. Формульный редактор (246). 6.5.4. Геометрический редактор (248). 6.5.5. Просмотр термов и списков (249). 6.5.6. Текст-формульный редактор (252). 6.5.7. Оглавления (256). 6.5.8. Информационные блоки (260). 6.5.9. Диалоговые блоки (261). 6.5.10. Разное (264). Г л а в а 7. Редактор программ ЛОСа . . . . .. . . . . . . . .. . . . . . . . . . . . . . . . . . . . . 266 7.1. Названия логических символов . .. . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 266 7.1.1. Просмотр названий логических символов (266). 7.1.2. Изменение словаря и получение дополнительной информации о символе (266). 7.1.3. Перечень названий операторов ЛОСа (267).
Оглавление 5 7.2. Интерфейс редактора программ . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 7.2.1. Вход в редактор программ ЛОСа (268). 7.2.2. Просмотр фрагментов программы (269). 7.2.3. Редактирование текущего фрагмента программы (273). 7.2.4. Сдвиг номеров программных переменных (275). 7.2.5. Операции с ветвями программы (275). 7.2.6. Обнаружение ошибок в программе (276). 7.2.7. Сопровождение справочной информацией избранных точек в программе (277). 7.2.8. Дополнительные возможности интерфейса редактора программ (278). Г л а в а 8. Отладчик ЛОСа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 8.1. Семантическая трассировка решения задачи. .. . . . . . . . . . . . . . . . . .. . . . . . . . 279 8.2. Установка режимов технической трассировки перед запуском решения . .. . . . . . . 280 8.3. Просмотр информации о моменте прерывания. .. . . . . . . . . . . . . . . . . . . . . . . . 281 8.3.1. Просмотр программы (282). 8.3.2. Просмотр цепи задач (283). 8.3.3. Просмотр значений программных переменных (283). 8.3.4. Сообщение об ошибке в программе (285). 8.3.5. Выход в базу приемов, реализованных на ГЕНОЛОГе (286). 8.3.6. Техническая трассировка (286). 8.4. Тестирование программы оператора, операторного выражения либо справочника 290 Г л а в а 9. Примеры и упражнения по программированию на ЛОСе . . . . . . . . . . 291 9.1. Примеры программ приемов, применяемых при сканировании задачи . .. . . . . . . . 291 9.2. Примеры программ вспомогательных операторов и операторных выражений . .. . . 300 9.3. Упражнения по программированию на ЛОСе. . . . . . . . . . . . . . . . . . . . . . . . . . 304 9.3.1. Просмотр программ (304). 9.3.2. Логические символы (306). 9.3.3. Редактирование программы (308). 9.3.4. Запуск программы и ее отладочная трассировка (311). Г л а в а 10. Язык для записи приемов ГЕНОЛ´OГ . .. . . . . . . . . . . . . . . . . . . . . . . 318 10.1. Основные компоненты описания приема на языке ГЕНОЛ´ОГ . .. . . . . . . . . . . . . 319 10.2. Типы заголовков приемов . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 10.2.1. Приемы, осуществляющие тождественную либо эквивалентную замену (321). 10.2.2. Приемы для вывода следствий (323). 10.2.3. Обратный вывод для условий задачи (323). 10.2.4. Приемы для усмотрения ответа задачи (324). 10.2.5. Перенесение во внешнюю задачу на описание утверждений из блока анализа (326). 10.2.6. Ввод и удаление комментариев (326). 10.2.7. Пакетные операторы и их приемы (326). 10.2.8. Вычислительные пакеты (331). 10.2.9. Простейшие приемы непосредственного усмотрения истинности либо ложности (332). 10.2.10. Приемы справочников (332). 10.2.11. Приемы вывода теорем (336). 10.3. Типы фильтров приемов . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . 336 10.3.1. Логические связки и квантор существования (337). 10.3.2. Равенство объектов (338). 10.3.3. Сравнение числовых характеристик термов (338). 10.3.4. Ограничения на задачу (338). 10.3.5. Ограничения на термы, переменные и логические символы (339). 10.3.6. Ограничения на вхождения (341). 10.3.7. Ограничения на наборы (341). 10.3.8. Ограничения на новые термы, вводимые приемом (342). 10.3.9. Ограничение на способ идентификации (342). 10.3.10. Числовые предикаты (342). 10.3.11. Учет комментариев задачи либо пакетного оператора (342). 10.3.12. Ограничения на точку привязки (343). 10.3.13. Обращение к проверочному оператору из фильтра (344). 10.3.14. Идентифицирующие термы (344). 10.3.15. Операторные выражения (350). 10.3.16. Очередность проверки фильтров и дополнительные действия при проверке (357).
Оглавление 10.4. Типы указателей приемов . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 10.4.1. Указатели идентификации (357). 10.4.2. Указатели обработки антецедентов теоремы (375). 10.4.3. Указатели, уточняющие тип основного преобразования (387). 10.4.4. Указатели, играющие роль дополнительных фильтров либо отменяющие ограничения на применение приема (389). 10.4.5. Указатели, уточняющие способ формирования новых термов (389). 10.4.6. Указатели, определяющие дополнительные преобразования (391). 10.4.7. Указатели, уточняющие точку привязки приема (396). 10.4.8. Указатели, определяющие преобразования комментариев (397). 10.4.9. Указатели, определяющие переключение внимания (401). 10.4.10. Ограничитель трудоемкости (402). 10.4.11. Отложенная фильтрация (403). 10.4.12. Специальные указатели пакетных операторов (403). 10.4.13. Указатели, определяющие отбор и сохранение ссылок на задачи, рассмотрение которых представляет интерес для развития приема (406). 10.4.14. Указатели, определяющие формирование информации для трассировки (406). 10.5. Нормализаторы приема . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 408 10.5.1. Обращения к пакетным нормализаторам (409). 10.5.2. Обращения к вспомогательным задачам (410). 10.5.3. Указатели коррекции посылок (411). Г л а в а 11. Редактор приемов ГЕНОЛ´ОГа. .. . . . . . . . .. . . . . . . . . . . . . . . . . . . . 412 11.1. Просмотр описаний приемов . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 11.1.1. Вход в редактор приемов (412). 11.1.2. Отображение приема на экране (412). 11.1.3. Просмотр компонент описания приема (413). 11.1.4. Получение справочной информации при просмотре приема (415). 11.1.5. Указатели на степень готовности приема (416). 11.1.6. Переход от просмотра описания приема к просмотру других разделов системы (416). 11.2. Редактирование приемов . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 417 11.2.1. Ввод нового приема (417). 11.2.2. Сохранение описания приема и компиляция (419). 11.2.3. Изменение приема (420). 11.2.4. Буфер базы приемов (421). 11.2.5. Перенесение приема в другой концевой пункт оглавления (421). 11.2.6. Удаление приема (422). 11.2.7. Автоматическое пополнение описания приема (422). 11.3. Дополнительные возможности редактора приемов . .. . . . . . . . . . . . . . . . . . . . . 423 11.3.1. Разрезание окна на несколько частей либо склейка частей окна (423). 11.3.2. Копирование приема либо его фрагментов (423). 11.3.3. Изменение логического символа, за которым закреплен прием (424). 11.3.4. Поиск приемов заданного вида в базе приемов (424). 11.3.5. Перенесение приемов из версии системы, находящейся в директории ALTSOL (425). 11.4. Анализ применений приема на обучающем материале . .. . . . . . . . . . . . . . . . . . 425 11.5. Расширение списка символов, прорисовываемых формульным редактором . .. . . . . 427 11.6. Инициализация пакетных операторов . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 11.6.1. Инициализация оператора вручную (428). 11.6.2. Интерфейс ускоренной инициализации оператора (429). Г л а в а 12. Примеры записи приемов на ГЕНОЛОГе и упражнения . . . . . . . . . . 431 12.1. Примеры записи приемов . .. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . 431 12.1.1. Приемы тождественной замены (431). 12.1.2. Приемы эквивалентной замены (434). 12.1.3. Приемы вывода в посылках задачи (438). 12.1.4. Приемы вывода в условиях задачи на описание (445). 12.1.5. Приемы нормализаторов (447). 12.1.6. Приемы проверочных операторов (465). 12.1.7. Приемы синтезаторов (468). 12.1.8. Приемы анализаторов (471). 12.1.9. Операторы фильтра (474).
Оглавление 7 12.2. Упражнения по работе с редактором приемов . .. . . . . . . . . . . . . . . . . . . . . . . . 475 12.2.1. Поиск приемов (475). 12.2.2. Просмотр описания приема (479). 12.2.3. Редактирование приема (484). 12.2.4. Анализ приема (492). 12.2.5. Создание нового приема (505). Г л а в а 13. Программы общего интерфейса системы . . . . . . . . . . . . . . . . . . . . . 515 13.1. Главное меню . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 13.1.1. Начало программы общего интерфейса (515). 13.1.2. Обращение к оглавлению приемов (517). 13.1.3. Обращение к редактору ЛОСа (518). 13.1.4. Обращение к оглавлению задачника (520). 13.1.5. Операции со словарем (521). 13.1.6. Уплотнение и сохранение файлов (522). 13.1.7. Обращение к оглавлению программ (523). 13.1.8. Редакция шрифта (524). 13.1.9. Вход в просмотр и редактирование информационных блоков (525). 13.1.10. Вход в просмотр и редактирование вспомогательных меню (528). 13.1.11. Операции со словарем текстового анализатора (528). 13.1.12. Обращение к оглавлению базы теорем (531). 13.1.13. Прочие функции главного меню (532). 13.2. Программа интерфейса оглавлений . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 13.2.1. Типы оглавлений (532). 13.2.2. Инициализация обращения к оглавлению (534). 13.2.3. Обработка команд интерфейса оглавления (537). 13.3. Программа формульного редактора . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 13.3.1. Структура данных, используемая для прорисовки формул в стандартной математической записи (549). 13.3.2. Начало программы формульного редактора (551). 13.3.3. Обработчик команд формульного редактора (553). 13.3.4. Обработка очередного символа набираемой формулы (556). 13.3.5. Прорисовка очередного символа и коррекция ранее введенной части изображения (560). 13.3.6. Блок вспомогательных процедур формульного редактора (565). 13.3.7. Блок эмуляции набора формулы с клавиатуры (567). 13.4. Программа текстового редактора . .. . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 569 13.5. Программы геометрического и текст-формульного редакторов . .. . . . . . . . . . . . . 573 Г л а в а 14. Программа редактора программ . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 Г л а в а 15. Программа отладчика ЛОСа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 15.1. Предварительные сведения об интерпретаторе ЛОСа . .. . . . . . . . . . .. . . . . . . . . 591 15.2. Серия операторов ”трассировка” . .. . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . 595 15.3. Начало программы ”прерывание” . .. . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 600 15.4. Цикл обработки команд отладчика . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606 Г л а в а 16. Интерпретатор ЛОСа . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . 618 16.1. Основные структуры данных интерпретатора . .. . . . . . . . . . . . . . . . . . . . . . . . 618 16.1.1. Хранение основных данных в оперативной памяти (618). 16.1.2. Хранение программ (620). 16.1.3. Хранение вспомогательной информации в файлах логической системы (623). 16.1.4. Вспомогательные файлы (626). 16.1.5. Вспомогательные массивы (627). 16.1.6. Обозначения массивов интерпретатора (629). 16.1.7. Основные регистры интерпретатора (629). 16.2. Преобразование программы ЛОСа в формат, используемый интерпретатором . .. . . 631 16.2.1. Переменные и логические символы (631). 16.2.2. Непосредственно реализуемые неперечисляющий оператор либо операторное выражение (631). 16.2.3. Отрицание оператора (631). 16.2.4. Дизъюнкция операторов (631).
Оглавление 16.2.5. Конъюнкция операторов (632). 16.2.6. Оператор ”альтернатива” (632). 16.2.7. Оператор ”длялюбого” (632). 16.2.8. Оператор ”существует” (632). 16.2.9. Операторное выражение ”вариант” (633). 16.2.10. Операторные выражения ”выписка”, ”перечисление”, ”суммавсех” (633). 16.2.11. Программируемые оператор либо операторное выражение (633). 16.2.12. Непосредственно реализуемый перечисляющий оператор (633). 16.2.13. Операторы перехода ”ветвь”, ”иначе” (634). 16.3. Общая схема функционирования интерпретатора . .. . . . . . . . . . . . . . . . . . . . . 634 16.3.1. Сканирование задачи (634). 16.3.2. Обработка текущего фрагмента программы (635). 16.3.3. Функции вызова фрагментов в зону программ (636). 16.3.4. Поиск свободного места и расчистка мусора в зоне задач (636). 16.4. Добавление нового оператора либо операторного выражения . .. . . . . . . . . . . . . . 637 16.5. Вспомогательные функции интерпретатора. .. . . . . . . . . . . . . . . . . .. . . . . . . . . 638 16.5.1. Функции, используемые для организации общих действий интерпретатора (638). 16.5.2. Функции, используемые при реализации операторов ЛОСа (639). 16.5.3. Функции, используемые для перевода программы из формата зоны задач в формат зоны программ и обратно (645). 16.5.4. Отладочные функции (646). 16.6. Отладка логической системы на уровне интерпретатора ЛОСа. .. . . . . . . . . . . . . 646 Г л а в а 17. Программы просмотра списков задач . . . . . . . . . . . . .. . . . . . . . . . . . 648 17.1. Просмотр списка задач из задачника. .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 648 17.2. Пошаговый просмотр решения . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 682 17.2.1. Структура данных для описания текущего шага решения (682). 17.2.2. Определение цепи обобщенных задач отладчиком ЛОСа (685). 17.2.3. Просмотр и редактирование цепи обобщенных задач (697). Г л а в а 18. Программа редактора приемов . . . . . . . . . . . . . . . . . . . . . .. . . . . . . 714 18.1. Структуры данных, используемые для хранения приемов . .. . . . . . . .. . . . . . . . . 714 18.2. Обращение к редактору приемов . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718 18.3. Прорисовка текущего приема . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 18.4. Обработчик команд редактора приемов . .. . . . . . . . . . . .. . . . . . . . . . . . . . . . . 723 18.4.1. Переходы (723). 18.4.2. Просмотр окон приема (729). 18.4.3. Редактирование приема (734). 18.5. Программы редактора приемов, запускаемые из интерфейса оглавлений . .. . . . . . 754 Г л а в а 19. Компилятор ГЕНОЛОГа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756 19.1. Общая архитектура компилятора . .. . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 756 19.1.1. Входной блок компилятора (756). 19.1.2. Компиляция приемов, применяемых при сканировании задачи (757). 19.1.3. Компиляция приемов пакетных операторов (759). 19.1.4. Компиляция приемов вывода теорем (759). 19.1.5. Компиляция приемов справочников (759). 19.2. Схема компиляции приема сканирования задачи . .. . . . . . . .. . . . . . . . . . . . . . . 760 19.2.1. Предварительное преобразование теоремы приема (760). 19.2.2. Выбор точки привязки приема (763). 19.2.3. Создание программного блока и системы установок на идентификацию (766). 19.3. Схема компиляции приема пакетного нормализатора . .. . . . . . . . . . .. . . . . . . . . 776 19.3.1. Предварительное преобразование теоремы приема (777). 19.3.2. Создание начального отрезка программы (777). 19.3.3. Анализ заголовка приема (779).
Оглавление 9 19.4. Схема компиляции приема проверочного оператора . .. . . . . . . . . . . .. . . . . . . . . 786 19.4.1. Предварительное преобразование теоремы приема (786). 19.4.2. Создание начального отрезка программы (787). 19.4.3. Ввод программного блока (790). 19.4.4. Компиляция идентифицирующей части приема и его фильтров (790). 19.5. Схема компиляции приема синтезатора . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . 791 19.5.1. Предварительный анализ приема (792). 19.5.2. Создание начального отрезка программы (792). 19.5.3. Ввод программного блока (793). 19.5.4. Компиляция основной части программы приема (794). 19.6. Схема компиляции приема анализатора . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . 794 19.6.1. Создание начального отрезка программы (795). 19.6.2. Ввод программного блока (796). 19.6.3. Компиляция основной части программы приема (796). 19.7. Схема компиляции приема оператора фильтра . .. . . . . . . . . . . . . . . . . .. . . . . . 798 19.7.1. Предварительный анализ приема (798). 19.7.2. Ввод программного блока и завершение компиляции (799). 19.8. Компиляция приемов вычислительных пакетов . .. . . . . . . . . . . . . . . . . . . . . . . 800 19.9. Информационные элементы программного блока . .. . . . . . . . . . . . . . . . . . . . . . 800 19.9.1. Идентификация теоремных переменных (800). 19.9.2. Идентификация вхождений (801). 19.9.3. Учет посылок, используемых приемом (802). 19.9.4. Списки переменных (803). 19.9.5. Антецеденты и указатели дополнительной идентификации (803). 19.9.6. Идентификация функциональных переменных (805). 19.9.7. Идентификация наборов (806). 19.9.8. Вычисления (807). 19.9.9. Особенности идентификации (807). 19.9.10. Нормализаторы приема (810). 19.9.11. Комментарии, изменяемые приемом (810). 19.9.12. Дополнительные преобразования (811). 19.9.13. Информация о задачах (811). 19.9.14. Разное (811). 19.10. Создание идентифицирующей части программы . .. . . . . . . . . . . . . . . . . . . . . . 812 19.10.1. Предварительные преобразования (813). 19.10.2. Начало основного цикла идентификации (814). 19.10.3. Цикл просмотра установок на идентификацию (816). 19.10.4. Установка на идентификацию ”операнд” (816). 19.10.5. Установка на идентификацию ”корень” (857). 19.10.6. Установка на идентификацию ”извлекается” (863). 19.10.7. Установка на идентификацию ”значения” (866). 19.10.8. Установка на идентификацию ”программа” (869). 19.10.9. Установка на идентификацию ”идентификатор” (875). 19.10.10. Установка на идентификацию ”контекст” (883). 19.10.11. Проверка истинности антецедента с помощью вспомогательной задачи либо общей проверочной процедуры (883). 19.10.12. Установка на идентификацию ”новаргумент” (885). 19.10.13. Установка на идентификацию ”развертка” (886). 19.10.14. Установка на идентификацию ”транзитпереход” (892). 19.10.15. Установка на идентификацию ”группировка” (892). 19.10.16. Установка на идентификацию ”усм” (895). 19.10.17. Установка на идентификацию ”свертка” (898). 19.10.18. Установка на идентификацию ”теквхожд” (898). 19.10.19. Установка на идентификацию ”унификация” (899). 19.10.20. Установка на идентификацию ”тип” (900). 19.10.21. Установка на идентификацию ”типзначения” (900). 19.10.22. Установка на идентификацию ”чертеж” (900). 19.10.23. Установка на идентификацию ”числоценка” (900). 19.10.24. Установка на идентификацию ”выч” (900). 19.10.25. Установка на идентификацию ”вычисл” (901). 19.10.26. Установка на идентификацию ”рекурсия” (901). 19.10.27. Компиляция обращения к техническому анализатору (902). 19.10.28. Установка на идентификацию ”пересечподст” (904). 19.10.29. Действия процедуры ”идентификатор” по исчерпании установок на идентификацию (904). 19.10.30. Процедура ”учетоперанда” (906). 19.11. Компиляция операторных выражений . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914 19.11.1. Вычислительные форматы данных (915). 19.11.2. Особые случаи компиляции (923). 19.11.3. Общий случай компиляции (924).
Оглавление 19.12. Компиляция теоремных термов. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925 19.12.1. Развертка в дизъюнкцию квантора существования (926). 19.12.2. Учет нормализаторов (926). 19.12.3. Случай однобуквенного терма (931). 19.12.4. Специальные случаи неоднобуквенного терма (933). 19.12.5. Общий случай компиляции неоднобуквенного терма (941). 19.13. Предварительная обработка установок на нормализацию . .. . . . . . . . . . . . . . . . 943 19.13.1. Компиляция приема пакетного нормализатора (944). 19.13.2. Компиляция приема, не относящегося к пакетному нормализатору (945). 19.14. Компиляция фильтров для приема сканирования задачи. .. . . . . . . . . . . . . . . . . 946 19.14.1. Учет уровней срабатывания приема (946). 19.14.2. Компиляция префиксных фильтров приема (946). 19.14.3. Определение результирующего терма (947). 19.14.4. Основной цикл обработки фильтров (947). 19.14.5. Дополнительные фильтры для приема ”связка” (948). 19.15. Процедура ”фильтр” . .. . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . 948 19.16. Процедура ”вставкафильтра” . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949 19.17. Компиляция фильтров и операторных выражений со связанными переменными . . 951 19.18. Компиляция преобразующей части приема сканирования задачи . .. . . . . . . . . . . 956 19.18.1. Предварительный учет указателей приема (956). 19.18.2. Компиляция основного действия приема (962). 19.19. Завершающая обработка программы . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973 19.19.1. Процедура ”вставкафрагментов” (973). 19.19.2. Процедура ”завершениепрограммы” (973). 19.19.3. Процедура ”редакцияпрограммы” (974). 19.20. Запись программы приема в блок программ . .. . . .. . . . . . . . . . . . . . . . . . . . . . 981 19.20.1. Ввод ограничителя склейки программ (981). 19.20.2. Разрезание больших фрагментов (982). 19.20.3. Инициализация программы логического символа (982). 19.20.4. Случай приема сканирования задачи (983). 19.20.5. Случай приема проверочного оператора, синтезатора, либо пакета продукций (989). 19.20.6. Случай приема нормализатора либо анализатора (992). 19.21. Развитие компилятора ГЕНОЛОГа . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994 19.21.1. Поиск в программе компилятора (994). 19.21.2. Трассировка процесса компиляции (1005). 19.21.3. Пополнение языка новыми элементами (1016). С п и с о к л и т е р а т у р ы . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1021