Hello,

I'm having a bit of an issue regarding pattern matching inside 'and'
operators nested within 'not' operators.  Here's an example:  The rule
should assert a fact containing the latitude of the person who is
closest to home (and no other)......

(defrule findClosestPersonToHome
     (home (latitude ?homeLat) (longitude ?homeLon))
     (person (latitude ?lat) (longitude ?lon))
     (not
         (and
              (person (latitude ?otherLat) (longitude ?otherLon))

              (test  (< (distance ?homeLat ?homeLon ?otherLat ?otherLon)

                           (distance ?homeLat ?homeLon  ?lat  ?lon)
                       )
              )
         )
     )
=>
   (assert (closestLat ?lat ))
)

I know Jess will not allow variable definition (to be later patter
matched) within a 'not', but I was hoping there was some way to at least
pattern match across different patterns all contained in the 'not.'  Any
advice on how to handle the problem above would be greatly appreciated.

Drew

ps  The preceding resulted in the following error message.......

********************
Jess reported an error in routine ReteCompiler.eval
        while executing (batch test.kb).
  Message: Unbound variable found in funcall: otherLat parsing defrule
MAIN::findClosestPersonToHome .
  Program text: ( batch test.kb )  at line 1.
        at jess.ReteCompiler.compilerError(ReteCompiler.java:698)
        at jess.ReteCompiler.eval(ReteCompiler.java:75)
        at jess.ReteCompiler.eval(ReteCompiler.java:83)
        at jess.ReteCompiler.addRule(ReteCompiler.java:510)
        at jess.Rete.addDefrule(Rete.java:686)
        at jess.Jesp.addARule(Jesp.java:1017)
        at jess.Jesp.doParseDefrule(Jesp.java:971)
        at jess.Jesp.parseDefrule(Jesp.java:894)
        at jess.Jesp.parseSexp(Jesp.java:159)
        at jess.Jesp.parse(Jesp.java:62)
        at jess.Batch.batch(Batch.java:43)
        at jess.Batch.call(Batch.java:57)
        at jess.FunctionHolder.call(FunctionHolder.java:37)
        at jess.Funcall.execute(Funcall.java:270)
        at jess.Jesp.parseAndExecuteFuncall(Jesp.java:1583)
        at jess.Jesp.parseSexp(Jesp.java:183)
        at jess.Jesp.parse(Jesp.java:62)
        at jess.Main.execute(Main.java:123)
        at jess.Main.main(Main.java:23)
************************






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