Hi Wolfgang,
I'm surprised you would bring this up; it's very well-documented
behavior duplicated exactly from CLIPS. FOr example, in section 6.5 of
the Jess 7.1 manual:
A not CE is evaluated only when either a fact matching it exists,
or when the pattern immediately
before the not on the rule's LHS is evaluated. If a not CE is the
first
pattern on a rule's LHS, or is the the first the pattern in an and
group, or is the only
pattern on a given branch of an or group, the pattern (initial-
fact) is inserted to
become this important preceding pattern. Therefore, the fact
(initial-fact) created by the
reset command is necessary to the proper functioning of some not
patterns. For
this reason, it is especially important to issue a reset command
before attempting to run
the rule engine when working with not patterns.
On Oct 31, 2008, at 8:45 AM, Wolfgang Laun wrote:
This Jess program works correctly if executed with the initial reset,
but the rule does not fire if there is not initial-fact.
;; (reset)
(deftemplate Pair (slot a)(slot b))
(assert (Pair (a a)(b b)))
(defrule noabeq (not (Pair (a ?x)(b ?x)))
=>
(printout t "no a=b!" crlf))
(run)
If the presence of the initial-fact is required for some things to
work,
then there should be a check and an error thrown with a diagnostic. Or
could the initial-fact be supplied automatically when the first fact
is entered into WM?
Cheers
Wolfgang
---------------------------------------------------------
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]
--------------------------------------------------------------------