Here an interesting issue. (I hope)
Assume the rules are structured into 3 modules (MAIN, A, and B) which contain
statements to assert ordered facts as shown in this example:
;
; c:/jess/test/A.clp
;
(defmodule A)
(defrule forA
(MAIN::initial-fact)
=>
(assert (testfact A in A))
(assert (testfact B in A)))
;
; c:/jess/test/B.clp
;
(defmodule B)
(defrule forB
(initial-fact)
(MAIN::testfact B in MAIN) ; <==== This causes the trouble
=>
(assert (testfact A in B))
(assert (testfact B in B)))
;
; c:/jess/test/MAIN.clp
;
(batch c:/jess/test/A.clp)
(batch c:/jess/test/B.clp)
(reset)
(set-current-module MAIN)
(assert (testfact A in MAIN))
(assert (testfact B in MAIN))
(focus A B)
Module B contains a rule that matches a fact from module MAIN (see the mark). After
loading MAIN.clp and running this little program jess displays the following facts:
-----Result with the marked statement
Jess> (facts *)
f-0 (MAIN::initial-fact)
f-1 (MAIN::testfact A in MAIN)
f-2 (MAIN::testfact B in MAIN)
f-3 (A::testfact A in A)
f-4 (A::testfact B in A)
f-5 (MAIN::testfact A in B)
f-6 (MAIN::testfact B in B)
For a total of 7 facts.
Jess>
f-5 and f-6 should not be facts in module MAIN but in module B. After removing that
marked pattern from the rule ForB, facts are created as expected:
-----Result without the marked statement
Jess> (facts *)
f-0 (MAIN::initial-fact)
f-1 (MAIN::testfact A in MAIN)
f-2 (MAIN::testfact B in MAIN)
f-3 (A::testfact A in A)
f-4 (A::testfact B in A)
f-5 (B::testfact A in B)
f-6 (B::testfact B in B)
For a total of 7 facts.
Jess>
Can anybody tell me what I am doing wrong here?
Felix
Felix Bachmann
Carnegie Mellon
Voice: +1 (412) 268 6194
Software Engineering Institute
FAX: +1 (412) 268 5758
Pittsburgh, PA 15213
--------------------------------------------------------------------
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]
--------------------------------------------------------------------
