Thanks for your help. I think this solves the problem:
(defrule propagate-back
(forall (depends-on (parent ?x)(children ? ?n ?))
(available-part (name ?n)))
=
(assert (available-part (name ?x)))
)
The problem was that I did not know about the forall conditional element,
which was
On Wed, Jul 29, 2009 at 10:48 AM, levent kent thelev...@gmail.com wrote:
Thanks for your help. I think this solves the problem:
(defrule propagate-back
(forall (depends-on (parent ?x)(children ? ?n ?))
(available-part (name ?n)))
=
(assert (available-part (name ?x)))
)
This
Hi everybody,
I am doing my masters thesis and have a problem with lists.
It is actually very simple.
I want to create a rule which says:
If all subtasks of a parent task are completed, then the parent task can be
completed too.
I tried the code below, but it seems that I can not use foreach
Dear Levent,
You are using a function (foreach) at the LHS of a rule. See
http://www.jessrules.com/FAQ.shtml#Q17 for an explanation on why this is
not good practice.
Try putting the foreach loop on the RHS of the rule, and most likely
things will work as expected.
(defrule BuildPlanForward
It would be easier to detect a depends-on where the available-part would be
missing for one of its name list elements.
As it stands now, you'll need an identifier for depends-on so that the
binding into the not (via ?x) is possible.
(defrule every-subtask
(depends-on (id ?x)(parent ?a))
(not
I would do that. But the problem is I want to test if [there exists a fact
of the form (available-part (name X)) for all X inside the list].
That's why the solution you offered would not work, since I just want to
test instead of adding new facts.
Thanks for your response and I hope I could
This is the right solution; it could be simplified a little using the
forall conditional element, which would make this closer to the
spirit of the Levent's original:
(defrule every-subtask
(depends-on (id ?x)(parent ?a))
(forall (depends-on (id ?x)(name ? ?n ?))
Thanks again, but I didn't get it. I don't have any slot named id or
name.
Idefined my templates as follows.
(deftemplate depends-on (slot parent) (multislot children))
(deftemplate available-part (slot name))
Here, depends-on relation specifies which parent task depends on the subtaks
given in
Sorry, where I have name in depends-on, that was meant to be your slot
children.
As for the id slot I added: I don't think it can be done without. It just
should be a unique identifier.
It serves the same or similar purpose in Ernest's solution, to freeze the
forall iteration to the children list
I think you can replace all occurrences of id with parent,
removing the redundant parent reference in the first fact.
On Jul 28, 2009, at 1:35 PM, Wolfgang Laun wrote:
Sorry, where I have name in depends-on, that was meant to be your
slot children.
As for the id slot I added: I don't
10 matches
Mail list logo