David's expectation of what *should* happen is correct, as is
Wolfgang's of what *is* happening. Looks like a bug.
That said, the bug is in the optimizer that's trying to turn what
David originally had, into what Wolfgang suggests is better. So you
can avoid the bug and improve the code by going with that suggestion.
We're putting together an update release right now, and I'll see if
this can be fixed for that release.
On Oct 15, 2009, at 2:19 AM, Wolfgang Laun wrote:
The answer to the question is: yes. A ppdefpattern shows that the
test is just a trailing appendix of the preceding pattern:
(defrule MAIN::related1
(or
(and
(parent ?z ?x)
(parent ?z ?y))
(and
(parent ?x ?y))
(and
(and (parent ?y ?x)
(test (neq ?x ?y)))))
=> ...
In any case, to avoid a child being found as its own sibling, a
pattern such as
(parent ?z ?x)
(parent ?z ?y&~?x)
is probably preferable.
-W
On Mon, Oct 12, 2009 at 9:54 PM, David Scuse <[email protected]>
wrote:
Ernest, I suspect that this is a question for you.
The documentation on the test CE states:
"A test CE is evaluated every time the preceding pattern on the
rule's LHS is evaluated."
(page 41 of the current Jess manual.)
The problem has been simplified from the original but the intent
remains the same,
that is, two identify two people who are related by blood (i.e. have
a common ancestor
or one is the ancestor of the other).
The test CE is used to prevent a person from being related to him/
herself.
If the test is placed immediately after the AND, everything works as
desired (see related3 and related4)
but if the test follows a different pattern (see related1 and
related2), duplicates are generated.
The question is: does the test apply only to the pattern that
immediately precedes it,
even if that pattern is part of a compound pattern?
Thanks
David Scuse
(Yes, I know that the definition of related is not general; this was
done on purpose.)
---------------------------------------------------------
Ernest Friedman-Hill
Informatics & Decision Sciences, Sandia National Laboratories
PO Box 969, MS 9012, 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].
--------------------------------------------------------------------