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
Citando Wolfgang Laun <[email protected]>:
When (deffacts) is evaluated to build the facts, (fact-id) won't
return a fact since only the (reset) inserts
the defined facts. You'll have to use dynamic insertion with (assert)
to insert a fact referring to another
fact.
-W
On 20 July 2010 19:23, Henrique Lopes Cardoso <[email protected]> wrote:
Hi,
I have just reproduced the example of section 6.10 of the Jess manual:
(defrule forall-example
(not (and (a ?x)
(not (b ?x)) ) )
=>
(printout t "whassup?" crlf) )
(deffacts qwe
(a 1)
; (a 2)
(b 1) )
(reset) (facts) (run)
So in this case, if I comment out fact (a 2), the rule stops firing.
But then I tried to implement the following rule:
(defrule r
(not (and ?x <- (a ?) ; variable binding
(not (b ?x)) ) ) ; check if there is a b referring
to the a fact
=>
(printout t "sure thing!" crlf) )
(deffacts qwe
(a 1)
; (a 2)
(b (fact-id 1)) ) ; fact b referring to fact (a 1)
(reset) (facts) (run)
It's quite similar to the previous one, but now I am inspecting if fact
b contains a reference to fact a.
In this case the rule does not cease to fire when I comment out (a 2).
Am I missing something?
Thanks,
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].
--------------------------------------------------------------------
--------------------------------------------------------------------
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].
--------------------------------------------------------------------
--------------------------------------------------------------------
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].
--------------------------------------------------------------------