Why does the last rule is fired but not the first one (rule-1 will fire if I remove rule-2) ?
 
(assert (f1 4 6 1 4 1 nil))
(assert (f2 -7 0 4 9))
 
(deffunction same-name (?n1 ?n2)
 (if (eq (mod ?n1 7) (mod ?n2 7)) then
     true
  else
     false))
 
(defrule rule-1
 (f1 ?n1 ?n2 ?n3 ? ? ?)
 (f2 ?bc ?tc ?ac&:(same-name ?ac ?n1)|:(same-name ?ac ?n2)|:(same-name ?ac ?n3) ?sc)
 =>
 (assert (something)))
 
(defrule rule-2
 (f1 ?n1 ?n2 ?n3 ? ? ?)
 (f2 ?bc ?ac&:(same-name ?ac ?n1)|:(same-name ?ac ?n2)|:(same-name ?ac ?n3) ?ac ?sc)
 =>
 (assert (something)))
 
Thank you.
 
 

Reply via email to