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


Полный листинг программы - часть 5


?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))) )

;;-------------------------------

;; ЛОГИЧЕСКИЕ ОПЕРАТОРЫ

;; Правила отрицания

;; ЕСЛИ некто не правдолюбец,

;; ТО он лжец. (defrule notl

(declare (salience 5))

?F <- (claim (content NOT Т ?P)) =>

(modify ?F (content F ?P)) )

;; ЕСЛИ некто не лжец,

;; ТО он правдолюбец, (defrule not2

(declare (salience 5))

?F <- (claim (content NOT F ?P)) =>

(modify ?F (content Т ?Р)) )

;;---------------------

;; Распространение отрицания на дизъюнкцию,

(defrule not-or

(declare (salience 5))

?F <- (claim .(content NOT OR ?P ?X ?Q ?Y)) =>

(modify ?F (content AND (flip ?P) ?X (flip ?Q) ?Y))

)

;;-------------------------

;; Распространение отрицания на конъюнкцию,

(defrule not-and

(declare (salience 5))

?F <- (claim (content NOT AND ?P ?X ?Q ?Y)) =>

(modify ?F (content OR (flip ?P) ?X (flip ?Q) ?Y))

)

;;------------------------------

;; Устранение конъюнкции, (defrule conj

(world (tag ?N) (scope ?V) (task check)

(context ?L)) (claim (content AND ?P ?X ?Q ?Y) (reason ?N)

(scope ?V) (context ?L) =>

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

(scope ?V) (context ?L))

(assert (claim (content ?Q ?Y) (reason ?N)



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



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