Иллюстрированный самоучитель по введению в экспертные системы


Обработкметавысказываний - часть 3


(done 0)) =>

(printout t crlf "Assuming " Т ?X " and " ?Z " says " $?Y

" in world " ?N

;; "Предполагается " Т ?X " и " ?Z " говорит " $?Y

;; "в мире " ?N

t crlf

)

;; Зафиксировать, что высказывание было распаковано

;; в предположении о его правдивости,

(modify ?S (tag ?N) (done 1))

;; Предположим, что персонаж в текущем "мире" является

;; правдолюбцем.

(assert (claim (content T ?X) (reason ?N)

(scope truth)))

;; Зафиксировать в объекте world, что высказывание

;; распаковано, (modify ?W (done 1))

;; Сформировать новый объект world для внедренного

;; высказывания и зафиксировать, что этот объект

;; является внутренним по отношению к объекту ?N.

(assert (world (tag ( + ?N 1)) (scope truth) (upper ?N)))

;; Зафиксировать внедренное высказывание в новом

;; объекте world.

(assert (statement (speaker ?Z) (claim $?Y) (reason ?N)))

)

;; ЕСЛИ объект world базируется на предположении о

;; лживости метавысказывания,

;; ТО предположить, что персонаж лжет.

;; Каких-либо предположений об истинности

;; утверждения не делается.

(defrule unwrap-false-state

?W <- (world (tag ?N) (scope falsity)

(task check)) ?S <- (statement (speaker ?X)

(claim SAY ?Z $?Y)

(tag ?N) (done 1)) =>

(printout t crlf "Assuming " F " "?X " and

NOT " ?Z " says " $?Y

" in. world " ?N

;; "Предполагается " F " "?X " и HE " ?Z "

говорит " $?Y ;; " в мире " ?N t crlf

)

;; Изменить значение в поле scope текущего объекта

;; world.

(modify ?W (scope falsity) (done 2))

;; Зафиксировать, что высказывание было распаковано

;; в предположении о лживости, (modify ?S (scope falsity) (done 2))

;; Предположить, что в текущем "мире" персонаж,

;; произнесший метавысказывание, лжец.

(assert (claim (content F ?X)

(reason ?N) (scope falsity))) )

Чтобы облегчить себе жизнь, будем считать, что в метавысказывании не может быть отрицания, т.е. мы не будем рассматривать метавысказывания вида

А: "В не говорил, что он правдолюбец".

Более того, если А говорит, что В заявил нечто, то по условиям, принятым в головоломках этого класса, для того чтобы доказать, что А лжец, требуется только показать, что не существует непротиворечивого "мира", в котором В мог бы сделать правдивое утверждение. Таким образом, нам не придется обрабатывать отрицания в метавысказыва-ниях и анализировать их непротиворечивость. Указанные условия нашли свое отражение в правиле unwrap-false-state. В этом правиле которое активизируется, когда предположение о правдивости персонажа не срабатывает, просто предполагается, что этот персонаж лжет, а более глубокий анализ не проводится.




Начало  Назад  Вперед



Книжный магазин