Re: JESS: Nested not conditional element with slots referring to facts

"Henrique Lopes Cardoso" <[email protected]>
Newsgroups gmane.comp.java.jess
Message-ID <[email protected]>
Hi,

Is there any update on this issue?
Since I did not get any answer to my last question in the previous
e-mail (below), I am asking again:
- Is there a way to stop Jess from transforming rules and keep the
original coding, possibly with some loss of performance?
Or even better: is the bug solved?

Thanks,

Henrique



Henrique Lopes Cardoso wrote:
> Hi again,
>
> In the sequel of this problem, I've fond another (possibly related)
> situation where the rule does not seem to compile correctly.
> I managed to simplify the example to the following rule:
>
>     (defrule r3
>         (s)
>         (or (not (a))
>             (and ?x <- (a)
>                  (b ?x) ) )
>         (test (= qwe asd))   ; stupid test, just to expose the problem
>         =>
>         (printout t "tssss!" crlf) )
>
> Using (ppdefrule), we see that this rule compiles to:
>
>     (defrule MAIN::r3
>        (or
>          (and
>            (s)
>            (not (a)))
>          (and
>            (s)
>            ?x <- (a)
>            (and (b ?x)
>             (test (= qwe asd)))))
>        =>
>        (printout t "tssss!" crlf))
>
> Therefore, the test is not done in the first branch of (or).
>
> Is there a way to stop Jess from transforming rules and keep the
> original coding, possibly with some loss of performance? The point here
> is to avoid the apparently buggy transformations that are being made.
>
> Thanks.
>
> Henrique
>
>
> Ernest Friedman-Hill wrote:
>   
>> Indeed, the rule doesn't seem to compile correctly; the two ?x's are
>> not merged.
>>
>> Jess> (ppdefrule r)
>> "(defrule MAIN::r
>>    (initial-fact)
>>    (not ?x <- (and ?x <- (a ?_021__blank_2) (not (b ?_0022_x))))
>>    =>
>>    (printout t \"sure thing!\" crlf))"
>>
>>
>> On Jul 20, 2010, at 4:04 PM, Henrique Lopes Cardoso wrote:
>>
>>     
>>> Actually, asserts do work, because (deffacts) are added to working
>>> memory by a call to (reset). This is wy I am calling (facts) before
>>> (run), to make sure facts are in working memory as intended.
>>>
>>> Anyway, I tried (assert)ing them one by one and it still does not work
>>> as expected.
>>>
>>> It must be something else.
>>>
>>> Henrique


--------------------------------------------------------------------
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].
--------------------------------------------------------------------
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.