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

Reply via email to