<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><a href="http://blog.athico.com/2013/09/pluggable-belief-systems-in-drools-60.html">http://blog.athico.com/2013/09/pluggable-belief-systems-in-drools-60.html</a><div>---</div><div><br></div><div><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">Drools has supported simple truth maintenance for a long time, and followed a similar approach as that in Jess and Clips.</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">In 6.0 we abstracted the TMS system to allow for pluggable belief systems. This allows a sub system to control what the main working memory can see; i.e. what is inserted for the user to write rules to join against.</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">There are two interfaces for this the BeliefSystem and the BeliefSet. The BeliefSystem is global to the engine and provides the handling for logical inserts or deletes. It also has a constructor method to provide the LogicalDependency instance; this allows BeliefSystem to have it's own implementation.</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><a href="https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/core/beliefsystem/BeliefSystem.java" style="text-decoration: none; color: rgb(0, 42, 119); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/core/beliefsystem/BeliefSystem.java</a><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">The BeliefSet is the set of "equals" beliefs; i.e. logical insertions. If you remember in a TMS system a belief is a one or more logical insertions; but only one will ever be visible in the system. Logical means they have a supported rule, which is tracked by a counter. Only when there are no supporters and that counter is zero, is the belief deleted. We've extended this so a logical insertion have an additional value associated with it; which becomes useful in our JTMS implementation, that I'll cover in a moment.</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">We have a "simple" implementation, that emulates what we had in 5.x, and is still the default.</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><a href="https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/core/beliefsystem/simple/SimpleBeliefSystem.java" style="text-decoration: none; color: rgb(0, 42, 119); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/core/beliefsystem/simple/SimpleBeliefSystem.java</a><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><a href="https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/core/beliefsystem/simple/SimpleBeliefSet.java" style="text-decoration: none; color: rgb(0, 42, 119); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/core/beliefsystem/simple/SimpleBeliefSet.java</a><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">We've added am experimental JTMS implementation, which allows a logical insertion to have a positive or a negative label. This allows for contradiction handling. A logical insertion will only exist in the main working memory, as long as there is no conflict in the labelling - i.e. it must be one or more positive labels, and no minus label.</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><a href="https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/core/beliefsystem/jtms/JTMSBeliefSystem.java" style="text-decoration: none; color: rgb(0, 42, 119); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/core/beliefsystem/jtms/JTMSBeliefSystem.java</a><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><a href="https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/core/beliefsystem/jtms/JTMSBeliefSetImpl.java" style="text-decoration: none; color: rgb(0, 42, 119); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/core/beliefsystem/jtms/JTMSBeliefSetImpl.java</a><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">I've covered the bus pass system before,&nbsp;</span><a href="http://blog.athico.com/2009/11/what-is-inference-and-how-does-it.html" style="text-decoration: none; color: rgb(0, 42, 119); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">here</a><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">. The code is still the same, the only difference now with the JTMS plugin is that each logical insertion defaults to a positive label.</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><div style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(146, 144, 0); letter-spacing: 0px; ">rule</span><span style="color: black; letter-spacing: 0px; ">&nbsp;</span><span style="letter-spacing: 0px; ">"IsChild"&nbsp;</span><span style="color: rgb(146, 144, 0); ">when</span><span style="letter-spacing: 0px; "><br></span><span style="letter-spacing: 0px; ">&nbsp; &nbsp; p :&nbsp;</span><span style="color: rgb(4, 51, 255); letter-spacing: 0px; ">Person</span><span style="letter-spacing: 0px; ">( age &lt; 16 )</span><span style="color: rgb(146, 144, 0); ">then</span><span style="letter-spacing: 0px; "><br></span><span style="color: black; letter-spacing: 0px; ">&nbsp; &nbsp;&nbsp;</span><span style="letter-spacing: 0px; ">logicalInsert</span><span style="color: black; letter-spacing: 0px; ">(&nbsp;</span><span style="letter-spacing: 0px; ">new</span><span style="color: black; letter-spacing: 0px; ">&nbsp;</span><span style="color: rgb(4, 51, 255); letter-spacing: 0px; ">IsChild</span><span style="color: black; letter-spacing: 0px; ">( p ) )</span><span style="color: rgb(146, 144, 0); ">end</span><span style="letter-spacing: 0px; "><br></span><span style="color: rgb(146, 144, 0); letter-spacing: 0px; ">rule</span><span style="color: black; letter-spacing: 0px; ">&nbsp;</span><span style="letter-spacing: 0px; ">"IsAdult"&nbsp;</span><span style="color: rgb(146, 144, 0); ">when</span><span style="letter-spacing: 0px; "><br></span><span style="letter-spacing: 0px; ">&nbsp; &nbsp; p :&nbsp;</span><span style="color: rgb(4, 51, 255); letter-spacing: 0px; ">Person</span><span style="letter-spacing: 0px; ">( age &gt;= 16 )</span><span style="letter-spacing: 0px; ">then</span><span style="color: black; letter-spacing: 0px; ">&nbsp; &nbsp;&nbsp;</span><span style="letter-spacing: 0px; ">logicalInsert</span><span style="color: black; letter-spacing: 0px; ">(&nbsp;</span><span style="letter-spacing: 0px; ">new</span><span style="color: black; letter-spacing: 0px; ">&nbsp;</span><span style="color: rgb(4, 51, 255); letter-spacing: 0px; ">IsAdult</span><span style="color: black; letter-spacing: 0px; ">( p ) )</span><span style="color: rgb(146, 144, 0); ">end</span></div><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><div style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "></div><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(146, 144, 0); ">rule</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp;</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">"Issue Child Bus Pass"&nbsp;</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(146, 144, 0); ">when</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp; &nbsp; p :&nbsp;</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(4, 51, 255); ">Person</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">( )</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(4, 51, 255); ">IsChild</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">( person == p )</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(146, 144, 0); ">then</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br></span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp;&nbsp;</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">logicalInsert</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">(</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">new</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp;</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(4, 51, 255); ">ChildBusPass</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">( p ) );</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(146, 144, 0); ">end</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br></span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(146, 144, 0); ">rule</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp;</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">"Issue Adult Bus Pass"&nbsp;</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(146, 144, 0); ">when</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp; &nbsp; p :&nbsp;</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(4, 51, 255); ">Person</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">()</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(4, 51, 255); ">IsAdult</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">( person == p )</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(146, 144, 0); ">then</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp;&nbsp;</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">logicalInsert</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">(</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">new</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp;</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(4, 51, 255); ">AdultBusPass</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">( p ) );</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(146, 144, 0); ">end</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><div style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br></div><div style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">In the case of someone who is a child, it results in a tree that looks like below.</div><div class="separator" style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; background-color: rgb(255, 255, 255); clear: both; text-align: center; "><a href="http://3.bp.blogspot.com/-IANlHtsK-_o/Uj8LWpbggbI/AAAAAAAAA8w/SkUFm1VJ4vE/s1600/jtms_plus.png" imageanchor="1" style="text-decoration: none; color: rgb(0, 42, 119); margin-left: 1em; margin-right: 1em; "><img border="0" height="320" width="263" style="border: none; position: relative; " id="76515a27-9dd6-416b-a0c1-4fec5bf082a6" apple-width="yes" apple-height="yes" src="cid:BA3D5607-A9B2-49F2-8C1C-CA2991B48A4E@42sls"></a></div><div style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">These are called your "default" rules. Now what happens if you want to add an exception, that contradicts the default rule. JTMS allows a negative insertion for a fact, doing this causes a conflict an the fact will be held in limbo, and not available in the working memory, until the conflict is resolved. For instance we might want an exception rule, that does not allow a bus pass to be issued to someone who is banned.</div><div style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br></div><div style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "></div><div style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(146, 144, 0); letter-spacing: 0px; ">rule</span><span style="color: black; letter-spacing: 0px; ">&nbsp;</span><span style="letter-spacing: 0px; ">"Do not issue to banned people"&nbsp;</span><span style="color: rgb(146, 144, 0); ">when</span><span style="letter-spacing: 0px; "><br></span><span style="letter-spacing: 0px; ">&nbsp; p :&nbsp;</span><span style="color: rgb(4, 51, 255); letter-spacing: 0px; ">Person</span><span style="letter-spacing: 0px; ">( )</span><span style="letter-spacing: 0px; ">&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;</span><span style="color: rgb(4, 51, 255); letter-spacing: 0px; ">Banned</span><span style="letter-spacing: 0px; ">( person == p )</span><span style="color: rgb(146, 144, 0); ">then</span><span style="letter-spacing: 0px; "><br></span><span style="letter-spacing: 0px; ">&nbsp;&nbsp;</span>logicalInsert<span style="letter-spacing: 0px; ">(&nbsp;</span><span style="color: rgb(255, 38, 0); letter-spacing: 0px; ">new</span><span style="letter-spacing: 0px; ">&nbsp;</span><span style="color: rgb(4, 51, 255); letter-spacing: 0px; ">ChildBusPass</span><span style="letter-spacing: 0px; ">( p ) , “neg” );</span><span style="color: rgb(146, 144, 0); ">end</span></div><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">If the person is banned, it results in a tree with one positive and one negative label. &nbsp;The belief system is incremental and cascading, so at any time the exception rule can become true which would result in a cascading undo operation.</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><div class="separator" style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; background-color: rgb(255, 255, 255); clear: both; text-align: center; "><a href="http://4.bp.blogspot.com/-ao5g8cR0qdE/Uj8MveblqwI/AAAAAAAAA88/uqONDIssCfA/s1600/jtms_pos_neg.png" imageanchor="1" style="text-decoration: none; color: rgb(0, 42, 119); margin-left: 1em; margin-right: 1em; "><img border="0" height="251" width="320" style="border: none; position: relative; " id="d4688077-0840-44f8-bded-f42592bca417" apple-width="yes" apple-height="yes" src="cid:51C55750-2460-4507-940C-FEDBA92CE6D5@42sls"></a></div><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">We've also added another&nbsp;experimental&nbsp;implementation for&nbsp;</span><a href="http://www.defeasible.net/" style="text-decoration: none; color: rgb(0, 42, 119); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">Defeasible logic</a><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">. Interestingly it turned out that Defeasible logic can be derived from the JTMS implementation, using the same BeliefSystem implementation but a custom BeliefSet implementation. The DefeasibleSet can be found here, clearly it is a lot more complicated than the JTMS one. We use mask operations to try and keep it optimal. We haven't added tracking for recursion yet, that is a TODO, and ideally done at compile time.</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><a href="https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/core/beliefsystem/defeasible/DefeasibleBeliefSet.java" style="text-decoration: none; color: rgb(0, 42, 119); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/core/beliefsystem/defeasible/DefeasibleBeliefSet.java</a><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">Defeasible augments the JTMS with annotations to provide declarative resolving of conflicts.</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><ul style="padding: 0px 2.5em; margin: 0.5em 0px; line-height: 20px; list-style-position: initial; list-style-image: initial; color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; text-align: left; background-color: rgb(255, 255, 255); "><li style="padding: 0px; margin: 0px 0px 0.25em; border: none; ">@Strict // rule cannot be defeated</li><li style="padding: 0px; margin: 0px 0px 0.25em; border: none; ">@Defeasible // rule can be defeated</li><li style="padding: 0px; margin: 0px 0px 0.25em; border: none; ">@Defeater // rule can defeat other rules, but it's result is not propagated into the working memory</li><li style="padding: 0px; margin: 0px 0px 0.25em; border: none; ">@Defeats // takes list of rules it defeats</li></ul><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(146, 144, 0); ">rule</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp;</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">"Do not issue to banned people"&nbsp;<span style="color: blue; ">@Defeasible</span>&nbsp;</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(146, 144, 0); ">when</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br></span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp; p :&nbsp;</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(4, 51, 255); ">Person</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">( )</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(4, 51, 255); ">Banned</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">( person == p )</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(146, 144, 0); ">then</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br></span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp;&nbsp;</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">logicalInsert</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">(</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(255, 38, 0); ">new</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp;</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(4, 51, 255); ">ChildBusPass</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">( p ) , “neg” );</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(146, 144, 0); ">end</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(146, 144, 0); "><br></span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "></span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(146, 144, 0); ">rule</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp;</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">"Exception for children with minor offences"&nbsp;<span style="color: blue; ">@Defeats</span>(</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">"Do not issue to banned people")</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp;</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(146, 144, 0); ">when</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp; p :&nbsp;</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(4, 51, 255); ">Person</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">( )</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(4, 51, 255); ">&nbsp; &nbsp; &nbsp; &nbsp;IsChild</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">( person == p )</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br></span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(4, 51, 255); ">Banned</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">( person == p, offence == "minor" )</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(146, 144, 0); ">then</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br></span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp;&nbsp;</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">logicalInsert</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">(</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(255, 38, 0); ">new</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">&nbsp;</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(4, 51, 255); ">ChildBusPass</span><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; letter-spacing: 0px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">( p ) &nbsp;);</span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); color: rgb(146, 144, 0); ">end</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">In defeasible logic the exception rule here is called a counter argument, and it is possible for another rule to rebut the counter-arguents, creating an argumentation chain, that rebuttal can also be rebutted. A good presentation on this can be found&nbsp;</span><a href="http://cs.uns.edu.ar/~grs/Publications/DeLP-ICLP-Color.pdf" style="text-decoration: none; color: rgb(0, 42, 119); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">here</a><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">.</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">We are currently working on other Belief System implementations. One is based on the&nbsp;</span><a href="http://130.203.133.150/viewdoc/summary;jsessionid=162A8F40668AEADD8607F9766BDA8296?doi=10.1.1.212.4006" style="text-decoration: none; color: rgb(0, 42, 119); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">Belief Logic Programming</a><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">idea, which uses the concepts of belief combination functions as inspired by Dempster-Shafer. This will allow each logical insertion to have a degree of belief, and the BeliefSystem will be able to process those chains of logical insertions, applying the combination functions.</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">The other idea we are working on is Bayesian network integration. The BeliefSystem can back onto a Bayesian network, which can control which facts are inserted, or not inserted, into the engine. As the data changes over time, the sub system can add or remove what the main engine sees.</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">If you find this interesting, and what to have a go at implementing your own and need some help, then don't hesitate to drop onto irc and ask:</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><a href="http://www.jboss.org/drools/irc" style="text-decoration: none; color: rgb(0, 42, 119); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">http://www.jboss.org/drools/irc</a><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><span style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">While the system is pluggable, the registration process is currently hard coded into an Enum, which you'll need to update with your implementation:</span><br style="color: rgb(51, 51, 51); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); "><a href="https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/core/BeliefSystemType.java" style="text-decoration: none; color: rgb(0, 42, 119); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/core/BeliefSystemType.java</a></div><div><br></div></body></html>