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 ?))
          (available-part (name ?n)))
   =>
  (assert (available-part (name ?a)))
)




On Jul 28, 2009, at 10:53 AM, Wolfgang Laun wrote:

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 (and (depends-on (id ?x)(name ? ?n ?))
            (not (available-part (name ?n)))))
   =>
  (assert (available-part (name ?a)))
)

-W


On Tue, Jul 28, 2009 at 2:47 PM, levent kent <[email protected]> wrote:
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" at LHS of a rule.

(defrule BuildPlanForward
    (depends-on (parent ?a) (children ?list))
    (foreach ?c ?list  (available-part (name ?c)))
    =>
    (assert (available-part (name ?a)))
    )

How could I write such a rule in Jess?

Thanks,

--
Levent Kent


---------------------------------------------------------
Ernest Friedman-Hill
Informatics & Decision Sciences          Phone: (925) 294-2154
Sandia National Labs
PO Box 969, MS 9012                            [email protected]
Livermore, CA 94550                             http://www.jessrules.com





--------------------------------------------------------------------
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].
--------------------------------------------------------------------

Reply via email to