[rules-users] "Not" Non-Existential Quantifier

Ingomar Otter iotter at mac.com
Thu Jul 31 13:51:22 EDT 2008


Hans,
I checked the docs and as  Edson says it should work without the  
exists( ).
Strange that never worked for me.

Maybe we all learn something if you can carve out a test-case.
Strange.

--I

Am 31.07.2008 um 19:29 schrieb ringsah at comcast.net:

> Ingomar,
>
> I tried this, and indeed that worked. I was surprised, as I thought  
> "not" was meant more to mean that a fact inside its parentheses did  
> not exist, rather than a logical negation, which is the way you used  
> it in your example. However, if I do what you said, it does work  
> exactly how I expected "not" alone to work.
>
> Thanks!
> -Hans
>
> -------------- Original message --------------
> From: Ingomar Otter <iotter at mac.com>
>
>> Hans,
>> If you change "not NegativeResult()" to "not (exits
>> NegativeResult())" this should result in the expected behaviour.
>>
>> Cheers,
>> Ingomar
>>
>> Am 31.07.2008 um 17:19 schrieb ringsah at comcast.net:
>>
>>> How is "not" supposed to work with insertLogical? Assume I have two
>>> different rules whose conditions are mutually exclusive, like the
>>> following:
>>> rule "Rule One"
>>> when
>>> not NegativeResult()
>>> then
>>> insertLogical(new ApplicantStatus("Approved"));
>>> end
>>> rule "Rule Two"
>>> when
>>> NegativeResult()
>>> then
>>> insertLogical(new ApplicantStatus("Denied"));
>>> end
>>> Assume that the above two rules are the only way an ApplicantStatus
>>> fact can be inserted into working memory. I would expect, after all
>>> rules are run, that it would be impossible for there to be one
>>> ApplicantStatus with "Approved" as its reason, and another with
>>> "Denied" as its reason, in the working memory.
>>> I would expect that, before any NegativeResult is inserted, that
>>> rule one could run, and insert an ApplicantStatus fact with an
>>> "Approved" reason. Then, after a NegativeResult is inserted, that
>>> rule two could run, and insert an ApplicantStatus fact with a
>>> "Denied" reason. At this point I would expect that the original
>>> ApplicantStatus fact, with an "Approved" reason, would be retracted,
>>> since the conditions under which it was inserted are no longer true.
>>> This is not what I am observing, however. I am finding
>>> ApplicantStatus facts with both reasons in working memory at the end
>>> of the rules run. Should "not" work as I expect with regard to
>>> inserting a fact via insertLogical()? Or is this a known limitation,
>>> or simply the way it is designed to work?
>>> Thanks,
>>> -Hans_______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users




More information about the rules-users mailing list