Assert 逻辑或在片段中-简单定义规则
我刚开始制作剪辑。我试图做这个简单的规则,但我不知道如何在这里使用逻辑OR。我知道我可以定义两条规则(一条是亲戚兄弟的,另一条是亲戚姐妹的),但我认为这不是重点。 规则是:如果你是某人的兄弟姐妹,你就是他的亲戚Assert 逻辑或在片段中-简单定义规则,assert,logical-operators,clips,Assert,Logical Operators,Clips,我刚开始制作剪辑。我试图做这个简单的规则,但我不知道如何在这里使用逻辑OR。我知道我可以定义两条规则(一条是亲戚兄弟的,另一条是亲戚姐妹的),但我认为这不是重点。 规则是:如果你是某人的兄弟姐妹,你就是他的亲戚 (defrule MAIN::siblings-relatives (is-brother ?x ?y) (test (or (is-sister ?x ?y)) => (assert (is-relative ?x ?y))
(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))
剪辑>(清除)
剪辑>
(b)亲属
(或(是兄弟?x?y)
(妹妹是x?y)
=>
(断言(是相对的x?y))
(打印输出t?x“与y crlf相对)
剪辑>(断言(是大卫·吉姆兄弟))
剪辑>(断言(是简·弗兰克修女)
剪辑>(运行)
简是弗兰克的亲戚
戴夫是吉姆的亲戚
剪辑>(事实)
f-0(初始事实)
f-1(是大卫·吉姆兄弟)
f-2(是简·弗兰克修女)
f-3(是简·弗兰克的亲戚)
f-4(是戴夫·吉姆的亲戚)
总共5个事实。
剪辑>
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>