IF: Goal = Q uncle-of Р
THEN: ADD GOAL
Find P’s Parents
Find Parents’ Siblings
Distinguish Uncles/Aunts
(ЕСЛИ: Задача = Q дядя PTO: ДОБАВИТЬ ЗАДАЧУ
Найти родителей Р
Найти братьев/сестер родителей
Различить дядь/теть)
Этот демон запускается записью uncle-of (дядя) в колонке «Задачи». В этой колонке действительно есть такая запись, поэтому демон начинает действовать и добавляет к этой колонке новые метки:
Необходим также элемент программы – еще один демон или дополнительный механизм внутри данного демона, который будет отвечать за Р и Q, то есть заменять ярлык Р списком конкретных ярлыков имен: Me (Я), Abel (Абель), Gordie (Горди) и т. д. Эти детали я здесь не привожу, чтобы не усложнять восприятие процесса.
Новые записи в колонке «Задачи» побуждают к действию других демонов. Один из них (на концептуальном уровне) ищет родителей системы, копируя (на механическом уровне) все записи, содержащие имена родителей, в раздел «Краткосрочная память» (если только там уже нет таких записей, конечно; это условие необходимо, чтобы демон не продолжал бессмысленно делать одну копию за другой, как ученик чародея):
IF: Goal = Find P’s Parents
Long-Term Memory = X parent-of P
Short-Term Memory ≠ X parent-of P
THEN: COPY TO Short-Term Memory
X parent-of P
ERASE GOAL
(ЕСЛИ: Задача = найти родителей P
Долгосрочная память = X родитель P
Краткосрочная память ≠ X родитель P
ТО: КОПИРОВАТЬ В КРАТКОСРОЧНУЮ ПАМЯТЬ
X родитель P
СТЕРЕТЬ ЗАДАЧУ)
Теперь наша доска объявлений выглядит следующим образом:
Теперь, когда мы знаем родителей, мы можем найти братьев и сестер родителей. На механическом уровне это означает, что теперь, когда имена родителей записаны в разделе «Краткосрочная память», может начинать работу демон, копирующий записи о братьях и сестрах родителей:
IF: Goal = Find Parents’ Siblings
Short-Term Memory = X parent-of Y
Long-Term Memory = Z sibling-of X
Short-Term Memory
Z sibling-of X
THEN: COPY TO Short-Term Memory
Z sibling-of X
ERASE GOAL
(ЕСЛИ: Задача = найти родителей P
Краткосрочная память = X родитель Y
Долгосрочная память = Z брат/сестра X
Краткосрочная память
Z брат/сестра X
ТО: КОПИРОВАТЬ В КРАТКОСРОЧНУЮ ПАМЯТЬ
Z брат/сестра X
СТЕРЕТЬ ЗАДАЧУ)
Вот что у него получается:
На данном этапе мы рассматриваем дядь и теть вместе. Чтобы отделить дядь от теть, нам нужно найти среди них мужчин. На механическом уровне система должна найти записи, рядом с которыми в разделе «Долгосрочная память» стоят метки is-male (мужского пола). Вот демон, который выполняет эту проверку:
IF: Goal = Distinguish Uncles/Aunts
Short-Term Memory = X parent-of Y
Long-Term Memory = Z sibling-of X
Long-Term Memory = Z is-male
THEN: STORE IN LONG-TERM MEMORY
Z uncle-of Y
ERASE GOAL
(ЕСЛИ: Задача = различить дядь/теть
Краткосрочная память = X родитель Y
Долгосрочная память = Z брат/сестра X
Долгосрочная память = Z мужского пола
ТО: ХРАНИТЬ В ДОЛГОСРОЧНОЙ ПАМЯТИ
Z дядя Y
СТЕРЕТЬ ЗАДАЧУ)
Это демон, который наиболее явно воплощает в себе понимание системой значения слова «дядя»: это человек мужского пола, брат одного из родителей. Система добавляет запись о том, кто является дядей, в раздел «Долгосрочная память», а не «Краткосрочная память», потому что эта запись представляет собой элемент знания, который всегда истинен:
На концептуальном уровне мы всего лишь логически вывели факт, который был запрошен. На механическом уровне мы только что создали идентичные друг другу вплоть до последней метки записи в колонках «Задачи» и «Долгосрочная память». Запускается самый первый из упомянутых мной демонов, который осуществляет поиск таких пар; он ставит метку, обозначающую, что задача решена: