2014-10-23 4 views
1

방금 ​​CLIPS에서 작업을 시작했습니다. 이 간단한 규칙을 수행하려고하지만 논리 OR을 사용하는 방법을 알지 못합니다. 나는 두 가지 규칙 (한 친척 형과 다른 형제에게 하나)을 정의 할 수 있다는 것을 안다. 그러나 나는 그것이 중요한 것이 아니라고 생각한다. 규칙은 : 당신이 그의 형제 또는 자매 인 경우에, 당신은 누군가의 친척이다.CLIPS의 논리적 OR - 간단한 해체

(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>