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

Расширение набора правил – работа с составными высказываниями

Следующий шаг – разработка правил, манипулирующих контекстом. Приведенное ниже правило формирует контекст для левого операнда дизъюнкции.

(defrule left-or
?W ← (world (tag?N) (context 0))
(claim (content OR?P?X?Q?Y)(reason?N)
(scope?V)) ›
(modify?W (context 1)) (assert (claim
(content?P?X) (reason?N) (scope?V)
(context 1))))

Это правило устанавливает значение 1 в поле context объекта world и формирует соответствующий объект claim.

По этому же принципу разработаем правило для формирования контекста правого операнда дизъюнкции.

(defrule right-or
?W ← (world (tag?N) (context 1))
(claim (content OR?P?X?Q?Y) (reason?N)
(scope?V)) ›
(modify?W (context 2)) (assert (claim
(content?Q?Y) (reason?N) (scope?V) (context 2))
)

Упражнение 2

Разработайте самостоятельно правило, которое оперировало бы с объектом claim содержим утверждение в конъюнктивной форме, как показано ниже.

(claim (content AND Т A F В) (reason 1) (scope truth))

Это правило должно разделить такое утверждение на два: суть первого – утверждение, что А – правдолюбец, а второго – утверждение, что В – лжец. Новые объекты claim должны существовать в текущем контексте, определенном в объекте world.

Далее разработаем правила, чувствительные к контексту, которые будут выявлять наличие противоречий в анализируемых утверждениях.

;; Выявление противоречия между предположением о
;; правдивости и следующими из него фактами
;; в разных контекстах одного и того же объекта world,
(defrule contra-truth-scope
(declare (salience 10)) (world (tag?N)
(scope truth) (context?T)) (claim
(content Т?Х) (reason?N) (scope truth)
(context?S&:(<?S?T)))?Q ← (claim
(content P?x) (reason?N)
(scope truth) (context?T)) ›
(printout t "Disjunct "?T
" is inconsistent with earlier truth context. "
;; "Дизъюнкт "?T
;; " противоречит ранее установленному контексту правдивости.
" crlf)
(retract?Q)
)
;; Выявление противоречия между предположением о
;; лживости и следующими из него фактами
;; в разных контекстах одного и того же объекта world.
(defrule contra-falsity-scope (declare (salience 10))
?W ← (world (tag?N) (scope falsity)
(context?T>> (claim
(content F?X) (reason?N) (scope falsity)
(context?S&:(<?S?T)))?Q ← (claim (content Т?Х)
(reason?N)
(scope falsity) (context?T)) ›
(printout t "Disjunct "?T
" is inconsistent with earlier falsity context."
;; "Дизъюнкт "?T
;; " противоречит ранее установленному контексту лживости. "
crlf)
(retract?Q))
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.