On Sep 30, 2009, at 9:16 PM, Lucia Masola wrote:
Hi, I found some trouble trying to write a rule. I have the
following templates:
(Call (caller_id )(callee_id )) // defines a call between two
methods
( Method (id )(class_id )) // defines a method and the class where
it belongs
(redirectMethod (caller_method )(caller_class )(calleeMethod ?
MetodoLlamado) (calleeClass ))
What i have to do is assert the redirectMethod only in case where I
have a call between two methods(m1->m2) and no other method in the
caller class calls the m2 method. i do not know how to check the
second part, ( no other method in the class make the same call). if
anyone can help me with this I will appreciate it. I tried to use
exists but I could make it work.
// There is a call between two methods
(Call (caller_id ?m1) (callee_id ?m2))
// This is the caller method
(Method (id ?m1) (class_id ?c))
// It's not true that there's a method that's distinct from ?m1 in
class ?c
// that calls ?m2
(not (and (Method (id ?id3&~?id1) (class_id ?c))
(Call (caller_id ?id3) (callee_id ?m2))))
=> ...
Thanks a lot!
---------------------------------------------------------
Ernest Friedman-Hill
Informatics & Decision Sciences, Sandia National Laboratories
PO Box 969, MS 9012, 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].
--------------------------------------------------------------------