Cтраница 4
Последним в этой главе мы введем модуль основной программы, объединяющий предшествующие блоки с помощью интерфейса пользователя. Когла оператор выбирает возможность Добавление фактов 8 базу знаний, программа вызывает модуль addjpbject. Если выбирается возможность 2 - Проверка истинности фактов, программа сравнивает вводимую пару объект - значение с имеющимися в базе знаний. Если же пользователь нажмет клавишу 3 - Просмотр базы знаний, то программа вызывает модуль see objects для вывода на экран полного списка имен объектов и связанных с ними списков значений. [46]
При совместном использовании G - и Т - правил нужно соблюдать некоторую осторожность при отождествлении переменных. Такие изменения затрудняют определение условий проверки истинности импликаций и определение табло, к которому сходится прогонка. Во избежание этого мы поддерживаем некоторый порядок на переменных из табло. Первыми при таком порядке идут исходные переменные, а новые переменные, появляющиеся во время прогонки, всегда добавляются к концу. При отождествлении переменных более поздняя переменная всегда заменяется на более раннюю. Если прогоняемое табло состоит из строк-допущений некоторой Т - зависимости, то при таком порядке в самом начале будут переменные из строки-заключения этой зависимости. Тогда легко можно проверить, породилась ли строка-заключение во время прогонки, не заботясь о возможных изменениях переменных в этой строке. [47]
Несколько претенциозное название этого усилителя связано с любопытной мыслью о том, что случаи содержит ответы на все вопросы, а правильный ответ может реализоваться путем многоэтапной селекции, отбора. Во всяком случае, отбор должен опираться на проверку истинности полученного промежуточного результата путем определенных процедур вывода, позволяющих отсеивать заведомую нелепость. Эшби даже доказал теорему, что такой процесс заканчивается за конечное время. Идея доказательства опирается на очевидное соображение, что случайное исходное разнообразие можно исчерпать за конечное число этапов селекции, если на каждом этапе редукция ( снижение) разнообразия конечным образом отличается от нуля. [48]
Эти три примера иллюстрируют три общепринятых способа конструирования программ из команд. Способом а) мы уже воспользовались при написании программ, когда требовали последовательно выполнить несколько элементарных команд. Предложение б) собрано из двух команд ( поезжай на автобусе и иди пешком) и одной проверки истинности условия ( Есть ли автобус на остановке. [49]