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


Разработкправил - часть 2


?Q <- (claim (content F ?X) (reason ?N) (scope truth)) =>

(printout t crlf

"Statement is inconsistent if " ?Y " is a knight."

;; "Высказывание противоречиво, если " ?Y " правдолюбец."

t crlf)

(retract ?Q)

(retract ?P)

(modify ?W (scope falsity)) )

Если предположить, что исходное высказывание было правдивым, то в дальнейшем обнаруживается противоречивая пара утверждений, которые затем удаляются из рабочей памяти, а значение "правдивости" предположения в объекте world изменяется на falsity (лживость). Если же после этого также будет обнаружено противоречие, то мы приходим к выводу о глобальной несовместимости условий задачи, т.е. в данной постановке мы имеем дело с логическим парадоксом.

;; Выявление противоречия между предположением о

;; лживости и следующими из него фактами, (defrule contra-falsity

(declare (salience 10))

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

?S <- (statement (speaker ?Y) (tag ?N))

?P <- (claim (content F ?X) (reason ?N) (scope falsity))

?Q <- (claim (content T ?X) (reason ?N)

(scope falsity)) => (printout t crlf

"Statement is inconsistent if " ?Y " is a knave. "

;; "Высказывание противоречиво, если " ?Y " лжец." t crlf)

(modify ?W (scope contra))

Правило sweep обеспечивает проверку, все ли следствия из неверного предположения удалены из памяти.

;; Удалить из базы фактов все утверждения,

;; которые следуют из предположения о правдивости.

(defrule sweep

(declare (salience 20))

(world (tag ?N) (scope falsity))

?F <- (claim (reason ?N) (scope truth)) =>

(retract ?F)

Обратите внимание на то, что правила contra-truth, contra-f alsity и sweep имеют более высокий приоритет (значение параметра salience), чем другие правила. Этим обеспечивается как можно более ранее обнаружение противоречия, а следовательно, и удаление из базы фактов утверждений, сделанных на основе предположения, приведшего к противоречию.



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



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