If you want object1, object2, and object3 to be different, then you
have to say so:
(defrule person-have-3-objects
(person-have-object ?person ?object1)
(person-have-object ?person ?object2&~?object1)
(person-have-object ?person ?object3&~?object2&~?object1)
=>
(printout t ?object1 ?object2 ?object3))
On May 12, 2008, at 1:25 PM, Jean-Francois Lassonde wrote:
Hi,
I'm starting with JESS and stumbled on a problem.
The following rule is supposed to activate when a person have
exactly 3 objects. (there is exactly 3 facts "person-have-object"):
(defrule person-have-3-objects
(person-have-object ?person ?object1)
(person-have-object ?person ?object2)
(person-have-object ?person ?object3)
=>
(printout t ?object1 ?object2 ?object3))
In the LHS, I want to express the fact that person-have-object is
found exactly 3 times for a unique person in the facts database. And
I'd like to have a reference to each object for operation in the RHS.
I thought that my LHS was correct but it matches when there is only
1 fact (person-have-object myself computer). It will prints
"computer computer computer".
How can I explicitly state that I want ?object1, ?object2 and ?
object3 to be different?
Thank you,
--
Jean-Francois Lassonde
---------------------------------------------------------
Ernest Friedman-Hill
Informatics & Decision Sciences Phone: (925) 294-2154
Sandia National Labs FAX: (925) 294-2234
PO Box 969, MS 9012 [EMAIL PROTECTED]
Livermore, CA 94550 http://www.jessrules.com
--------------------------------------------------------------------
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]
--------------------------------------------------------------------