How can I determine if a fact is present or can be concluded via backward chaining? Other expert systems I've used have an operator, typically named ASK, which will do this.
Suppose I have a two argument predicate OPPOSITE-SIDE which is symetric, such that if (OPPOSITE-SIDE a b) is true then (OPPOSITE-SIDE b a) is also true: (do-backward-chaining opposite-side) (defrule opposite-side-symetric (need-opposite-side ?side1 ?side2) (opposite-side ?side2 ?side1) => (assert (opposite-side ?side1 ?side2))) And I now make an assertion about two opposites: (assert (opposite-side side-z side-y)) How can I test to make sure that (opposite-side side-y side-z) is true? I tried using a query (defquery opposite-side (declare (variables ?x ?y)) (opposite-side ?x ?y)) (bind ?e (run-query opposite-side side-y side-z)) (while (?e hasMoreElements) (printout t (call ?e nextElement) crlf)) but that didn't give me anything useful. It just printed FALSE. -------------------------------------------------------------------- To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]' in the BODY of a message to [EMAIL PROTECTED], NOT to the list (use your own address!) List problems? Notify [EMAIL PROTECTED] --------------------------------------------------------------------