Полный листинг программы
(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) )
