2014-10-23 3 views
1

Я только начал работать в CLIPS. Я пытаюсь сделать это простое правило, но я понятия не имею, как использовать логический ИЛИ здесь. Я знаю, что могу определить два правила (один для относительного брата и другого для родственницы-сестры), но я думаю, что это не вопрос. Правило: вы родственник кого-то, если вы его брат или сестра.Логический ИЛИ в CLIPS - простой defrule

(defrule MAIN::siblings-relatives 
     (is-brother ?x ?y) 
     (test (or (is-sister ?x ?y)) 
     => 
     (assert (is-relative ?x ?y)) 
     (printout t ?x " is relative of " ?y crlf)) 

ответ

2
CLIPS> (clear) 
CLIPS> 
(defrule siblings-relatives 
    (or (is-brother ?x ?y) 
     (is-sister ?x ?y)) 
    => 
    (assert (is-relative ?x ?y)) 
    (printout t ?x " is relative of " ?y crlf)) 
CLIPS> (assert (is-brother Dave Jim)) 
<Fact-1> 
CLIPS> (assert (is-sister Jane Frank)) 
<Fact-2> 
CLIPS> (run) 
Jane is relative of Frank 
Dave is relative of Jim 
CLIPS> (facts) 
f-0  (initial-fact) 
f-1  (is-brother Dave Jim) 
f-2  (is-sister Jane Frank) 
f-3  (is-relative Jane Frank) 
f-4  (is-relative Dave Jim) 
For a total of 5 facts. 
CLIPS>