Re: JESS: Problem with 2 same-RHS rule

"Ernest Friedman-Hill" <[email protected]> Mon, 18 Apr 2011 09:46:25 -0400
Newsgroups gmane.comp.java.jess
Message-ID <[email protected]>
Have a look at the no-loop and slot-specific declarations:

http://www.jessrules.com/jess/docs/71/rules.html#slot-specific



On Apr 17, 2011, at 7:11 AM, Vu Le wrote:

> This is a multi-part message in MIME format.
>
> ------extPart_000_0006_01CBFD2A.E94491F0
> Content-Type: text/plain;
> charset-ascii
> Content-Transfer-Encoding: 7bit
>
> My code is as follow:
>
>      (deftemplate service
>
>            (slot transport (type ATOM))
>
>            (slot radius (type NUMBER))
>
>      (slot activity (type ATOM))
>
> )
>
>
>
> (defrule rule1
>
>            (declare (salience 41))
>
>            ?s<-  (service (activity walking))
>
>               (modify ?s(radius 1000))
>
>      )
>
>
>
> (defrule rule2
>
>            (declare (salience 42))
>
>            ?s<-  (service (transport car))
>
>               (modify ?s(radius 5000))
>
> )
>
>
>
> (reset)
>
>
>
> (assert (service (transport car) (activity walking)))
>
>
>
> (run)
>
>
>
> That causes an infinite loop!
>
> My intention is to let only rule2 to be fired, not rule1. Does Jess  
> provide
> anything to fix that?
>
> Thank you.
>
>
>
>
> ------extPart_000_0006_01CBFD2A.E94491F0
> Content-Type: text/html;
> charset-ascii
> Content-Transfer-Encoding: quoted-printable
>
> <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office 
> " xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml 
> " xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP- 
> EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta  
> name=Generator content="Microsoft Word 12 (filtered  
> medium)"><style><!--
> /* Font Definitions */
> @font-face
> 	{font-family:"Cambria Math";
> 	panose-1:2 4 5 3 5 4 6 3 2 4;}
> /* Style Definitions */
> p.MsoNormal, li.MsoNormal, div.MsoNormal
> 	{margin:0cm;
> 	margin-bottom:.0001pt;
> 	font-size:11.0pt;
> 	font-family:"Arial","sans-serif";}
> a:link, span.MsoHyperlink
> 	{mso-style-priority:99;
> 	color:blue;
> 	text-decoration:underline;}
> a:visited, span.MsoHyperlinkFollowed
> 	{mso-style-priority:99;
> 	color:purple;
> 	text-decoration:underline;}
> span.EmailStyle17
> 	{mso-style-type:personal-compose;
> 	font-family:"Arial","sans-serif";
> 	color:windowtext;}
> .MsoChpDefault
> 	{mso-style-type:export-only;}
> @page WordSection1
> 	{size:612.0pt 792.0pt;
> 	margin:72.0pt 72.0pt 72.0pt 72.0pt;}
> div.WordSection1
> 	{page:WordSection1;}
> --></style><!--[if gte mso 9]><xml>
> <o:shapedefaults v:ext="edit" spidmax="1026" />
> </xml><![endif]--><!--[if gte mso 9]><xml>
> <o:shapelayout v:ext="edit">
> <o:idmap v:ext="edit" data="1" />
> </o:shapelayout></xml><![endif]--></head><body lang=VI link=blue  
> vlink=purple><div class=WordSection1><p class=MsoNormal><span  
> lang=EN-US style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>My code is as follow:<o:p></o:p></span></p><p  
> class=MsoNormal style='text-autospace:none'><span lang=EN-US  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span  
> style='font-size:10.0pt;font-family:"Courier New";color:black'>(</ 
> span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:#0018DD'>deftemplate</span><span style='font-size: 
> 10.0pt;font-family:"Courier New";color:#FF0022'> service</span><span  
> style='font-size:10.0pt;font-family:"Courier New";color:black'> </ 
> span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></ 
> o:p></span></p><p class=MsoNormal style='text-autospace:none'><span  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span lang=EN-US  
> style='fo
> nt-size:10.0pt;font-family:"Courier  
> New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </ 
> span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>(</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:#0018DD'>slot</span><span style='font- 
> size:10.0pt;font-family:"Courier New";color:#FF0022'> transport</ 
> span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:black'> (</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:#FF0022'>type ATOM</span><span  
> style='font-size:10.0pt;font-family:"Courier New";color:black'>))</ 
> span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></ 
> o:p></span></p><p class=MsoNormal style='text-autospace:none'><span  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>&nbsp;&nbsp;&nbsp; </span><span lang=EN-US  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </ 
> span><span style='font-size:10.0pt;font-family:"C
> ourier New";color:black'>(</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:#0018DD'>slot</span><span style='font- 
> size:10.0pt;font-family:"Courier New";color:#FF0022'> radius</ 
> span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:black'> (</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:#FF0022'>type NUMBER</span><span  
> style='font-size:10.0pt;font-family:"Courier New";color:black'>))</ 
> span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></ 
> o:p></span></p><p class=MsoNormal style='text-indent:36.0pt;text- 
> autospace:none'><span style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>&nbsp;&nbsp;&nbsp; </span><span lang=EN-US  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>&nbsp; </span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:black'>(</span><span style='font-size: 
> 10.0pt;font-family:"Courier New";color:#0018DD'>slot</span><span  
> style='font-size:10.0pt;font-family:"Courier
> New";color:#FF0022'> activity</span><span style='font-size: 
> 10.0pt;font-family:"Courier New";color:black'> (</span><span  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:#FF0022'>type ATOM</span><span style='font-size: 
> 10.0pt;font-family:"Courier New";color:black'>))</span><span  
> style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></ 
> span></p><p class=MsoNormal style='text-indent:36.0pt;text- 
> autospace:none'><span style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>)</span><span style='font-size:10.0pt;font- 
> family:"Courier New"'><o:p></o:p></span></p><p class=MsoNormal  
> style='text-autospace:none'><span style='font-size:10.0pt;font- 
> family:"Courier New"'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal  
> style='text-indent:36.0pt;text-autospace:none'><span style='font- 
> size:10.0pt;font-family:"Courier New";color:black'>(</span><span  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:#0018DD'>defrule</span><span style='font-size:10.0pt;font- 
> family:"Courie
> r New";color:#FF0022'> rule1</span><span style='font-size: 
> 10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><p  
> class=MsoNormal style='text-autospace:none'><span style='font-size: 
> 10.0pt;font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; </ 
> span><span lang=EN-US style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </ 
> span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>(</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:#FF0022'>declare</span><span style='font- 
> size:10.0pt;font-family:"Courier New";color:black'> (</span><span  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:#FF0022'>salience</span><span style='font-size: 
> 10.0pt;font-family:"Courier New";color:#00FF0A'> 41</span><span  
> style='font-size:10.0pt;font-family:"Courier New";color:black'>))</ 
> span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></ 
> o:p></span></p><p class=MsoNormal style='text-autospac
> e:none'><span style='font-size:10.0pt;font-family:"Courier  
> New";color:#A09900'>&nbsp;&nbsp;&nbsp; </span><span lang=EN-US  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:#A09900'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </ 
> span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:#A09900'>?s</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:#FF0022'>&lt;-</span><span style='font- 
> size:10.0pt;font-family:"Courier New";color:black'>&nbsp; (</ 
> span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:#FF0022'>service</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:black'> (</span><span style='font-size: 
> 10.0pt;font-family:"Courier New";color:#FF0022'>activity walking</ 
> span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>))</span><span style='font-size:10.0pt;font- 
> family:"Courier New"'><o:p></o:p></span></p><p class=MsoNormal  
> style='text-autospace:none'><span style='font-size:10.0pt;font- 
> family:"C
> ourier New";color:black'>&nbsp;&nbsp;&nbsp; </span><span lang=EN-US  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </ 
> span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>=</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:#FF0022'>&gt;</span><span style='font- 
> size:10.0pt;font-family:"Courier  
> New";color:black'>&nbsp;&nbsp;&nbsp; (</span><span style='font-size: 
> 10.0pt;font-family:"Courier New";color:#FF0022'>modify</span><span  
> style='font-size:10.0pt;font-family:"Courier New";color:#A09900'> ? 
> s</span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>(</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:#FF0022'>radius</span><span style='font- 
> size:10.0pt;font-family:"Courier New";color:#00FF0A'> 1000</ 
> span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>))</span><span style='font-size:10.0pt;font- 
> family:"Courier New"'><o:p></o:
> p></span></p><p class=MsoNormal style='text-autospace:none'><span  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>&nbsp;&nbsp;&nbsp; </span><span lang=EN-US  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>&nbsp; </span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:black'>)</span><span style='font-size: 
> 10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><p  
> class=MsoNormal style='text-autospace:none'><span style='font-size: 
> 10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p><p  
> class=MsoNormal style='text-indent:36.0pt;text-autospace:none'><span  
> style='font-size:10.0pt;font-family:"Courier New";color:black'>(</ 
> span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:#0018DD'>defrule</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:#FF0022'> rule2</span><span style='font- 
> size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><p  
> class=MsoNormal style='text-autospace:none'><span style='f
> ont-size:10.0pt;font-family:"Courier  
> New";color:black'>&nbsp;&nbsp;&nbsp; </span><span lang=EN-US  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </ 
> span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>(</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:#FF0022'>declare</span><span style='font- 
> size:10.0pt;font-family:"Courier New";color:black'> (</span><span  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:#FF0022'>salience</span><span style='font-size: 
> 10.0pt;font-family:"Courier New";color:#00FF0A'> 42</span><span  
> style='font-size:10.0pt;font-family:"Courier New";color:black'>))</ 
> span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></ 
> o:p></span></p><p class=MsoNormal style='text-autospace:none'><span  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:#A09900'>&nbsp;&nbsp;&nbsp; </span><span lang=EN-US  
> style='font-size:10.0pt;font-family:"Courier New";col
> or:#A09900'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span  
> style='font-size:10.0pt;font-family:"Courier New";color:#A09900'>?s</ 
> span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:#FF0022'>&lt;-</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:black'>&nbsp; (</span><span style='font- 
> size:10.0pt;font-family:"Courier New";color:#FF0022'>service</ 
> span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:black'> (</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:#FF0022'>transport car</span><span  
> style='font-size:10.0pt;font-family:"Courier New";color:black'>))</ 
> span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></ 
> o:p></span></p><p class=MsoNormal style='text-autospace:none'><span  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>&nbsp;&nbsp;&nbsp; </span><span lang=EN-US  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </sp
> an><span style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>=</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:#FF0022'>&gt;</span><span style='font- 
> size:10.0pt;font-family:"Courier  
> New";color:black'>&nbsp;&nbsp;&nbsp; (</span><span style='font-size: 
> 10.0pt;font-family:"Courier New";color:#FF0022'>modify</span><span  
> style='font-size:10.0pt;font-family:"Courier New";color:#A09900'> ? 
> s</span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>(</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:#FF0022'>radius</span><span style='font- 
> size:10.0pt;font-family:"Courier New";color:#00FF0A'> 5000</ 
> span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>))</span><span style='font-size:10.0pt;font- 
> family:"Courier New"'><o:p></o:p></span></p><p class=MsoNormal  
> style='text-indent:36.0pt;text-autospace:none'><span style='font- 
> size:10.0pt;font-family:"Courier New";color:black'>)</span><span  
> style='font-size
> :10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><p  
> class=MsoNormal style='text-autospace:none'><span style='font-size: 
> 10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p><p  
> class=MsoNormal style='text-indent:36.0pt;text-autospace:none'><span  
> style='font-size:10.0pt;font-family:"Courier New";color:black'>(</ 
> span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:#FF0022'>reset</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:black'>)</span><span style='font-size: 
> 10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><p  
> class=MsoNormal style='text-autospace:none'><span style='font-size: 
> 10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p><p  
> class=MsoNormal style='text-indent:36.0pt;text-autospace:none'><span  
> style='font-size:10.0pt;font-family:"Courier New";color:black'>(</ 
> span><span style='font-size:10.0pt;font-family:"Courier  
> New";color:#FF0022'>assert</span><span style='font-size:10.0pt;font- 
> family:"Courier New";col
> or:black'> (</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:#FF0022'>service</span><span style='font- 
> size:10.0pt;font-family:"Courier New";color:black'> (</span><span  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:#FF0022'>transport car</span><span style='font-size: 
> 10.0pt;font-family:"Courier New";color:black'>) (</span><span  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:#FF0022'>activity walking</span><span style='font-size: 
> 10.0pt;font-family:"Courier New";color:black'>)))</span><span  
> style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></ 
> span></p><p class=MsoNormal style='text-autospace:none'><span  
> style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</ 
> o:p></span></p><p class=MsoNormal style='text-indent:36.0pt;text- 
> autospace:none'><span style='font-size:10.0pt;font-family:"Courier  
> New";color:black'>(</span><span style='font-size:10.0pt;font- 
> family:"Courier New";color:#FF0022'>run</span><span style='font-size: 
> 10.0pt
> ;font-family:"Courier New";color:black'>)</span><span lang=EN-US  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:black'><o:p></o:p></span></p><p class=MsoNormal  
> style='text-indent:36.0pt;text-autospace:none'><span lang=EN-US  
> style='font-size:10.0pt;font-family:"Courier  
> New";color:black'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal  
> style='text-autospace:none'><span lang=EN-US style='font-size: 
> 10.0pt;font-family:"Courier New";color:black'>That causes an  
> infinite loop!<o:p></o:p></span></p><p class=MsoNormal style='text- 
> autospace:none'><span lang=EN-US style='font-size:10.0pt;font- 
> family:"Courier New";color:black'>My intention is to let only rule2  
> to be fired, not rule1. Does Jess provide anything to fix that? 
> <o:p></o:p></span></p><p class=MsoNormal style='text- 
> autospace:none'><span lang=EN-US style='font-size:10.0pt;font- 
> family:"Courier New";color:black'>Thank you.<o:p></o:p></span></p><p  
> class=MsoNormal><o:p>&nbsp;</o:p></p></div></body></html>
> ------extPart_000_0006_01CBFD2A.E94491F0--
>
>
>
> --------------------------------------------------------------------
> 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] 
> .
> --------------------------------------------------------------------

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