Полный листинг программы
(defrule transworld-truth (declare (salience 80))
?W ← (world (tag?N) (scope truth) (task check)
(upper 0))
;; В текущем "мире" имеется утверждение,
;; противоречащее утверждению в другом "мире",
(claim (content?F?X) (reason?N))
;; "Мир", с которым обнаружен конфликт, имеет
;; идентификатор, меньший, чем текущий "мир",
;; т.е. сформирован раньше,
(claim (content?G&:(not (eq?G?F))?X)
(reason?M&:(<?M?N))) ›
(printout t crlf
"TRANSWORLD CONTRADICTION: "?F?X "
versus?G?X " in worlds "?N "|"?M
;; "МЕЖМИРОВОЕ ПРОТИВОРЕЧИЕ: "?F?X " противоречит
;;?G?X " в мирах "?N "|"?M
t crlf) (modify?w (task contra))
;;ЕСЛИ обнаруживается противоречие между
;;текущим "миром" в предположении о лживости
;;и ранее покинутым "миром",
;;ТО подготовиться к выполнению отката в ранее
;;покинутый "мир". (defrule transworld-falsity
(declare (salience 80))?W < – (world (tag?N)
(scope falsity)
(task check) (upper 0)) (claim (content?F?X)
(reason?N)) (claim
(content?G&:(not (eq?6?F))?X) (reason?M&:(<?M?N))) ›
(printout t crlf
"TRANSWORLD CONTRADICTION: "?F?X "
versus?G?X " in worlds "?N "|"?M
;; "МЕЖМИРОВОЕ ПРОТИВОРЕЧИЕ: "?F?X " противоречит
;;?G?X " в мирах "?N "|"?M
t crlf) (modify?W (task contra) (prior?M))
ЕСЛИ обнаружено противоречие между внедренным "миром" метавысказывания
и ранее покинутым "миром", ТО удалить высказывание, связанное с внедренным "миром"
(defrule upper-world
(declare (salience 80))
?W ← (world (tag?N)
(task check) (upper?U&"0))
(claim (content?F?X) (reason?N))
(claim
(content?G&:(not (eq?G?F))?X)
(reason?M&:(<?M?N)))?S ← (statement (tag?N) (reason?U)) ›
(printout t crlf
"TRANSWORLD CONTRADICTION: "?F?X "
versus "?G?X " in worlds "?N "|"?M
;; "МЕЖМИРОВОЕ ПРОТИВОРЕЧИЕ: "?F?X "
противоречит ";;?G?X " в мирах "?N "|"?M
t crlf) (retract?S) (modify?W (task contra) (prior?U))
;;ОПЕРАЦИИ УДАЛЕНИЯ
;; Удаление дизъюнкта, (defrule clean-context
(declare (salience 50)) (world
(tag?N)
(task?T&:(or (eg?T contra) (eq?T back))
(context?S&~0))
?F ← (claim (reason?N) (context?S)) ›
(retract?F)
;; ЕСЛИ текущий мир проанализирован только
;; в предположении о правдивости,
;; ТО проанализировать его, предполагая
;; лживость персонажа.
(defrule switch-scope
(declare (salience 40))
?W ← (world (tag?N) (scope truth) (task contra)
(context?C&~1) ›
(modify?W (scope falsity) (task check))
)
;; Удалить все утверждения, сделанные в предположении
;; о правдивости, перед тем как анализировать
;; предположение о лживости, (defrule sweep-claims
(declare (salience 100))
(world
(tag?N) (scope truth) (context?C&~1)
(task?T&:(or (eq?T contra) (eq?T back))))
?F ← (claim (reason?N) (scope truth) (context?D&~1)) ›
(retract?F)
)
;; Удалить все объекты statement, основанные на предположении
;; о правдивости, перед тем как анализировать
;; предположение о лживости, (defrule sweep-statements
(declare (salience 100))
(world
(tag?N) (task?T&:(or (eq?T contra)
(eq?T back))) (scope truth) (context 0))
?F ← (statement (reason?N) (scope truth)) ›
(retract?F)
)