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 the multislot named "children". To complete a "parent task", one should first complete the subtasks. I a task ?x is to be completed, the system adds (available-part (name ?x)) to the working memory. So, I need to check if all subtasks of a parent task ?p are "available-part" or not to insert (availabl-part (name ?p)) to WM. I hope it is not difficult ot rewrite your query. Thanks On Tue, Jul 28, 2009 at 5:16 PM, Ernest Friedman-Hill <[email protected]>wrote: > 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]. > -------------------------------------------------------------------- > > -- Levent Kent
