Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Компьютерное моделирование логических процессов. Архитектура и языки решателя задач

Покупка
Основная коллекция
Артикул: 124619.01.01
В книге представлено описание разработанного автором пакета прикладных программ «Логическая система "Искра"», обобщающего многолетний опыт компьютерного моделирования логических процессов, в результате которого возникла развитая технология обучения «решателя». В основном моделировались процессы решения математических задач. Было проработано около 9000 задач из разных разделов математики. Создана база приемов решателя задач, насчитывающая в настоящее время около 25 тыс. приемов. Фактически возникла мощная система символьной компьютерной математики нового типа, позволяющая не только получать ответы, но и прослеживать ход решения по шагам. Для обучения «решателя» был развит новый язык, объединяющий в себе два логических уровня — предметной области и принятия решений, что позволило существенно ускорить обучение решателя и создало предпосылки для исследований по автоматическому синтезу приемов. Прилагается адрес в сети программы «решателя». Студентам, аспирантам и специалистам по искусственному интеллекту, программированию и компьютерной математике.
Подколзин, А. С. Компьютерное моделирование логических процессов. Архитектура и языки решателя задач / А.С. Подколзин. - Москва : ФИЗМАТЛИТ, 2008. - 1024 с. ISBN 978-5-9221-1045-7, 300 экз. - Текст : электронный. - URL: https://znanium.com/catalog/product/186565 (дата обращения: 29.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Подколзин А.С.

Компьютерное
моделирование

логических
процессов.

Архитектура и
язы ки реш ателя

задач

МОСКВА

ФИЗМАТЛИТ ®

УДК 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