[jboss-svn-commits] JBL Code SVN: r30433 - in labs/jbossrules/trunk/drools-verifier/src: main/java/org/drools/verifier/components and 19 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Dec 2 06:16:00 EST 2009


Author: Rikkola
Date: 2009-12-02 06:15:59 -0500 (Wed, 02 Dec 2009)
New Revision: 30433

Added:
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Source.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierEntryPointDescr.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/WorkingMemory.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Warnings.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Redundancy.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Consequences.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubPatterns.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubRules.drl
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundancyTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubPatternsTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubRulesTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/equivalence/
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/equivalence/EquivalentRules.drl
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/misc/
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/misc/SubPattern.drl
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/redundancy/RedundantRestrictions.drl
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/redundancy/RedundantRules1.drl
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction1.drl
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction2.drl
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction3.drl
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns1.drl
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns2.drl
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns3.drl
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns4.drl
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns5.drl
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubRules1.drl
Removed:
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/RedundancyType.java
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Rules.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Consequence.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Patterns.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Possibilities.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Restrictions.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Rules.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Possibilities.drl
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundancyTestBase.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantConsequencesTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantPossibilitiesTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantRestrictionsTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantRulesAndPatternsTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantPossibilitiesTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptionTestBase.java
Modified:
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Consequence.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Pattern.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Possibility.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubPattern.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubRule.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierAccumulateDescr.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierCollectDescr.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierComponentType.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierFromDescr.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierRule.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierData.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataMaps.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/RuleLoader.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Cause.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/CauseType.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MessageType.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Redundancy.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/solver/Solvers.java
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Notes.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Warnings.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/SolversTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityPatternsTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/PackageDescrVisitorTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositePatternsTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/NotesTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/WarningsTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantRestrictionsTest.java
Log:
JBRULES-2359 : Better testing for subsumption, equal rules and redundancy -Also cleaned some of the codes

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -27,12 +27,13 @@
  * 
  * @author Toni Rikkola
  */
-class VerifierImpl
+public class VerifierImpl
     implements
     Verifier {
 
     private KnowledgeBase               verifierKnowledgeBase;
     private StatefulKnowledgeSession    ksession;
+
     private final VerifierConfiguration conf;
 
     private List<VerifierError>         errors = new ArrayList<VerifierError>();
@@ -47,6 +48,10 @@
         this.conf = new DefaultVerifierConfiguration();
     }
 
+    public StatefulKnowledgeSession getKnowledgeSession() {
+        return ksession;
+    }
+
     /*
      * (non-Javadoc)
      * 

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Consequence.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Consequence.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Consequence.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -9,13 +9,19 @@
     public static class ConsequenceType {
         public static final ConsequenceType TEXT = new ConsequenceType( "TEXT" );
 
-        protected String                    type;
+        public String                       type;
 
         public ConsequenceType(String t) {
             type = t;
         }
+
+        public String toString() {
+            return type;
+        }
     }
 
+    public String getGuid();
+
     public ConsequenceType getConsequenceType();
 
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Pattern.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Pattern.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Pattern.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -15,7 +15,7 @@
 
     private String                objectTypeGuid;
     private String                name;
-    private VerifierComponentType sourceType       = VerifierComponentType.UNKNOWN;
+    private VerifierComponentType sourceType;
     private String                sourceGuid;
 
     private boolean               isPatternNot     = false;

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Possibility.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Possibility.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Possibility.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -12,7 +12,7 @@
     extends
     Cause {
 
-    public Set<Cause> getItems();
+    public Set<? extends RuleComponent> getItems();
 
     public int getAmountOfItems();
 }

Added: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Source.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Source.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Source.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,36 @@
+package org.drools.verifier.components;
+
+import org.drools.verifier.data.VerifierComponent;
+
+public abstract class Source extends VerifierComponent
+    implements
+    ChildComponent {
+
+    private VerifierComponentType parentType;
+    private String                parentGuid;
+    private int                   orderNumber = 0;
+
+    public VerifierComponentType getParentType() {
+        return parentType;
+    }
+
+    public String getParentGuid() {
+        return parentGuid;
+    }
+
+    public int getOrderNumber() {
+        return orderNumber;
+    }
+
+    public void setParentType(VerifierComponentType parentType) {
+        this.parentType = parentType;
+    }
+
+    public void setParentGuid(String parentGuid) {
+        this.parentGuid = parentGuid;
+    }
+
+    public void setOrderNumber(int orderNumber) {
+        this.orderNumber = orderNumber;
+    }
+}

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubPattern.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubPattern.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubPattern.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -3,7 +3,6 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.drools.verifier.report.components.Cause;
 import org.drools.verifier.report.components.CauseType;
 
 /**
@@ -16,15 +15,53 @@
 public class SubPattern extends PatternComponent
     implements
     Possibility {
-    private static final long serialVersionUID = 8871361928380977116L;
+    private static final long     serialVersionUID = 8871361928380977116L;
 
-    private Set<Cause>        items            = new HashSet<Cause>();
+    private Pattern               pattern;
 
+    private Set<PatternComponent> items            = new HashSet<PatternComponent>();
+
+    public String getSourceGuid() {
+        return pattern.getSourceGuid();
+    }
+
+    public VerifierComponentType getSourceType() {
+        return pattern.getSourceType();
+    }
+
+    public String getName() {
+        return pattern.getName();
+    }
+
+    public String getObjectTypeGuid() {
+        return pattern.getObjectTypeGuid();
+    }
+
+    public boolean isPatternNot() {
+        return pattern.isPatternNot();
+    }
+
+    public boolean isPatternExists() {
+        return pattern.isPatternExists();
+    }
+
+    public boolean isPatternForall() {
+        return pattern.isPatternForall();
+    }
+
     public CauseType getCauseType() {
-        return CauseType.PATTERN_POSSIBILITY;
+        return CauseType.SUB_PATTERN;
     }
 
-    public Set<Cause> getItems() {
+    public void setPattern(Pattern pattern) {
+        this.pattern = pattern;
+    }
+
+    public Pattern getPattern() {
+        return pattern;
+    }
+
+    public Set<PatternComponent> getItems() {
         return items;
     }
 
@@ -42,7 +79,7 @@
     }
 
     public VerifierComponentType getVerifierComponentType() {
-        return VerifierComponentType.PATTERN_POSSIBILITY;
+        return VerifierComponentType.SUB_PATTERN;
     }
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubRule.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubRule.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubRule.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -2,9 +2,10 @@
 
 import java.io.Serializable;
 import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 
-import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.components.Consequence.ConsequenceType;
 import org.drools.verifier.report.components.CauseType;
 
 /**
@@ -18,15 +19,17 @@
     implements
     Serializable,
     Possibility {
-    private static final long serialVersionUID = 8871361928380977116L;
+    private static final long  serialVersionUID = 8871361928380977116L;
 
-    private Set<Cause>        items            = new HashSet<Cause>();
+    private Set<RuleComponent> items            = new HashSet<RuleComponent>();
 
+    private VerifierRule       rule;
+
     public CauseType getCauseType() {
-        return CauseType.RULE_POSSIBILITY;
+        return CauseType.SUB_RULE;
     }
 
-    public Set<Cause> getItems() {
+    public Set<RuleComponent> getItems() {
         return items;
     }
 
@@ -38,12 +41,32 @@
         items.add( patternPossibility );
     }
 
+    public void setRule(VerifierRule rule) {
+        this.rule = rule;
+    }
+
+    public VerifierRule getRule() {
+        return rule;
+    }
+
+    public String getConsequenceGuid() {
+        return rule.getConsequenceGuid();
+    }
+
+    public ConsequenceType getConsequenceType() {
+        return rule.getConsequenceType();
+    }
+
+    public Map<String, String> getAttributes() {
+        return rule.getAttributes();
+    }
+
     @Override
     public String toString() {
         return "RulePossibility from rule: " + getRuleName() + ", amount of items:" + items.size();
     }
 
     public VerifierComponentType getVerifierComponentType() {
-        return VerifierComponentType.RULE_POSSIBILITY;
+        return VerifierComponentType.SUB_RULE;
     }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierAccumulateDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierAccumulateDescr.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierAccumulateDescr.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -4,7 +4,7 @@
  * 
  * @author Toni Rikkola
  */
-public class VerifierAccumulateDescr extends PatternComponent {
+public class VerifierAccumulateDescr extends Source {
 
     private String   inputPatternGuid;
     private String   initCode;

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierCollectDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierCollectDescr.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierCollectDescr.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -4,7 +4,7 @@
  * 
  * @author Toni Rikkola
  */
-public class VerifierCollectDescr extends RuleComponent {
+public class VerifierCollectDescr extends Source {
 
     private String insidePatternGuid;
     private String classMethodName;

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierComponentType.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierComponentType.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierComponentType.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -13,8 +13,8 @@
     public static final VerifierComponentType CONSTRAINT               = new VerifierComponentType( "CONSTRAINT" );
     public static final VerifierComponentType VARIABLE                 = new VerifierComponentType( "VARIABLE" );
     public static final VerifierComponentType PATTERN                  = new VerifierComponentType( "PATTERN" );
-    public static final VerifierComponentType PATTERN_POSSIBILITY      = new VerifierComponentType( "PATTERN_POSSIBILITY" );
-    public static final VerifierComponentType RULE_POSSIBILITY         = new VerifierComponentType( "RULE_POSSIBILITY" );
+    public static final VerifierComponentType SUB_PATTERN              = new VerifierComponentType( "SUB_PATTERN" );
+    public static final VerifierComponentType SUB_RULE                 = new VerifierComponentType( "SUB_RULE" );
     public static final VerifierComponentType RESTRICTION              = new VerifierComponentType( "RESTRICTION" );
     public static final VerifierComponentType OPERATOR                 = new VerifierComponentType( "OPERATOR" );
     public static final VerifierComponentType FIELD_OBJECT_TYPE_LINK   = new VerifierComponentType( "FIELD_CLASS_LINK" );
@@ -32,6 +32,8 @@
     public static final VerifierComponentType OBJECT_TYPE              = new VerifierComponentType( "OBJECT_TYPE" );
     public static final VerifierComponentType INLINE_EVAL_DESCR        = new VerifierComponentType( "INLINE_EVAL_DESCR" );
     public static final VerifierComponentType RETURN_VALUE_FIELD_DESCR = new VerifierComponentType( "RETURN_VALUE_FIELD_DESCR" );
+    public static final VerifierComponentType ENTRY_POINT_DESCR        = new VerifierComponentType( "ENTRY_POINT_DESCR" );
+    public static final VerifierComponentType WORKING_MEMORY           = new VerifierComponentType( "WORKING_MEMORY" );
 
     private final String                      type;
 

Added: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierEntryPointDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierEntryPointDescr.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierEntryPointDescr.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,19 @@
+package org.drools.verifier.components;
+
+
+public class VerifierEntryPointDescr extends Source {
+
+    private String entryId;
+
+    public VerifierComponentType getVerifierComponentType() {
+        return VerifierComponentType.ENTRY_POINT_DESCR;
+    }
+
+    public void setEntryId(String entryId) {
+        this.entryId = entryId;
+    }
+
+    public String getEntryId() {
+        return entryId;
+    }
+}

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierFromDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierFromDescr.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierFromDescr.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -4,7 +4,7 @@
  * 
  * @author Toni Rikkola
  */
-public class VerifierFromDescr extends RuleComponent {
+public class VerifierFromDescr extends Source {
 
     private VerifierComponentType dataSourceType;
     private String                dataSourceGuid;

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierRule.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierRule.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierRule.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,5 +1,9 @@
 package org.drools.verifier.components;
 
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.verifier.components.Consequence.ConsequenceType;
 import org.drools.verifier.report.components.Cause;
 import org.drools.verifier.report.components.CauseType;
 
@@ -11,39 +15,40 @@
     implements
     Cause {
 
-    private String      ruleSalience;
-    private String      ruleAgendaGroup;
-    private Consequence consequence;
-    private int         lineNumber;
+    private Map<String, String> attributes = new HashMap<String, String>();
 
-    private int         packageId;
+    private String              consequenceGuid;
+    private ConsequenceType     consequenceType;
+    private int                 lineNumber;
 
+    private int                 packageId;
+
     public CauseType getCauseType() {
         return CauseType.RULE;
     }
 
-    public String getRuleAgendaGroup() {
-        return ruleAgendaGroup;
+    public void setAttributes(Map<String, String> attributes) {
+        this.attributes = attributes;
     }
 
-    public void setRuleAgendaGroup(String agendaGroup) {
-        this.ruleAgendaGroup = agendaGroup;
+    public Map<String, String> getAttributes() {
+        return attributes;
     }
 
-    public String getRuleSalience() {
-        return ruleSalience;
+    public String getConsequenceGuid() {
+        return consequenceGuid;
     }
 
-    public void setRuleSalience(String salience) {
-        this.ruleSalience = salience;
+    public void setConsequenceGuid(String consequenceGuid) {
+        this.consequenceGuid = consequenceGuid;
     }
 
-    public Consequence getConsequence() {
-        return consequence;
+    public ConsequenceType getConsequenceType() {
+        return consequenceType;
     }
 
-    public void setConsequence(Consequence consequence) {
-        this.consequence = consequence;
+    public void setConsequenceType(ConsequenceType consequenceType) {
+        this.consequenceType = consequenceType;
     }
 
     public int getLineNumber() {

Added: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/WorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/WorkingMemory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/WorkingMemory.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,9 @@
+package org.drools.verifier.components;
+
+public class WorkingMemory extends Source {
+
+    public VerifierComponentType getVerifierComponentType() {
+        return VerifierComponentType.WORKING_MEMORY;
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierData.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierData.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierData.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -8,6 +8,7 @@
 import org.drools.verifier.components.RulePackage;
 import org.drools.verifier.components.Variable;
 import org.drools.verifier.components.VerifierComponentType;
+import org.drools.verifier.components.VerifierEntryPointDescr;
 import org.drools.verifier.components.VerifierRule;
 
 /**
@@ -43,4 +44,6 @@
 
     public Collection<ObjectType> getObjectTypesByRuleName(String ruleName);
 
+    public VerifierEntryPointDescr getEntryPointByEntryId(String entryId);
+
 }

Added: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,132 @@
+package org.drools.verifier.data;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+import javax.net.ssl.KeyStoreBuilderParameters;
+
+import org.drools.ClassObjectFilter;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.definition.KnowledgePackage;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.verifier.components.Field;
+import org.drools.verifier.components.FieldObjectTypeLink;
+import org.drools.verifier.components.ObjectType;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.Restriction;
+import org.drools.verifier.components.RulePackage;
+import org.drools.verifier.components.Variable;
+import org.drools.verifier.components.VerifierComponentType;
+import org.drools.verifier.components.VerifierEntryPointDescr;
+import org.drools.verifier.components.VerifierRule;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+class VerifierDataKnowledgeSession
+    implements
+    VerifierData {
+
+    private final KnowledgeBuilder         kbuilder;
+    private final StatefulKnowledgeSession kSession;
+
+    public VerifierDataKnowledgeSession() {
+        this.kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+        // TODO: Add queries
+
+        if ( kbuilder.hasErrors() ) {
+            throw new RuntimeException( "Unable to compile queries." );
+        }
+
+        Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
+
+        final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( pkgs );
+
+        this.kSession = kbase.newStatefulKnowledgeSession();
+    }
+
+    public Collection<ObjectType> getObjectTypesByRuleName(String ruleName) {
+        Collection<Object> list = kSession.getObjects( new ClassObjectFilter( Integer.class ) );
+        return new ArrayList( list );
+    }
+
+    public ObjectType getObjectTypeByName(String name) {
+        return null;
+    }
+
+    public Field getFieldByObjectTypeAndFieldName(String objectTypeName,
+                                                  String fieldName) {
+        return null;
+    }
+
+    public Variable getVariableByRuleAndVariableName(String ruleName,
+                                                     String variableName) {
+        return null;
+    }
+
+    public FieldObjectTypeLink getFieldObjectTypeLink(int id,
+                                                      int id2) {
+        return null;
+    }
+
+    public Collection<VerifierComponent> getAll() {
+        Collection<Object> list = kSession.getObjects();
+
+        return new ArrayList( list );
+    }
+
+    public Collection<Field> getFieldsByObjectTypeId(String id) {
+        return null;
+    }
+
+    public Collection<VerifierRule> getRulesByObjectTypeId(String id) {
+        return null;
+    }
+
+    public Collection<VerifierRule> getRulesByFieldId(String id) {
+        return null;
+    }
+
+    public RulePackage getPackageByName(String name) {
+        return null;
+    }
+
+    public Collection<Restriction> getRestrictionsByFieldGuid(String id) {
+        return null;
+    }
+
+    public void add(VerifierComponent object) {
+        kSession.insert( object );
+    }
+
+    //    public <T extends VerifierComponent> Collection<T> getAll(VerifierComponentType type) {
+    public Collection< ? extends VerifierComponent> getAll(VerifierComponentType type) {
+        return null;
+    }
+
+    //    public <T extends VerifierComponent> T getVerifierObject(VerifierComponentType type,
+    //                                                             String guid) {
+    public VerifierComponent getVerifierObject(VerifierComponentType type,
+                                               String guid) {
+        return null;
+    }
+
+    public VerifierEntryPointDescr getEntryPointByEntryId(String entryId) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataMaps.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataMaps.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataMaps.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -16,6 +16,7 @@
 import org.drools.verifier.components.RulePackage;
 import org.drools.verifier.components.Variable;
 import org.drools.verifier.components.VerifierComponentType;
+import org.drools.verifier.components.VerifierEntryPointDescr;
 import org.drools.verifier.components.VerifierRule;
 
 /**
@@ -37,6 +38,7 @@
     private DataTree<String, Pattern>                                  patternsByRuleName             = new DataTree<String, Pattern>();
     private DataTree<String, Restriction>                              restrictionsByFieldId          = new DataTree<String, Restriction>();
     private Map<String, Variable>                                      variablesByRuleAndVariableName = new TreeMap<String, Variable>();
+    private Map<String, VerifierEntryPointDescr>                       entryPointsByEntryId           = new TreeMap<String, VerifierEntryPointDescr>();
 
     public Collection<ObjectType> getObjectTypesByRuleName(String ruleName) {
         Set<ObjectType> set = new HashSet<ObjectType>();
@@ -155,6 +157,10 @@
             ObjectType objectType = (ObjectType) object;
             objectTypesByName.put( objectType.getName(),
                                    objectType );
+        } else if ( VerifierComponentType.ENTRY_POINT_DESCR.equals( object.getVerifierComponentType() ) ) {
+            VerifierEntryPointDescr entryPoint = (VerifierEntryPointDescr) object;
+            entryPointsByEntryId.put( entryPoint.getEntryId(),
+                                      entryPoint );
         }
 
         Map<String, VerifierComponent> map = all.get( object.getVerifierComponentType() );
@@ -181,4 +187,9 @@
                                                String guid) {
         return all.get( type ).get( guid );
     }
+
+    public VerifierEntryPointDescr getEntryPointByEntryId(String entryId) {
+        return entryPointsByEntryId.get( entryId );
+    }
+
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -6,10 +6,12 @@
 import org.drools.lang.descr.AccessorDescr;
 import org.drools.lang.descr.AccumulateDescr;
 import org.drools.lang.descr.AndDescr;
+import org.drools.lang.descr.AttributeDescr;
 import org.drools.lang.descr.BaseDescr;
 import org.drools.lang.descr.CollectDescr;
 import org.drools.lang.descr.ConditionalElementDescr;
 import org.drools.lang.descr.DeclarativeInvokerDescr;
+import org.drools.lang.descr.EntryPointDescr;
 import org.drools.lang.descr.EvalDescr;
 import org.drools.lang.descr.ExistsDescr;
 import org.drools.lang.descr.FieldAccessDescr;
@@ -40,10 +42,11 @@
 import org.drools.verifier.components.ObjectType;
 import org.drools.verifier.components.OperatorDescr;
 import org.drools.verifier.components.Pattern;
-import org.drools.verifier.components.SubPattern;
 import org.drools.verifier.components.QualifiedIdentifierRestriction;
 import org.drools.verifier.components.ReturnValueRestriction;
 import org.drools.verifier.components.RulePackage;
+import org.drools.verifier.components.Source;
+import org.drools.verifier.components.SubPattern;
 import org.drools.verifier.components.SubRule;
 import org.drools.verifier.components.TextConsequence;
 import org.drools.verifier.components.Variable;
@@ -52,6 +55,7 @@
 import org.drools.verifier.components.VerifierAccumulateDescr;
 import org.drools.verifier.components.VerifierCollectDescr;
 import org.drools.verifier.components.VerifierComponentType;
+import org.drools.verifier.components.VerifierEntryPointDescr;
 import org.drools.verifier.components.VerifierEvalDescr;
 import org.drools.verifier.components.VerifierFieldAccessDescr;
 import org.drools.verifier.components.VerifierFromDescr;
@@ -59,6 +63,7 @@
 import org.drools.verifier.components.VerifierMethodAccessDescr;
 import org.drools.verifier.components.VerifierPredicateDescr;
 import org.drools.verifier.components.VerifierRule;
+import org.drools.verifier.components.WorkingMemory;
 import org.drools.verifier.data.VerifierComponent;
 import org.drools.verifier.data.VerifierData;
 import org.drools.verifier.solver.Solvers;
@@ -69,17 +74,19 @@
  */
 public class PackageDescrVisitor {
 
-    private Solvers      solvers           = new Solvers();
+    private Solvers       solvers           = new Solvers();
 
-    private VerifierData data;
+    private VerifierData  data;
 
-    private RulePackage  currentPackage    = null;
-    private VerifierRule currentRule       = null;
-    private Pattern      currentPattern    = null;
-    private Constraint   currentConstraint = null;
-    private ObjectType   currentObjectType = null;
-    private Field        currentField      = null;
+    private RulePackage   currentPackage    = null;
+    private VerifierRule  currentRule       = null;
+    private Pattern       currentPattern    = null;
+    private Constraint    currentConstraint = null;
+    private ObjectType    currentObjectType = null;
+    private Field         currentField      = null;
 
+    private WorkingMemory workingMemory     = null;
+
     /**
      * Adds packageDescr to given VerifierData object
      * 
@@ -176,14 +183,17 @@
         }
     }
 
-    private VerifierComponent visit(PatternSourceDescr descr,
-                                    VerifierComponent parent) throws UnknownDescriptionException {
+    private Source visit(PatternSourceDescr descr,
+                         VerifierComponent parent) throws UnknownDescriptionException {
         if ( descr instanceof AccumulateDescr ) {
             return visit( (AccumulateDescr) descr,
                           parent );
         } else if ( descr instanceof CollectDescr ) {
             return visit( (CollectDescr) descr,
                           parent );
+        } else if ( descr instanceof EntryPointDescr ) {
+            return visit( (EntryPointDescr) descr,
+                          parent );
         } else if ( descr instanceof FromDescr ) {
             return visit( (FromDescr) descr,
                           parent );
@@ -196,16 +206,20 @@
                                     VerifierComponent parent) throws UnknownDescriptionException {
         if ( descr instanceof AccessorDescr ) {
             return visit( (AccessorDescr) descr,
-                          parent );
+                          parent,
+                          0 );
         } else if ( descr instanceof FieldAccessDescr ) {
             return visit( (FieldAccessDescr) descr,
-                          parent );
+                          parent,
+                          0 );
         } else if ( descr instanceof FunctionCallDescr ) {
             return visit( (FunctionCallDescr) descr,
-                          parent );
+                          parent,
+                          0 );
         } else if ( descr instanceof MethodAccessDescr ) {
             return visit( (MethodAccessDescr) descr,
-                          parent );
+                          parent,
+                          0 );
         } else {
             throw new UnknownDescriptionException( descr );
         }
@@ -348,16 +362,48 @@
                                     VerifierComponent parent) throws UnknownDescriptionException {
         VerifierFromDescr from = new VerifierFromDescr();
 
-        VerifierComponent ds = visit( descr.getDataSource(),
-                                      from );
+        VerifierComponent ds = null;
+
+        if ( descr.getDataSource() instanceof AccessorDescr ) {
+            ds = visit( (AccessorDescr) descr.getDataSource(),
+                        parent );
+        } else if ( descr.getDataSource() instanceof FieldAccessDescr ) {
+            ds = visit( (FieldAccessDescr) descr.getDataSource(),
+                        parent );
+        } else if ( descr.getDataSource() instanceof FunctionCallDescr ) {
+            ds = visit( (FunctionCallDescr) descr.getDataSource(),
+                        parent );
+        } else if ( descr.getDataSource() instanceof MethodAccessDescr ) {
+            ds = visit( (MethodAccessDescr) descr.getDataSource(),
+                        parent );
+        }
+
         from.setDataSourceGuid( ds.getGuid() );
         from.setDataSourceType( ds.getVerifierComponentType() );
         from.setParentGuid( parent.getGuid() );
         from.setParentType( parent.getVerifierComponentType() );
 
+        data.add( from );
+
         return from;
     }
 
+    private VerifierEntryPointDescr visit(EntryPointDescr descr,
+                                          VerifierComponent parent) throws UnknownDescriptionException {
+        // Check if already exists
+        VerifierEntryPointDescr entryPoint = data.getEntryPointByEntryId( descr.getEntryId() );
+
+        if ( entryPoint == null ) {
+            entryPoint = new VerifierEntryPointDescr();
+
+            entryPoint.setEntryId( descr.getEntryId() );
+
+            data.add( entryPoint );
+        }
+
+        return entryPoint;
+    }
+
     private VerifierAccumulateDescr visit(AccumulateDescr descr,
                                           VerifierComponent parent) throws UnknownDescriptionException {
         VerifierAccumulateDescr accumulate = new VerifierAccumulateDescr();
@@ -380,6 +426,8 @@
         accumulate.setParentGuid( parent.getGuid() );
         accumulate.setParentType( parent.getVerifierComponentType() );
 
+        data.add( accumulate );
+
         return accumulate;
     }
 
@@ -393,6 +441,8 @@
         collect.setParentGuid( parent.getGuid() );
         collect.setParentType( parent.getVerifierComponentType() );
 
+        data.add( collect );
+
         return collect;
     }
 
@@ -404,6 +454,9 @@
         accessor.setParentGuid( parent.getGuid() );
         accessor.setParentType( parent.getVerifierComponentType() );
         // TODO: I wonder what this descr does.
+
+        data.add( accessor );
+
         return accessor;
     }
 
@@ -422,6 +475,8 @@
         accessor.setParentGuid( parent.getGuid() );
         accessor.setParentType( parent.getVerifierComponentType() );
 
+        data.add( accessor );
+
         return accessor;
     }
 
@@ -440,6 +495,8 @@
         accessor.setParentGuid( parent.getGuid() );
         accessor.setParentType( parent.getVerifierComponentType() );
 
+        data.add( accessor );
+
         return accessor;
     }
 
@@ -466,9 +523,16 @@
         currentRule = rule;
 
         rule.setRuleName( descr.getName() );
-        rule.setRuleSalience( descr.getSalience() );
-        rule.setConsequence( visitConsequence( rule,
-                                               descr.getConsequence() ) );
+
+        for ( AttributeDescr attribute : descr.getAttributes().values() ) {
+            rule.getAttributes().put( attribute.getName(),
+                                      attribute.getValue() );
+        }
+
+        Consequence consequence = visitConsequence( rule,
+                                                    descr.getConsequence() );
+        rule.setConsequenceGuid( consequence.getGuid() );
+        rule.setConsequenceType( consequence.getConsequenceType() );
         rule.setLineNumber( descr.getLine() );
         rule.setPackageGuid( currentPackage.getGuid() );
         rule.setParentGuid( parent.getGuid() );
@@ -605,16 +669,21 @@
             data.add( variable );
         }
 
+        Source source;
         // visit source.
         if ( descr.getSource() != null ) {
-            VerifierComponent source = visit( descr.getSource(),
-                                              pattern );
-            pattern.setSourceGuid( source.getGuid() );
-            pattern.setSourceType( source.getVerifierComponentType() );
+            source = visit( descr.getSource(),
+                            pattern );
         } else {
-            pattern.setSourceGuid( null );
-            pattern.setSourceType( VerifierComponentType.UNKNOWN );
+            if ( workingMemory == null ) {
+                workingMemory = new WorkingMemory();
+                data.add( workingMemory );
+            }
+            source = workingMemory;
         }
+        pattern.setSourceGuid( source.getGuid() );
+        pattern.setSourceType( source.getVerifierComponentType() );
+
         solvers.startPatternSolver( pattern );
         visit( descr.getConstraint(),
                pattern,
@@ -916,11 +985,22 @@
 
     private void formPossibilities() {
 
-        for ( SubPattern possibility : solvers.getPatternPossibilities() ) {
-            data.add( possibility );
+        for ( SubPattern subPattern : solvers.getPatternPossibilities() ) {
+            Pattern pattern = data.getVerifierObject( VerifierComponentType.PATTERN,
+                                                      subPattern.getPatternGuid() );
+
+            subPattern.setPattern( pattern );
+
+            data.add( subPattern );
         }
-        for ( SubRule possibility : solvers.getRulePossibilities() ) {
-            data.add( possibility );
+
+        for ( SubRule subRule : solvers.getRulePossibilities() ) {
+            VerifierRule rule = data.getVerifierObject( VerifierComponentType.RULE,
+                                                        subRule.getRuleGuid() );
+
+            subRule.setRule( rule );
+
+            data.add( subRule );
         }
     }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/RuleLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/RuleLoader.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/RuleLoader.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -54,10 +54,6 @@
         resources.put( ResourceFactory.newClassPathResource( "alwaysFalse/Patterns.drl",
                                                              Verifier.class ),
                        ResourceType.DRL );
-        // Equivalence
-        resources.put( ResourceFactory.newClassPathResource( "equivalence/Rules.drl",
-                                                             Verifier.class ),
-                       ResourceType.DRL );
         // Incoherence
         resources.put( ResourceFactory.newClassPathResource( "incoherence/Patterns.drl",
                                                              Verifier.class ),
@@ -98,6 +94,9 @@
         resources.put( ResourceFactory.newClassPathResource( "overlaps/Restrictions.drl",
                                                              Verifier.class ),
                        ResourceType.DRL );
+        resources.put( ResourceFactory.newClassPathResource( "overlaps/Restrictions.drl",
+                                                             Verifier.class ),
+                       ResourceType.DRL );
         // Range checks
         resources.put( ResourceFactory.newClassPathResource( "rangeChecks/Clean.drl",
                                                              Verifier.class ),
@@ -111,30 +110,19 @@
         resources.put( ResourceFactory.newClassPathResource( "rangeChecks/Integers.drl",
                                                              Verifier.class ),
                        ResourceType.DRL );
-        ResourceFactory.newClassPathResource( "rangeChecks/NumberPatterns.drl",
-                                              Verifier.class );
-        ResourceFactory.newClassPathResource( "rangeChecks/Variables.drl",
-                                              Verifier.class );
+//        resources.put( ResourceFactory.newClassPathResource( "rangeChecks/NumberPatterns.drl",
+//                                                             Verifier.class ),
+//                       ResourceType.DRL );
+//        resources.put( ResourceFactory.newClassPathResource( "rangeChecks/Variables.drl",
+//                                                             Verifier.class ),
+//                       ResourceType.DRL );
         //         Redundancy
-        resources.put( ResourceFactory.newClassPathResource( "redundancy/Consequence.drl",
+        resources.put( ResourceFactory.newClassPathResource( "redundancy/Redundancy.drl",
                                                              Verifier.class ),
                        ResourceType.DRL );
         resources.put( ResourceFactory.newClassPathResource( "redundancy/Notes.drl",
                                                              Verifier.class ),
                        ResourceType.DRL );
-        resources.put( ResourceFactory.newClassPathResource( "redundancy/Patterns.drl",
-                                                             Verifier.class ),
-                       ResourceType.DRL );
-        resources.put( ResourceFactory.newClassPathResource( "redundancy/Possibilities.drl",
-                                                             Verifier.class ),
-                       ResourceType.DRL );
-
-        resources.put( ResourceFactory.newClassPathResource( "redundancy/Restrictions.drl",
-                                                             Verifier.class ),
-                       ResourceType.DRL );
-        resources.put( ResourceFactory.newClassPathResource( "redundancy/Rules.drl",
-                                                             Verifier.class ),
-                       ResourceType.DRL );
         resources.put( ResourceFactory.newClassPathResource( "redundancy/Warnings.drl",
                                                              Verifier.class ),
                        ResourceType.DRL );
@@ -143,12 +131,18 @@
                                                              Verifier.class ),
                        ResourceType.DRL );
         // Subsumption
-        resources.put( ResourceFactory.newClassPathResource( "subsumption/Possibilities.drl",
+        resources.put( ResourceFactory.newClassPathResource( "subsumption/Consequences.drl",
                                                              Verifier.class ),
                        ResourceType.DRL );
         resources.put( ResourceFactory.newClassPathResource( "subsumption/Restrictions.drl",
                                                              Verifier.class ),
                        ResourceType.DRL );
+        resources.put( ResourceFactory.newClassPathResource( "subsumption/SubPatterns.drl",
+                                                             Verifier.class ),
+                       ResourceType.DRL );
+        resources.put( ResourceFactory.newClassPathResource( "subsumption/SubRules.drl",
+                                                             Verifier.class ),
+                       ResourceType.DRL );
 
         return resources;
     }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Cause.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Cause.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Cause.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,5 +1,6 @@
 package org.drools.verifier.report.components;
 
+
 /**
  *
  * @author Toni Rikkola
@@ -7,6 +8,6 @@
 public interface Cause {
 
     public String getGuid();
-    
+
     public CauseType getCauseType();
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/CauseType.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/CauseType.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/CauseType.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -2,27 +2,28 @@
 
 public class CauseType {
 
-	public static final CauseType RULE = new CauseType(0);
-	public static final CauseType FIELD = new CauseType(1);
-	public static final CauseType GAP = new CauseType(2);
-	public static final CauseType PATTERN = new CauseType(3);
-	public static final CauseType RESTRICTION = new CauseType(4);
-	public static final CauseType PATTERN_POSSIBILITY = new CauseType(5);
-	public static final CauseType RULE_POSSIBILITY = new CauseType(6);
-	public static final CauseType RANGE_CHECK_CAUSE = new CauseType(7);
-	public static final CauseType REDUNDANCY = new CauseType(8);
-	public static final CauseType EVAL = new CauseType(9);
-	public static final CauseType PREDICATE = new CauseType(10);
-	public static final CauseType CONSTRAINT = new CauseType(11);
-	public static final CauseType CONSEQUENCE = new CauseType(12);
-	public static final CauseType SUBSUMPTION = new CauseType(13);
-	public static final CauseType OPPOSITE = new CauseType(14);
-	public static final CauseType INCOMPATIBLE = new CauseType(15);
-	public static final CauseType ALWAYS_TRUE = new CauseType(16);
+    public static final CauseType RULE              = new CauseType( "RULE" );
+    public static final CauseType FIELD             = new CauseType( "FIELD" );
+    public static final CauseType GAP               = new CauseType( "GAP" );
+    public static final CauseType PATTERN           = new CauseType( "PATTERN" );
+    public static final CauseType RESTRICTION       = new CauseType( "RESTRICTION" );
+    public static final CauseType SUB_PATTERN       = new CauseType( "SUB_PATTERN" );
+    public static final CauseType SUB_RULE          = new CauseType( "SUB_RULE" );
+    public static final CauseType SOURCE            = new CauseType( "SOURCE" );
+    public static final CauseType RANGE_CHECK_CAUSE = new CauseType( "RANGE_CHECK_CAUSE" );
+    public static final CauseType REDUNDANCY        = new CauseType( "REDUNDANCY" );
+    public static final CauseType EVAL              = new CauseType( "EVAL" );
+    public static final CauseType PREDICATE         = new CauseType( "PREDICATE" );
+    public static final CauseType CONSTRAINT        = new CauseType( "CONSTRAINT" );
+    public static final CauseType CONSEQUENCE       = new CauseType( "CONSEQUENCE" );
+    public static final CauseType SUBSUMPTION       = new CauseType( "SUBSUMPTION" );
+    public static final CauseType OPPOSITE          = new CauseType( "OPPOSITE" );
+    public static final CauseType INCOMPATIBLE      = new CauseType( "INCOMPATIBLE" );
+    public static final CauseType ALWAYS_TRUE       = new CauseType( "ALWAYS_TRUE" );
 
-	public final int index;
+    public final String           type;
 
-	public CauseType(int i) {
-		index = i;
-	}
+    public CauseType(String type) {
+        this.type = type;
+    }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MessageType.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MessageType.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MessageType.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,22 +1,26 @@
 package org.drools.verifier.report.components;
 
 public class MessageType {
-	public static final MessageType NOT_SPECIFIED = new MessageType(0);
-	public static final MessageType RANGE_CHECK = new MessageType(1);
-	public static final MessageType MISSING_EQUALITY = new MessageType(2);
-	public static final MessageType REDUNDANCY = new MessageType(3);
-	public static final MessageType SUBSUMPTION = new MessageType(4);
-	public static final MessageType MISSING_COMPONENT = new MessageType(5);
-	public static final MessageType OPTIMISATION = new MessageType(6);
-	public static final MessageType INCOHERENCE = new MessageType(7);
-	public static final MessageType OVERLAP = new MessageType(8);
-	public static final MessageType ALWAYS_FALSE = new MessageType(9);
-	public static final MessageType ALWAYS_TRUE = new MessageType(10);
+    public static final MessageType NOT_SPECIFIED     = new MessageType( "NOT_SPECIFIED" );
+    public static final MessageType RANGE_CHECK       = new MessageType( "RANGE_CHECK" );
+    public static final MessageType MISSING_EQUALITY  = new MessageType( "MISSING_EQUALITY" );
+    public static final MessageType REDUNDANCY        = new MessageType( "REDUNDANCY" );
+    public static final MessageType SUBSUMPTION       = new MessageType( "SUBSUMPTION" );
+    public static final MessageType MISSING_COMPONENT = new MessageType( "MISSING_COMPONENT" );
+    public static final MessageType OPTIMISATION      = new MessageType( "OPTIMISATION" );
+    public static final MessageType INCOHERENCE       = new MessageType( "INCOHERENCE" );
+    public static final MessageType OVERLAP           = new MessageType( "OVERLAP" );
+    public static final MessageType ALWAYS_FALSE      = new MessageType( "ALWAYS_FALSE" );
+    public static final MessageType ALWAYS_TRUE       = new MessageType( "ALWAYS_TRUE" );
+    public static final MessageType EQUIVALANCE       = new MessageType( "EQUIVALANCE" );
 
-	public final int index;
+    public final String             type;
 
-	public MessageType(int i) {
-		index = i;
-	}
+    public MessageType(String type) {
+        this.type = type;
+    }
 
+    public String toString() {
+        return type;
+    }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Redundancy.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Redundancy.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Redundancy.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,39 +1,48 @@
 package org.drools.verifier.report.components;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
 /**
  * Presents a redundancy between two Causes. The link between them can be WEAK
  * or STRONG.
  * 
- * WEAK redundancy is for example two VerifierRules, but not theyr's rule
+ * WEAK redundancy is for example two VerifierRules, but not their rule
  * possibilities. STRONG redundancy includes possibilities.
  * 
  * @author Toni Rikkola
  */
-public class Redundancy extends Subsumption implements Cause {
-	// By default the redundancy is weak.
-	private final RedundancyType type;
+public class Redundancy
+    implements
+    Cause {
 
-	public Redundancy(Cause left, Cause right) {
-		super(left, right);
-		type = RedundancyType.WEAK;
-	}
+    private static int        index = 0;
 
-	public Redundancy(RedundancyType type, Cause left, Cause right) {
-		super(left, right);
-		this.type = type;
-	}
+    private final String      guid  = String.valueOf( index++ );
 
-	public CauseType getCauseType() {
-		return CauseType.REDUNDANCY;
-	}
+    private final List<Cause> items = new ArrayList<Cause>( 2 );
 
-	public RedundancyType getType() {
-		return type;
-	}
+    public Redundancy(Cause first,
+                      Cause second) {
+        items.add( first );
+        items.add( second );
+    }
 
-	@Override
-	public String toString() {
-		return "Redundancy between: (" + getLeft() + ") and (" + getRight()
-				+ ").";
-	}
+    public String getGuid() {
+        return guid;
+    }
+
+    public CauseType getCauseType() {
+        return CauseType.REDUNDANCY;
+    }
+
+    public List<Cause> getItems() {
+        return items;
+    }
+
+    @Override
+    public String toString() {
+        return "Redundancy between: (" + items.get( 0 ) + ") and (" + items.get( 1 ) + ").";
+    }
 }

Deleted: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/RedundancyType.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/RedundancyType.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/RedundancyType.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,13 +0,0 @@
-package org.drools.verifier.report.components;
-
-
-public class RedundancyType {
-	public static final RedundancyType WEAK = new RedundancyType(0);
-	public static final RedundancyType STRONG = new RedundancyType(0);
-
-	public final int index;
-
-	public RedundancyType(int i) {
-		index = i;
-	}
-}

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/solver/Solvers.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/solver/Solvers.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/solver/Solvers.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -18,11 +18,11 @@
  */
 public class Solvers {
 
-    private RuleSolver               ruleSolver           = null;
-    private PatternSolver            patternSolver        = null;
+    private RuleSolver       ruleSolver        = null;
+    private PatternSolver    patternSolver     = null;
 
-    private List<SubPattern> patternPossibilities = new ArrayList<SubPattern>();
-    private List<SubRule>    rulePossibilities    = new ArrayList<SubRule>();
+    private List<SubPattern> subPatterns       = new ArrayList<SubPattern>();
+    private List<SubRule>    rulePossibilities = new ArrayList<SubRule>();
 
     public void startRuleSolver(VerifierRule rule) {
         ruleSolver = new RuleSolver( rule );
@@ -113,23 +113,37 @@
     }
 
     private void createPatternPossibilities() {
-        for ( Set<VerifierComponent> list : patternSolver.getPossibilityLists() ) {
-            SubPattern possibility = new SubPattern();
+        List<Set<VerifierComponent>> lists = patternSolver.getPossibilityLists();
+        if ( lists.size() == 0 ) {
+            SubPattern subPattern = newSubPattern();
 
-            possibility.setRuleGuid( ruleSolver.getRule().getGuid() );
-            possibility.setRuleName( ruleSolver.getRule().getRuleName() );
-            possibility.setRuleGuid( ruleSolver.getRule().getGuid() );
-            possibility.setPatternGuid( patternSolver.getPattern().getGuid() );
+            ruleSolver.add( subPattern );
+            subPatterns.add( subPattern );
+        } else {
 
-            for ( VerifierComponent descr : list ) {
-                possibility.add( (Restriction) descr );
+            for ( Set<VerifierComponent> list : lists ) {
+                SubPattern subPattern = newSubPattern();
+
+                for ( VerifierComponent descr : list ) {
+                    subPattern.add( (Restriction) descr );
+                }
+
+                ruleSolver.add( subPattern );
+                subPatterns.add( subPattern );
             }
-
-            ruleSolver.add( possibility );
-            patternPossibilities.add( possibility );
         }
     }
 
+    private SubPattern newSubPattern() {
+        SubPattern subPattern = new SubPattern();
+
+        subPattern.setRuleGuid( ruleSolver.getRule().getGuid() );
+        subPattern.setRuleName( ruleSolver.getRule().getRuleName() );
+        subPattern.setRuleGuid( ruleSolver.getRule().getGuid() );
+        subPattern.setPatternGuid( patternSolver.getPattern().getGuid() );
+        return subPattern;
+    }
+
     private void createRulePossibilities() {
         for ( Set<VerifierComponent> list : ruleSolver.getPossibilityLists() ) {
             SubRule possibility = new SubRule();
@@ -148,11 +162,11 @@
     }
 
     public List<SubPattern> getPatternPossibilities() {
-        return patternPossibilities;
+        return subPatterns;
     }
 
     public void setPatternPossibilities(List<SubPattern> patternPossibilities) {
-        this.patternPossibilities = patternPossibilities;
+        this.subPatterns = patternPossibilities;
     }
 
     public List<SubRule> getRulePossibilities() {

Deleted: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Rules.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Rules.drl	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Rules.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,36 +0,0 @@
-#created on: 7.9.2007
-package org.drools.verifier.equivalency.rules
-
-import org.drools.verifier.components.VerifierRule;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
-
-#
-# Only checks for redundant rule specifications where consequences are not redundant, 
-# does not include actual pattern and restriction checks.
-#
-# Dependencies: None
-#
-rule "Find equivalent Rules"
-	when
-		# Check that VerifierRule $left and $right have redundant fields.
-		$left :VerifierRule()
-		$right :VerifierRule( 
-			guid not matches $left.guid, 
-			ruleAgendaGroup == $left.ruleAgendaGroup
-		)
-		
-		not Redundancy(
-			left == $left.consequence,
-			right == $right.consequence
-		)
-		
-		# Check that there is not already a pair with these values.
-		not Redundancy( 
-			left == $left, 
-			right == $right 
-		)
-	then
-		insert( new Redundancy( RedundancyType.WEAK, $left, $right ) );
-end
-

Copied: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Warnings.drl (from rev 30137, labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Rules.drl)
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Warnings.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Warnings.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,92 @@
+#created on: 7.9.2007
+package org.drools.verifier.equivalency.rules
+
+#list any import classes here.
+global VerifierReport result;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.drools.verifier.data.VerifierReport;
+
+import org.drools.verifier.components.VerifierRule;
+import org.drools.verifier.components.SubRule;
+import org.drools.verifier.components.Consequence;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.Subsumption;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.VerifierMessage;
+import org.drools.verifier.report.components.MessageType;
+
+#
+# Only checks for redundant rule specifications where consequences are not redundant, 
+# does not include actual pattern and restriction checks.
+#
+# Dependencies: None
+#
+rule "Find equivalent Rules"
+	when
+		# Check that VerifierRule $left and $right have redundant fields.
+		$left :VerifierRule()
+		
+		$right :VerifierRule( 
+			guid != $left.guid 
+		)
+		
+		
+		$leftSubRules : ArrayList() 
+			from collect( 
+				SubRule(
+					ruleGuid == $left.guid
+				)
+			)
+
+		$rightSubRules : ArrayList() 
+			from collect( 
+				SubRule(
+					ruleGuid == $right.guid
+				)
+			)
+		
+		forall (
+			$subRule :SubRule(
+			) from $leftSubRules 
+			
+			Subsumption(
+				left == $subRule,
+				right memberOf $rightSubRules
+			) 
+		)
+		forall (
+			$subRule :SubRule(
+			) from $rightSubRules 
+			
+			Subsumption(
+				left == $subRule,
+				right memberOf $leftSubRules
+			) 
+		)
+		
+		# RHS should not be redundant		
+		$leftConsequence : Consequence(
+			guid == $left.consequenceGuid,
+			consequenceType == $left.consequenceType
+		)
+		$rightConsequence : Consequence(
+			guid == $right.consequenceGuid,
+			consequenceType == $right.consequenceType
+		)
+		not Redundancy(
+			items contains $leftConsequence,
+			items contains $rightConsequence
+		)
+	then
+		Collection causes = new ArrayList();
+		causes.add( $left );
+		causes.add( $right );
+
+		result.add(new VerifierMessage(
+						Severity.WARNING, MessageType.EQUIVALANCE,
+						$left, "Rule is equivalent to rule " + $right.getRuleName() + " ", causes ) );
+end
+

Deleted: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Consequence.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Consequence.drl	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Consequence.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,32 +0,0 @@
-#created on: 29.11.2007
-package org.drools.verifier.redundancy.consequences
-
-#list any import classes here.
-import org.drools.verifier.components.TextConsequence;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
-
-#declare any global variables here
-
-
-
-#
-# Dependencies: None
-#
-rule "Find redundant TextConsequences"
-	when
-		# Check that VerifierRule $left and $right have redundant fields.
-		$left :TextConsequence()
-		$right :TextConsequence(
-			guid not matches $left.guid,
-			text == $left.text
-		)
-
-		# Check that there is not already a pair with these values.
-		not Redundancy(
-			left == $left,
-			right == $right
-		)
-	then
-		insert( new Redundancy( RedundancyType.STRONG, $left, $right ) );
-end

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Notes.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Notes.drl	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Notes.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -33,17 +33,16 @@
 	salience -100
 	when
 		$r :Redundancy(
-			left.causeType == CauseType.RESTRICTION
+			items[0].causeType == CauseType.RESTRICTION
 		)
 
 		$pp :SubPattern(
-			items contains $r.left,
-			items contains $r.right
+			items contains $r.items[0],
+			items contains $r.items[1]
 		)
 	then
 		Collection causes = new ArrayList();
-		causes.add( $r.getLeft() );
-		causes.add( $r.getRight() );
+		causes.addAll( $r.getItems() );
 
 		result.add(new VerifierMessage(
 						Severity.NOTE, MessageType.REDUNDANCY,
@@ -60,17 +59,16 @@
 	salience -100
 	when
 		$r :Redundancy(
-			left.causeType == CauseType.PATTERN_POSSIBILITY
+			items[0].causeType == CauseType.SUB_PATTERN
 		)
 
 		SubRule(
-			items contains $r.left,
-			items contains $r.right
+			items contains $r.items[0],
+			items contains $r.items[1]
 		)
 	then
 		Collection causes = new ArrayList();
-		causes.add( $r.getLeft() );
-		causes.add( $r.getRight() );
+		causes.addAll( $r.getItems() );
 
 		result.add(new VerifierMessage(
 						Severity.NOTE, MessageType.REDUNDANCY,

Deleted: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Patterns.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Patterns.drl	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Patterns.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,83 +0,0 @@
-#created on: 7.9.2007
-package org.drools.verifier.redundancy.patterns
-
-import org.drools.verifier.components.*;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
-
-#
-# Only checks for redundant pattern specifications,
-# does not include actual restriction checks.
-#
-# Dependencies: None
-#
-rule "Find redundant Patterns with restrictions"
-	when
-		# Check that Patterns $left and $right have redundant fields.
-		$left :Pattern()
-		$right :Pattern(
-			guid not matches $left.guid,
-	  		objectTypeGuid matches $left.objectTypeGuid,
-	  		# TODO: In some cases the source might be redundant with different sources.
-	 		sourceType == $left.sourceType,
-	  		sourceGuid == $left.sourceGuid,
-	  		patternNot == $left.patternNot,
-	  		patternExists == $left.patternExists,
-	  		patternForall == $left.patternForall
-		)
-
-		# Has possibilities, if the there is no possibilities,
-		# then the Redundancy type is STRONG.
-		# Because these patterns have no restrictions.
-		exists SubPattern( patternGuid matches $left.guid )
-		exists SubPattern( patternGuid matches $right.guid )
-
-		# Check that there is not already a pair with these values.
-		not Redundancy(
-			left == $left,
-			right == $right
-		)
-		not Redundancy(
-			left == $right,
-			right == $left
-		)
-	then
-		insert( new Redundancy( RedundancyType.WEAK, $left, $right ) );
-end
-
-#
-# Checks for redundant pattern specifications when the patterns have no possibilities.
-#
-# Dependencies: None
-#
-rule "Find redundant Patterns without restrictions"
-	when
-		# Check that Patterns $left and $right have redundant fields.
-		$left :Pattern()
-		$right :Pattern(
-			guid not matches $left.guid,
-	  		objectTypeGuid == $left.objectTypeGuid,
-	  		# TODO: In some cases the source might be redundant with different sources.
-	 		sourceType == $left.sourceType,
-	  		sourceGuid == $left.sourceGuid,
-	  		patternNot == $left.patternNot,
-	  		patternExists == $left.patternExists,
-	  		patternForall == $left.patternForall
-		)
-
-		# Not possibilities
-		not SubPattern( patternGuid matches $left.guid )
-		not SubPattern( patternGuid matches $right.guid )
-
-		# Check that there is not already a pair with these values.
-		not Redundancy(
-			left == $left,
-			right == $right
-		)
-		not Redundancy(
-			left == $right,
-			right == $left
-		)
-	then
-		insert( new Redundancy( RedundancyType.STRONG, $left, $right ) );
-end

Deleted: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Possibilities.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Possibilities.drl	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Possibilities.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,161 +0,0 @@
-#created on: 7.9.2007
-package org.drools.verifier.redundancy.possibilities
-
-import org.drools.verifier.components.*;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
-import org.drools.verifier.report.components.PartialRedundancy;
-import org.drools.verifier.report.components.Subsumption;
-import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
-
-import java.util.ArrayList;
-
-#
-# Fires when two PatternPossibilities are redundant.
-# Marks these possibilities as redundant.
-#
-# Dependencies: Needs at least one rule from both packages.
-#
-#		package org.drools.verifier.redundancy.patterns
-#			rule "Find redundant Patterns with restrictions"
-#			rule "Find redundant Patterns without restrictions"
-#		package org.drools.verifier.redundancy.restrictions
-#			rule "Find redundant VariableRestriction"
-#			rule "Find redundant LiteralRestriction"
-#
-# Example 1: Pattern1( a == b ) and Pattern1( a == b )
-# Example 2: Pattern1( a == b || a == c ) and Pattern1( a == b )
-#
-rule "Find pattern possibility redundancy"
-	when
-		$redundancy :Redundancy(
-			left.causeType == CauseType.PATTERN
-		)
-
-		# Find two PatternPossibilities.
-		(
-				$pp1 :SubPattern(
-					eval( patternGuid.equals( $redundancy.getLeft().getGuid() ) )
-				)
-			and
-				$pp2 :SubPattern(
-					eval( patternGuid.equals( $redundancy.getRight().getGuid() ) )
-				)
-		) or (
-				$pp1 :SubPattern(
-					eval( patternGuid.equals( $redundancy.getRight().getGuid() ) )
-				)
-			and
-				$pp2 :SubPattern(
-					eval( patternGuid.equals( $redundancy.getLeft().getGuid() ) )
-				)
-		)
-
-		# For every restriction in $pp1 there is a redundancy to $pp2.
-		forall(
-			$r :Restriction(
-				patternGuid matches $pp1.patternGuid,
-				this memberOf $pp1.items
-			)
-
-			Redundancy(
-				(
-					left == $r
-					&&
-					right memberOf $pp2.items
-				) || (
-					left memberOf $pp2.items
-					&&
-					right == $r
-				)
-			)
-		)
-
-		# For every restriction in $pp2 there is a redundancy to $pp1.
-		forall(
-			$r :Restriction(
-				patternGuid matches $pp2.patternGuid,
-				this memberOf $pp2.items
-			)
-
-			Redundancy(
-				(
-					left == $r
-					&&
-					right memberOf $pp1.items
-				) || (
-					left memberOf $pp1.items
-					&&
-					right == $r
-				)
-			)
-		)
-	then
-		insert( new Redundancy( RedundancyType.STRONG, $pp1, $pp2 ) );
-end
-
-#
-# Fires when two PatternPossibilities are redundant.
-# Marks these possibilities as redundant.
-#
-# Dependencies:
-#
-#	Needs at least one rule from these packages:
-#		package org.drools.verifier.equivalency.rules
-#			rule "Find equivalent Rules"
-#		package org.drools.verifier.redundancy.rules
-#			rule "Find redundant Rules, strong redundancy"
-#
-#	And this rule:
-#		package org.drools.verifier.redundancy.possibilities
-#			rule "Find pattern possibility redundancy"
-#
-# Example: rule "1" Pattern( a == b) end
-#		   rule "2" Pattern( a == b) end
-#
-rule "Find rule possibility redundancy"
-	when
-		$redundancy :Redundancy(
-			left.causeType == CauseType.RULE
-		)
-
-		# Find two RulePossibilities.
-		$rp1 :SubRule(
-			eval( ruleGuid.equals( $redundancy.getLeft().getGuid() ) )
-		)
-		$rp2 :SubRule(
-			eval( ruleGuid.equals( $redundancy.getRight().getGuid() ) )
-		)
-
-		# For every pattern possibility in $rp1 there is a redundant pattern possibility in $rp2.
-		forall(
-			$pp :SubPattern(
-				ruleGuid matches $rp1.ruleGuid,
-				this memberOf $rp1.items
-			)
-
-			Redundancy(
-				type == RedundancyType.STRONG,
-				left == $pp,
-				right memberOf $rp2.items
-			)
-
-		)
-
-		# For every pattern possibility in $rp2 there is a redundant pattern possibility in $rp1.
-		forall(
-			$pp :SubPattern(
-				ruleGuid matches $rp2.ruleGuid,
-				this memberOf $rp2.items
-			)
-
-			Redundancy(
-				type == RedundancyType.STRONG,
-				left == $pp,
-				right memberOf $rp1.items
-			)
-		)
-	then
-		insert( new Redundancy( RedundancyType.STRONG, $rp1, $rp2 ) );
-end
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Redundancy.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Redundancy.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Redundancy.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,40 @@
+#created on: 16.11.2009
+package org.drools.verifier.redundancy
+
+#list any import classes here.
+#global VerifierReport result;
+
+
+
+#declare any global variables here
+#import org.drools.verifier.data.VerifierReport;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.Subsumption;
+
+
+#
+# If two objects are subsumptant to each others that makes them redundant.
+#
+# Dependencies:
+#
+#	Needs at least the following package:
+#		package org.drools.verifier.sumbumption
+#
+rule "Find redundancy"
+	when
+		$sub :Subsumption( )
+		
+		Subsumption(
+			guid != $sub.guid,
+			left == $sub.right,
+			right == $sub.left
+		)
+		
+		not Redundancy(
+			items contains $sub.left, 
+			items contains $sub.right 
+		)
+	then
+		insert( new Redundancy( $sub.getLeft(), 
+								$sub.getRight() ) );
+end

Deleted: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Restrictions.drl	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Restrictions.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,115 +0,0 @@
-#created on: 7.9.2007
-package org.drools.verifier.redundancy.restrictions
-
-import org.drools.verifier.components.*;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
-
-#
-# Dependencies: None
-#
-rule "Find redundant VariableRestriction"
-	when
-		# Check that Restrictions $left and $right have redundant fields.
-		$left :VariableRestriction()
-		$right :VariableRestriction(
-			guid not matches $left.guid,
-			operator == $left.operator,
-			variable.objectTypeType == $left.variable.objectTypeType,
-			variable.objectTypeGuid matches $left.variable.objectTypeGuid
-		)
-		# Check that there is not already a pair with these values.
-		not Redundancy(
-			left == $left,
-			right == $right
-		)
-		not Redundancy(
-			left == $right,
-			right == $left
-		)
-	then
-		insert( new Redundancy( RedundancyType.STRONG, $left, $right ) );
-end
-
-#
-# Dependencies: None
-#
-rule "Find redundant LiteralRestriction"
-	when
-		# Check that Restrictions $left and $right have redundant fields.
-		$left :LiteralRestriction()
-		and
-		(
-				$right :LiteralRestriction(
-					guid not matches $left.guid,
-					operator == $left.operator,
-					valueType == $left.valueType,
-					valueType == Field.FieldType.BOOLEAN,
-					booleanValue == $left.booleanValue
-				)
-			or
-				$right :LiteralRestriction(
-					guid not matches $left.guid,
-					operator == $left.operator,
-					valueType == $left.valueType,
-					valueType == Field.FieldType.STRING,
-					valueAsString matches $left.valueAsString
-				)
-			or
-				$right :LiteralRestriction(
-					guid not matches $left.guid,
-					operator == $left.operator,
-					valueType == $left.valueType,
-					valueType == Field.FieldType.INT,
-					intValue == $left.intValue
-				)
-			or
-				$right :LiteralRestriction(
-					guid not matches $left.guid,
-					operator == $left.operator,
-					valueType == $left.valueType,
-					valueType == Field.FieldType.DOUBLE,
-					doubleValue == $left.doubleValue
-				)
-			or
-				$right :LiteralRestriction(
-					guid not matches $left.guid,
-					operator == $left.operator,
-					valueType == $left.valueType,
-					valueType == Field.FieldType.DATE,
-					eval( dateValue.equals($left.getDateValue()) )
-				)
-			or
-			(
-				$right :LiteralRestriction(
-					guid not matches $left.guid,
-					operator == $left.operator,
-					valueType == $left.valueType,
-					valueType == Field.FieldType.VARIABLE
-				)
-				and
-					$v :Variable(
-						objectTypeType == VerifierComponentType.FIELD,
-						objectTypeGuid matches $left.guid
-					)
-				and
-					Variable(
-						objectTypeType == VerifierComponentType.FIELD,
-						objectTypeGuid matches $right.guid,
-						objectTypeName == $v.objectTypeName,
-						name matches $v.name
-					)
-			)
-		)
-		# Check that there is not already a pair with these values.
-		not Redundancy(
-			left == $left,
-			right == $right
-		)
-		not Redundancy(
-			left == $right,
-			right == $left
-		)
-	then
-		insert( new Redundancy( RedundancyType.STRONG, $left, $right ) );
-end
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Rules.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Rules.drl	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Rules.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,39 +0,0 @@
-#created on: 7.9.2007
-package org.drools.verifier.redundancy.rules
-
-import org.drools.verifier.components.VerifierRule;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
-
-#
-# Only checks for redundant rule specifications,
-# does not include actual pattern and restriction checks.
-#
-# Dependencies:
-#
-#		package org.drools.verifier.redundancy.consequences
-#			rule "Find redundant TextConsequences"
-#
-rule "Find redundant Rules, strong redundancy"
-	when
-		# Check that VerifierRule $left and $right have redundant fields.
-		$left :VerifierRule()
-		$right :VerifierRule(
-			guid not matches $left.guid,
-			ruleAgendaGroup == $left.ruleAgendaGroup
-		)
-
-		exists Redundancy(
-			left == $left.consequence,
-			right == $right.consequence
-		)
-
-		# Check that there is not already a pair with these values.
-		not Redundancy(
-			left == $left,
-			right == $right
-		)
-	then
-		insert( new Redundancy( RedundancyType.STRONG, $left, $right ) );
-end
-

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Warnings.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Warnings.drl	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Warnings.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -11,15 +11,92 @@
 import java.util.ArrayList;
 
 import org.drools.verifier.components.SubRule;
+import org.drools.verifier.components.VerifierRule;
+import org.drools.verifier.components.Consequence;
+
 import org.drools.verifier.data.VerifierReport;
+
 import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
+import org.drools.verifier.report.components.Subsumption;
 import org.drools.verifier.report.components.VerifierMessage;
 import org.drools.verifier.report.components.Cause;
 import org.drools.verifier.report.components.CauseType;
 import org.drools.verifier.report.components.Severity;
 import org.drools.verifier.report.components.MessageType;
 
+
+rule "Find redundant LHS"
+	when
+		# Check that VerifierRule $left and $right have redundant fields.
+		$left :VerifierRule()
+		
+		$right :VerifierRule( 
+			guid != $left.guid 
+		)
+		
+		
+		$leftSubRules : ArrayList() 
+			from collect( 
+				SubRule(
+					ruleGuid == $left.guid
+				)
+			)
+
+		$rightSubRules : ArrayList() 
+			from collect( 
+				SubRule(
+					ruleGuid == $right.guid
+				)
+			)
+		
+		forall (
+			$subRule :SubRule(
+			) from $leftSubRules 
+			
+			Subsumption(
+				left == $subRule,
+				right memberOf $rightSubRules
+			) 
+		)
+		forall (
+			$subRule :SubRule(
+			) from $rightSubRules 
+			
+			Subsumption(
+				left == $subRule,
+				right memberOf $leftSubRules
+			) 
+		)
+	then
+end
+
+rule "Find equivalent Rules" extends "Find redundant LHS"
+	when
+		
+		# RHS should not be redundant		
+		$leftConsequence : Consequence(
+			guid == $left.consequenceGuid,
+			consequenceType == $left.consequenceType
+		)
+		$rightConsequence : Consequence(
+			guid == $right.consequenceGuid,
+			consequenceType == $right.consequenceType
+		)
+		not Redundancy(
+			items contains $leftConsequence,
+			items contains $rightConsequence
+		)
+	then
+		Collection causes = new ArrayList();
+		causes.add( $left );
+		causes.add( $right );
+
+		result.add(new VerifierMessage(
+						Severity.WARNING, MessageType.EQUIVALANCE,
+						$left, "Rule is equivalent to rule " + $right.getRuleName() + ".", causes ) );
+end
+
+
 #
 # Dependencies:
 #
@@ -33,52 +110,34 @@
 #		package org.drools.verifier.redundancy.possibilities
 #			rule "Find rule possibility redundancy"
 #
-rule "Find redundant rule possibilities from different rules"
-	salience -100
+rule "Find redundant rules" extends "Find redundant LHS"
 	when
-		$ruleRedundancy :Redundancy(
-			left.causeType == CauseType.RULE
+	
+		# RHS need to be redundant		
+		$leftConsequence : Consequence(
+			guid == $left.consequenceGuid,
+			consequenceType == $left.consequenceType
 		)
-
-		$rulePossibilityRedundancy :Redundancy(
-			left.causeType == CauseType.RULE_POSSIBILITY
+		$rightConsequence : Consequence(
+			guid == $right.consequenceGuid,
+			consequenceType == $right.consequenceType
 		)
-
-		# Check that redundant possibilities are from redundant rules
-		exists SubRule(
-			this == $rulePossibilityRedundancy.left,
-			eval( ruleGuid.equals( $ruleRedundancy.getLeft().getGuid() ) )
-		)
-
-		exists SubRule(
-			this == $rulePossibilityRedundancy.right,
-			eval( ruleGuid.equals( $ruleRedundancy.getRight().getGuid() ) )
-		)
-
-		# Check that the possibilties are redundant to each other.
 		exists Redundancy(
-			left.causeType == CauseType.RULE_POSSIBILITY,
-			left == $rulePossibilityRedundancy.right,
-			right == $rulePossibilityRedundancy.left
+			items contains $leftConsequence,
+			items contains $rightConsequence
 		)
 
 	then
 		Collection causes = new ArrayList();
-		causes.add( $rulePossibilityRedundancy.getLeft() );
-		causes.add( $rulePossibilityRedundancy.getRight() );
+		causes.add( $left );
+		causes.add( $right );
 
-		String message;
-		if( $ruleRedundancy.getType() == RedundancyType.WEAK ) {
-			message = "Rules are equivalent.";
-		} else {
-			message = "Rules are redundant.";
-		}
-
 		result.add(new VerifierMessage(
 						Severity.WARNING, MessageType.REDUNDANCY,
-						$rulePossibilityRedundancy, message, causes ) );
+						$left, "Rule is redundant to rule " + $right.getRuleName() + ".", causes ) );
 end
 
+
 #
 # Dependencies:
 #
@@ -95,38 +154,24 @@
 rule "Find subsumptant rule possibilities from different rules"
 	salience -100
 	when
-		$ruleRedundancy :Redundancy(
-			left.causeType == CauseType.RULE
+		$subsumption:Subsumption(
+			left.causeType == CauseType.SUB_RULE
 		)
-
-		$rulePossibilityRedundancy :Redundancy(
-			left.causeType == CauseType.RULE_POSSIBILITY
+		
+		# No redundacy
+		not Subsumption(
+			left.causeType == CauseType.SUB_RULE,
+			left == $subsumption.right,
+			right == $subsumption.left
 		)
 
-		# Check that redundant possibilities are from redundant rules
-		exists SubRule(
-			this == $rulePossibilityRedundancy.left,
-			eval( ruleGuid.equals( $ruleRedundancy.getLeft().getGuid() ) )
-		)
-
-		exists SubRule(
-			this == $rulePossibilityRedundancy.right,
-			eval( ruleGuid.equals( $ruleRedundancy.getRight().getGuid() ) )
-		)
-
-		# Check that the left side is redundant to right, but the right side is not redundant to left.
-		not Redundancy(
-			left.causeType == CauseType.RULE_POSSIBILITY,
-			left == $rulePossibilityRedundancy.right,
-			right == $rulePossibilityRedundancy.left
-		)
-
 	then
 		Collection causes = new ArrayList();
-		causes.add( $rulePossibilityRedundancy.getLeft() );
-		causes.add( $rulePossibilityRedundancy.getRight() );
+		causes.add( $subsumption.getLeft() );
+		causes.add( $subsumption.getRight() );
 
 		result.add(new VerifierMessage(
-						Severity.WARNING, MessageType.REDUNDANCY,
-						$rulePossibilityRedundancy, "Rules are subsumptant.", causes ) );
+						Severity.WARNING, MessageType.SUBSUMPTION,
+						$subsumption, "Rules are subsumptant.", causes ) );
 end
+

Added: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Consequences.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Consequences.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Consequences.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,23 @@
+#created on: 1.12.2009
+package org.drools.verifier.subsumption.patterns
+
+
+import org.drools.verifier.components.TextConsequence;
+import org.drools.verifier.report.components.Subsumption;
+
+
+
+#
+#
+rule "Subsumptant consequences"
+	when
+		$left :TextConsequence()
+		
+		$right :TextConsequence(
+			guid != $left.guid,
+			text == $left.text
+		)	
+		
+	then 
+		insert( new Subsumption( $left, $right ) );
+end
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Possibilities.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Possibilities.drl	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Possibilities.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,148 +0,0 @@
-#created on: 8.1.2008
-package org.drools.verifier.subsumption.patterns
-
-import org.drools.verifier.components.Restriction;
-import org.drools.verifier.components.Pattern;
-import org.drools.verifier.components.SubPattern;
-import org.drools.verifier.components.SubRule;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.Subsumption;
-import org.drools.verifier.report.components.CauseType;
-import org.drools.verifier.report.components.RedundancyType;
-
-
-#declare any global variables here
-
-#
-# Fires when two pattern possibilities are subsumptant.
-# Creates a Subsumption object.
-#
-# Dependencies: Needs at least one rule.
-#
-#		package org.drools.verifier.redundancy.patterns
-#			rule "Find redundant Patterns with restrictions"
-#			rule "Find redundant Patterns without restrictions"
-#
-# Example 1: P( x == 10 ) and P( x == 10 && y == 20 )
-#
-rule "Find subsumptant pattern possibilities"
-	when
-		
-		$redundancy :Redundancy(
-			left.causeType == CauseType.PATTERN
-		)
-
-		# Find two PatternPossibilities.
-		$pp1 :SubPattern(
-			eval( patternGuid.equals( $redundancy.getLeft().getGuid() ) )
-		)
-		$pp2 :SubPattern(
-			eval( patternGuid.equals( $redundancy.getRight().getGuid() ) )
-		)		
-		
-		# For every restriction in $pp1 there is a redundancy to restriction in $pp2.
-		forall(
-			$r :Restriction(
-				this memberOf $pp1.items
-			)
-
-			Subsumption(
-				left == $r,
-				right memberOf $pp2.items
-			)
-		)
-		
-		# There is no restriction on $pp2 that has no redundancy in $pp1 
-		# and has a lower order number than an existing redundancy from $pp2 to $pp1.
-		not(
-				$r1 :Restriction(
-					this memberOf $pp2.items
-				)
-			and
-				$r2 :Restriction(
-					this memberOf $pp2.items,
-					orderNumber > $r1.orderNumber
-				)
-			and
-				not Subsumption(
-					left memberOf $pp1.items,
-					right == $r1
-				)
-			and
-				Subsumption(
-					left memberOf $pp1.items,
-					right == $r2
-				)
-		)
-
-	then
-		insert( new Subsumption( $pp1, $pp2 ) );
-end
-
-#
-# Fires when two pattern possibilities are subsumptant.
-# Creates a Subsumption object.
-#
-# Dependencies: Needs at least one rule from either one of the following packages.
-#
-#		package org.drools.verifier.subsumption.patterns
-#			rule "Find subsumptant pattern possibilities"
-#
-#		package org.drools.verifier.redundancy.patterns
-#			rule "Find redundant Patterns with restrictions"
-#			rule "Find redundant Patterns without restrictions"
-#
-rule "Find subsumptant rule possibilities"
-	when
-		
-		$redundancy :Redundancy(
-			left.causeType == CauseType.RULE
-		)
-
-		# Find two RulePossibilities.
-		$rp1 :SubRule(
-			eval( ruleGuid.equals( $redundancy.getLeft().getGuid() ) )
-		)
-		$rp2 :SubRule(
-			eval( ruleGuid.equals( $redundancy.getRight().getGuid() ) )
-		)
-		
-		# For every SubPattern in $rp1 there is a redundancy to SubPattern in $rp2.
-		forall(
-			$pp :SubPattern(
-				this memberOf $rp1.items
-			)
-
-			Subsumption(
-				left == $pp,
-				right memberOf $rp2.items
-			)
-		)
-		
-		# There is no SubPattern on $rp2 that has no redundancy in $rp1 
-		# and has a lower order number than an existing SubPattern from $rp2 to $rp1.
-		not(
-				$pp1 :SubPattern(
-					this memberOf $rp2.items
-				)
-			and
-				$pp2 :SubPattern(
-					this memberOf $rp2.items,
-					orderNumber > $pp1.orderNumber
-				)
-			and
-				not Subsumption(
-					left memberOf $rp1.items,
-					right == $pp1
-				)
-			and
-				Subsumption(
-					left memberOf $rp1.items,
-					right == $pp2
-				)
-		)
-	then
-		insert( new Subsumption( $rp1, $rp2 ) );
-end
-
-

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -20,7 +20,7 @@
 rule "Find subsumptant restrictions, greater than"
 	when
 		# Covered x > 10
-		$lower :LiteralRestriction(
+		$lower:LiteralRestriction(
 			( valueType == Field.FieldType.INT || == Field.FieldType.DOUBLE || == Field.FieldType.DATE ),
 			( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL )
 		)
@@ -28,14 +28,31 @@
 		# Covered x > 100
 		$higher :LiteralRestriction( 
 			fieldGuid matches $lower.fieldGuid,
-			( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL || == Operator.EQUAL)
+			( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL || == Operator.EQUAL )
 		)
 		
 		eval( $lower.compareValues( $higher ) == -1 )
 	then 
-		insert( new Subsumption( $lower, $higher ) );
+		insert( new Subsumption( $higher, $lower ) );
 end
 
+rule "Find subsumptant restrictions, equal"
+	when
+		# Covered x > 10
+		$left :LiteralRestriction( )
+
+		# Covered x > 10
+		$right :LiteralRestriction( 
+			guid != $left.guid,
+			fieldGuid matches $left.fieldGuid,
+			operator == $left.operator
+		)
+		
+		eval( $left.compareValues( $right ) == 0 )
+	then 
+		insert( new Subsumption( $left, $right ) );
+end
+
 #
 # Fires when two restrictions are subsumptant.
 # Creates a Subsumption object.

Copied: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubPatterns.drl (from rev 30137, labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Possibilities.drl)
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubPatterns.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubPatterns.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,121 @@
+#created on: 8.1.2008
+package org.drools.verifier.subsumption.patterns
+
+import org.drools.verifier.components.Restriction;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.PatternComponent;
+import org.drools.verifier.components.SubPattern;
+import org.drools.verifier.components.SubRule;
+import org.drools.verifier.components.Source;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.Subsumption;
+import org.drools.verifier.report.components.CauseType;
+
+
+#declare any global variables here
+
+
+#
+# Fires when two pattern possibilities are subsumptant.
+# Creates a Subsumption object.
+#
+# Dependencies: Needs at least one rule.
+#
+#		package org.drools.verifier.redundancy.patterns
+#			rule "Find redundant Patterns with restrictions"
+#			rule "Find redundant Patterns without restrictions"
+#
+# Example 1: P( x == 10 ) and P( x == 10 && y == 20 )
+#
+rule "Find subsumptant sub patterns, subsumptant source"
+	when
+	
+		$subPattern1 :SubPattern()
+		$subPattern2 :SubPattern( 
+			guid != $subPattern1.guid,
+			objectTypeGuid == $subPattern1.objectTypeGuid,
+			# TODO: Check these. Should work with the idea of subsumption.
+			patternNot == $subPattern1.patternNot,
+			patternExists == $subPattern1.patternExists,
+			patternForall == $subPattern1.patternForall 
+		)
+		# Check if sources are equal or subsumptant 
+		$sourceSubsumption :Subsumption(
+			left.causeType == CauseType.SOURCE
+		)
+		Source(
+			guid == $subPattern1.sourceGuid,
+			verifierComponentType == $subPattern1.sourceType,
+			this == $sourceSubsumption.left
+		)	
+		Source(
+			guid == $subPattern2.sourceGuid,
+			verifierComponentType == $subPattern2.sourceType,
+			this == $sourceSubsumption.right
+		)
+		
+		# For every restriction in $subPattern1 there is a subsumption to a restriction in $subPattern2.
+		forall (
+			$leftPatternComponent :PatternComponent(
+			) from $subPattern1.items
+				
+			Subsumption(
+				left == $leftPatternComponent,
+				right memberOf $subPattern2.items
+			)
+		)
+#		not Subsumption(
+#				left memberOf $subPattern1.items,
+#				right not memberOf $subPattern2.items
+#		)
+	then
+		insert( new Subsumption( $subPattern1, $subPattern2 ) );
+end
+
+#
+# Fires when two pattern possibilities are subsumptant.
+# Creates a Subsumption object.
+#
+# Dependencies: Needs at least one rule.
+#
+#		package org.drools.verifier.redundancy.patterns
+#			rule "Find redundant Patterns with restrictions"
+#			rule "Find redundant Patterns without restrictions"
+#
+# Example 1: P( x == 10 ) and P( x == 10 && y == 20 )
+#
+rule "Find subsumptant sub patterns, same source"
+	when
+	
+		$subPattern1 :SubPattern()
+		$subPattern2 :SubPattern( 
+			guid != $subPattern1.guid,
+			objectTypeGuid == $subPattern1.objectTypeGuid,
+			# TODO: Check these. Should work with the idea of subsumption.
+			patternNot == $subPattern1.patternNot,
+			patternExists == $subPattern1.patternExists,
+			patternForall == $subPattern1.patternForall 
+		)
+		# Check if sources are equal or subsumptant #
+		Source(
+				guid == $subPattern1.sourceGuid && == $subPattern2.sourceGuid,
+				verifierComponentType == $subPattern1.sourceType && == $subPattern2.sourceType 
+		)	
+
+		# For every restriction in $subPattern1 there is a subsumption to a restriction in $subPattern2.
+		forall (
+			$leftPatternComponent :PatternComponent(
+			) from $subPattern1.items
+						
+			Subsumption(
+				left == $leftPatternComponent,
+				right memberOf $subPattern2.items
+			)
+		)
+#		not Subsumption(
+#				left memberOf $subPattern1.items,
+#				right not memberOf $subPattern2.items
+#		)
+	then
+		insert( new Subsumption( $subPattern1, $subPattern2 ) );
+end

Added: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubRules.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubRules.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,47 @@
+#created on: 1.12.2009
+package org.drools.verifier.subsumption.patterns
+
+import org.drools.verifier.components.Restriction;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.PatternComponent;
+import org.drools.verifier.components.SubPattern;
+import org.drools.verifier.components.SubRule;
+import org.drools.verifier.components.Consequence;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.Subsumption;
+import org.drools.verifier.report.components.CauseType;
+
+
+#declare any global variables here
+
+#
+#
+rule "Find subsumptant sub rules"
+	when
+	
+		$subRule1 :SubRule()
+		$subRule2 :SubRule( 
+			guid != $subRule1.guid,
+			attributes["ruleflow-group"] == $subRule1.attributes["ruleflow-group"],
+			attributes["agenda-group"] == $subRule1.attributes["agenda-group"],
+			attributes["xor-group"] == $subRule1.attributes["xor-group"]
+		)
+		
+		# For every restriction in $subRule1 there is a subsumption to a restriction in $subRule2.
+		forall (
+			$subPattern :SubPattern(
+			) from $subRule1.items
+			
+			Subsumption(
+				left == $subPattern,
+				right memberOf $subRule2.items
+			)
+		)
+#		not Subsumption(
+#				left memberOf $subRule1.items,
+#				right not memberOf $subRule2.items
+#		)
+	then
+		insert( new Subsumption( $subRule1, $subRule2 ) );
+end
+

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/SolversTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/SolversTest.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/SolversTest.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -9,6 +9,7 @@
 import org.drools.verifier.components.LiteralRestriction;
 import org.drools.verifier.components.OperatorDescr;
 import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.RuleComponent;
 import org.drools.verifier.components.SubPattern;
 import org.drools.verifier.components.Restriction;
 import org.drools.verifier.components.SubRule;
@@ -23,121 +24,125 @@
  */
 public class SolversTest extends TestCase {
 
-	/**
-	 * <pre>
-	 * when 
-	 * 		Foo( r &amp;&amp; r2 )
-	 * 		and
-	 * 		not Foo( r3 &amp;&amp; r4 )
-	 * </pre>
-	 * 
-	 * result:<br>
-	 * r && r2<br>
-	 * r3 && r4
-	 */
-	public void testNotAnd() {
-		VerifierRule rule = new VerifierRule();
-		Pattern pattern = new Pattern();
+    /**
+     * <pre>
+     * when 
+     * 		Foo( r &amp;&amp; r2 )
+     * 		and
+     * 		not Foo( r3 &amp;&amp; r4 )
+     * </pre>
+     * 
+     * result:<br>
+     * r && r2<br>
+     * r3 && r4
+     */
+    public void testNotAnd() {
+        VerifierRule rule = new VerifierRule();
+        Pattern pattern = new Pattern();
 
-		Restriction r = new LiteralRestriction();
-		Restriction r2 = new LiteralRestriction();
-		Restriction r3 = new LiteralRestriction();
-		Restriction r4 = new LiteralRestriction();
+        Restriction r = new LiteralRestriction();
+        Restriction r2 = new LiteralRestriction();
+        Restriction r3 = new LiteralRestriction();
+        Restriction r4 = new LiteralRestriction();
 
-		OperatorDescr andDescr = new OperatorDescr(OperatorDescr.Type.AND);
-		Solvers solvers = new Solvers();
+        OperatorDescr andDescr = new OperatorDescr( OperatorDescr.Type.AND );
+        Solvers solvers = new Solvers();
 
-		solvers.startRuleSolver(rule);
+        solvers.startRuleSolver( rule );
 
-		solvers.startOperator(OperatorDescr.Type.AND);
-		solvers.startPatternSolver(pattern);
-		solvers.startOperator(OperatorDescr.Type.AND);
-		solvers.addRestriction(r);
-		solvers.addRestriction(r2);
-		solvers.endOperator();
-		solvers.endPatternSolver();
+        solvers.startOperator( OperatorDescr.Type.AND );
+        solvers.startPatternSolver( pattern );
+        solvers.startOperator( OperatorDescr.Type.AND );
+        solvers.addRestriction( r );
+        solvers.addRestriction( r2 );
+        solvers.endOperator();
+        solvers.endPatternSolver();
 
-		solvers.startNot();
-		solvers.startPatternSolver(pattern);
-		solvers.startOperator(OperatorDescr.Type.AND);
-		solvers.addRestriction(r3);
-		solvers.addRestriction(r4);
-		solvers.endOperator();
-		solvers.endPatternSolver();
-		solvers.endNot();
+        solvers.startNot();
+        solvers.startPatternSolver( pattern );
+        solvers.startOperator( OperatorDescr.Type.AND );
+        solvers.addRestriction( r3 );
+        solvers.addRestriction( r4 );
+        solvers.endOperator();
+        solvers.endPatternSolver();
+        solvers.endNot();
 
-		solvers.endOperator();
+        solvers.endOperator();
 
-		solvers.endRuleSolver();
+        solvers.endRuleSolver();
 
-		List<SubRule> list = solvers.getRulePossibilities();
-		assertEquals(1, list.size());
-		assertEquals(2, list.get(0).getItems().size());
+        List<SubRule> list = solvers.getRulePossibilities();
+        assertEquals( 1,
+                      list.size() );
+        assertEquals( 2,
+                      list.get( 0 ).getItems().size() );
 
-		List<Restriction> result = new ArrayList<Restriction>();
-		result.add(r);
-		result.add(r2);
+        List<Restriction> result = new ArrayList<Restriction>();
+        result.add( r );
+        result.add( r2 );
 
-		List<Restriction> result2 = new ArrayList<Restriction>();
-		result2.add(r3);
-		result2.add(r4);
+        List<Restriction> result2 = new ArrayList<Restriction>();
+        result2.add( r3 );
+        result2.add( r4 );
 
-		Object[] possibilies = list.get(0).getItems().toArray();
-		SubPattern p1 = (SubPattern) possibilies[0];
-		SubPattern p2 = (SubPattern) possibilies[1];
+        Object[] possibilies = list.get( 0 ).getItems().toArray();
+        SubPattern p1 = (SubPattern) possibilies[0];
+        SubPattern p2 = (SubPattern) possibilies[1];
 
-		/*
-		 * Order may change but it doesn't matter.
-		 */
-		if (p1.getItems().containsAll(result)) {
-			assertTrue(p2.getItems().containsAll(result2));
-		} else if (p1.getItems().containsAll(result2)) {
-			assertTrue(p2.getItems().containsAll(result));
-		} else {
-			fail("No items found.");
-		}
-	}
+        /*
+         * Order may change but it doesn't matter.
+         */
+        if ( p1.getItems().containsAll( result ) ) {
+            assertTrue( p2.getItems().containsAll( result2 ) );
+        } else if ( p1.getItems().containsAll( result2 ) ) {
+            assertTrue( p2.getItems().containsAll( result ) );
+        } else {
+            fail( "No items found." );
+        }
+    }
 
-	/**
-	 * <pre>
-	 * when 
-	 * 		Foo( descr &amp;&amp; descr2 )
-	 * </pre>
-	 * 
-	 * result:<br>
-	 * descr && descr2
-	 */
-	public void testBasicAnd() {
-		VerifierRule rule = new VerifierRule();
-		Pattern pattern = new Pattern();
+    /**
+     * <pre>
+     * when 
+     * 		Foo( descr &amp;&amp; descr2 )
+     * </pre>
+     * 
+     * result:<br>
+     * descr && descr2
+     */
+    public void testBasicAnd() {
+        VerifierRule rule = new VerifierRule();
+        Pattern pattern = new Pattern();
 
-		Restriction r = new LiteralRestriction();
-		Restriction r2 = new LiteralRestriction();
+        Restriction r = new LiteralRestriction();
+        Restriction r2 = new LiteralRestriction();
 
-		OperatorDescr andDescr = new OperatorDescr(OperatorDescr.Type.AND);
-		Solvers solvers = new Solvers();
+        OperatorDescr andDescr = new OperatorDescr( OperatorDescr.Type.AND );
+        Solvers solvers = new Solvers();
 
-		solvers.startRuleSolver(rule);
-		solvers.startPatternSolver(pattern);
-		solvers.startOperator(OperatorDescr.Type.AND);
-		solvers.addRestriction(r);
-		solvers.addRestriction(r2);
-		solvers.endOperator();
-		solvers.endPatternSolver();
-		solvers.endRuleSolver();
+        solvers.startRuleSolver( rule );
+        solvers.startPatternSolver( pattern );
+        solvers.startOperator( OperatorDescr.Type.AND );
+        solvers.addRestriction( r );
+        solvers.addRestriction( r2 );
+        solvers.endOperator();
+        solvers.endPatternSolver();
+        solvers.endRuleSolver();
 
-		List<SubRule> list = solvers.getRulePossibilities();
-		assertEquals(1, list.size());
-		assertEquals(1, list.get(0).getItems().size());
+        List<SubRule> list = solvers.getRulePossibilities();
+        assertEquals( 1,
+                      list.size() );
+        assertEquals( 1,
+                      list.get( 0 ).getItems().size() );
 
-		List<Restriction> result = new ArrayList<Restriction>();
-		result.add(r);
-		result.add(r2);
+        List<Restriction> result = new ArrayList<Restriction>();
+        result.add( r );
+        result.add( r2 );
 
-		Set<Cause> set = list.get(0).getItems();
-		for (Cause cause : set) {
-			SubPattern possibility = (SubPattern) cause;
-			assertTrue(possibility.getItems().containsAll(result));
-		}
-	}
+        Set<RuleComponent> set = list.get( 0 ).getItems();
+        for ( RuleComponent component : set ) {
+            SubPattern possibility = (SubPattern) component;
+            assertTrue( possibility.getItems().containsAll( result ) );
+        }
+    }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -40,7 +40,7 @@
                       result.getBySeverity( Severity.ERROR ).size() );
         assertEquals( 10,
                       result.getBySeverity( Severity.WARNING ).size() );
-        assertEquals( 16,
+        assertEquals( 5,
                       result.getBySeverity( Severity.NOTE ).size() );
 
     }

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,58 +1,68 @@
 package org.drools.verifier.equivalence;
 
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
 
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.verifier.TestBase;
-import org.drools.verifier.components.VerifierRule;
+import junit.framework.TestCase;
+
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.ClassObjectFilter;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.VerifierError;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.builder.VerifierImpl;
 import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.data.VerifierReportFactory;
-import org.drools.verifier.redundancy.RedundancyTestBase;
+import org.drools.verifier.report.components.MessageType;
 import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.Subsumption;
+import org.drools.verifier.report.components.VerifierMessageBase;
 
-public class EquivalentRulesTest extends RedundancyTestBase {
+/**
+ * 
+ * @author Toni Rikkola
+ *
+ */
+public class EquivalentRulesTest extends TestCase {
 
-	public void testRuleRedundancy() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Rules.drl"));
+    public void testVerifierLiteralRestrictionRedundancy() throws Exception {
 
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find equivalent Rules"));
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
 
-		Collection<Object> data = new ArrayList<Object>();
+        Verifier verifier = vBuilder.newVerifier();
 
-		String ruleName1 = "Rule 1";
-		String ruleName2 = "Rule 2";
+        verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "EquivalentRules.drl",
+                                                                             getClass() ),
+                                       ResourceType.DRL );
 
-		VerifierRule rule1 = new VerifierRule();
-		rule1.setRuleName(ruleName1);
-		VerifierRule rule2 = new VerifierRule();
-		rule2.setRuleName(ruleName2);
+        for ( VerifierError error : verifier.getErrors() ) {
+            System.out.println( error.getMessage() );
+        }
 
-		Redundancy r1 = new Redundancy(rule1, rule2);
+        assertFalse( verifier.hasErrors() );
 
-		data.add(rule1);
-		data.add(rule2);
-		data.add(r1);
+        boolean noProblems = verifier.fireAnalysis();
+        assertTrue( noProblems );
 
-		VerifierReport result = VerifierReportFactory.newVerifierReport();
-		session.setGlobal("result", result);
+        VerifierReport result = verifier.getResult();
 
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
+        Collection<VerifierMessageBase> warnings = result.getBySeverity( Severity.WARNING );
 
-		Map<String, Set<String>> map = createRedundancyMap(sessionResult
-				.iterateObjects());
+        int counter = 0;
+        for ( VerifierMessageBase message : warnings ) {
+            //            System.out.println( message );
+            if ( message.getMessageType().equals( MessageType.EQUIVALANCE ) ) {
+                //                System.out.println( message );
+                counter++;
+            }
+        }
 
-		assertTrue(TestBase.mapContains(map, ruleName1, ruleName2));
-		assertTrue(TestBase.mapContains(map, ruleName2, ruleName1));
+        // Has at least one item.
+        assertEquals( 2,
+                      counter );
 
-		if (!map.isEmpty()) {
-			fail("More equivalences than was expected.");
-		}
-	}
+        verifier.dispose();
+    }
+
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityPatternsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityPatternsTest.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityPatternsTest.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -87,7 +87,7 @@
 		StatelessSessionResult sessionResult = session.executeWithResults(data);
 
 		Map<Cause, Set<Cause>> map = createIncompatibilityMap(
-				CauseType.PATTERN_POSSIBILITY, sessionResult.iterateObjects());
+				CauseType.SUB_PATTERN, sessionResult.iterateObjects());
 
 		assertTrue((TestBase.causeMapContains(map, pp1, pp2) ^ TestBase
 				.causeMapContains(map, pp2, pp1)));

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/PackageDescrVisitorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/PackageDescrVisitorTest.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/PackageDescrVisitorTest.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -8,6 +8,9 @@
 import org.drools.compiler.DroolsParserException;
 import org.drools.lang.descr.PackageDescr;
 import org.drools.verifier.Verifier;
+import org.drools.verifier.components.SubPattern;
+import org.drools.verifier.components.SubRule;
+import org.drools.verifier.components.VerifierComponentType;
 import org.drools.verifier.data.VerifierComponent;
 import org.drools.verifier.data.VerifierData;
 import org.drools.verifier.data.VerifierReportFactory;
@@ -34,12 +37,75 @@
         Collection<VerifierComponent> all = data.getAll();
 
         assertNotNull( all );
-        assertEquals( 49,
+        assertEquals( 50,
                       all.size() );
 
-//        for ( VerifierComponent verifierComponent : all ) {
-//            System.out.println( verifierComponent );
-//        }
+        //        for ( VerifierComponent verifierComponent : all ) {
+        //            System.out.println( verifierComponent );
+        //        }
     }
 
+    public void testSubPatterns() throws DroolsParserException,
+                                 UnknownDescriptionException {
+        PackageDescrVisitor visitor = new PackageDescrVisitor();
+        VerifierData data = VerifierReportFactory.newVerifierData();
+
+        assertNotNull( data );
+
+        Reader drlReader = new InputStreamReader( getClass().getResourceAsStream( "SubPattern.drl" ) );
+        PackageDescr packageDescr = new DrlParser().parse( drlReader );
+
+        assertNotNull( packageDescr );
+
+        visitor.addPackageDescrToData( packageDescr,
+                                       data );
+
+        Collection<VerifierComponent> all = data.getAll();
+
+        assertNotNull( all );
+
+        SubPattern test1SubPattern = null;
+        SubPattern test2SubPattern = null;
+        SubRule test1SubRule = null;
+        SubRule test2SubRule = null;
+
+        for ( VerifierComponent verifierComponent : all ) {
+            //            System.out.println( verifierComponent );
+
+            if ( verifierComponent.getVerifierComponentType().equals( VerifierComponentType.SUB_PATTERN ) ) {
+                SubPattern subPattern = (SubPattern) verifierComponent;
+                if ( "Test 1".equals( subPattern.getRuleName() ) ) {
+                    assertNull( test1SubPattern );
+                    test1SubPattern = subPattern;
+                } else if ( "Test 2".equals( subPattern.getRuleName() ) ) {
+                    assertNull( test2SubPattern );
+                    test2SubPattern = subPattern;
+                }
+            }
+            if ( verifierComponent.getVerifierComponentType().equals( VerifierComponentType.SUB_RULE ) ) {
+                SubRule subRule = (SubRule) verifierComponent;
+                if ( "Test 1".equals( subRule.getRuleName() ) ) {
+                    assertNull( test1SubRule );
+                    test1SubRule = subRule;
+                } else if ( "Test 2".equals( subRule.getRuleName() ) ) {
+                    assertNull( test2SubRule );
+                    test2SubRule = subRule;
+                }
+            }
+        }
+
+        assertNotNull( test1SubPattern );
+        assertEquals( 3,
+                      test1SubPattern.getItems().size() );
+        assertNotNull( test2SubPattern );
+        assertEquals( 3,
+                      test2SubPattern.getItems().size() );
+        assertNotNull( test1SubRule );
+        assertEquals( 1,
+                      test1SubRule.getItems().size() );
+        assertNotNull( test2SubRule );
+        assertEquals( 1,
+                      test2SubRule.getItems().size() );
+
+    }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositePatternsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositePatternsTest.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositePatternsTest.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -87,7 +87,7 @@
 		StatelessSessionResult sessionResult = session.executeWithResults(data);
 
 		Map<Cause, Set<Cause>> map = createOppositesMap(
-				CauseType.PATTERN_POSSIBILITY, sessionResult.iterateObjects());
+				CauseType.SUB_PATTERN, sessionResult.iterateObjects());
 
 		assertTrue((TestBase.causeMapContains(map, pp1, pp2) ^ TestBase
 				.causeMapContains(map, pp2, pp1)));

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/NotesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/NotesTest.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/NotesTest.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -12,90 +12,84 @@
 import org.drools.verifier.data.VerifierReport;
 import org.drools.verifier.data.VerifierReportFactory;
 import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
 import org.drools.verifier.report.components.Severity;
 import org.drools.verifier.report.components.VerifierMessageBase;
 
 public class NotesTest extends TestBase {
 
-	public void testRedundantRestrictionsInPatternPossibilities()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Notes.drl"));
+    public void testRedundantRestrictionsInPatternPossibilities() throws Exception {
+        StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Notes.drl" ) );
 
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find redundant restrictions from pattern possibilities"));
+        session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find redundant restrictions from pattern possibilities" ) );
 
-		Collection<Object> objects = new ArrayList<Object>();
-		LiteralRestriction left = new LiteralRestriction();
+        Collection<Object> objects = new ArrayList<Object>();
+        LiteralRestriction left = new LiteralRestriction();
 
-		LiteralRestriction right = new LiteralRestriction();
+        LiteralRestriction right = new LiteralRestriction();
 
-		Redundancy redundancy = new Redundancy(
-				RedundancyType.STRONG, left, right);
+        Redundancy redundancy = new Redundancy( left,
+                                                right );
 
-		SubPattern possibility = new SubPattern();
-		possibility.add(left);
-		possibility.add(right);
+        SubPattern possibility = new SubPattern();
+        possibility.add( left );
+        possibility.add( right );
 
-		objects.add(left);
-		objects.add(right);
-		objects.add(redundancy);
-		objects.add(possibility);
+        objects.add( left );
+        objects.add( right );
+        objects.add( redundancy );
+        objects.add( possibility );
 
-		VerifierReport result = VerifierReportFactory.newVerifierReport();
-		session.setGlobal("result", result);
+        VerifierReport result = VerifierReportFactory.newVerifierReport();
+        session.setGlobal( "result",
+                           result );
 
-		session.executeWithResults(objects);
+        session.executeWithResults( objects );
 
-		Collection<VerifierMessageBase> notes = result
-				.getBySeverity(Severity.NOTE);
+        Collection<VerifierMessageBase> notes = result.getBySeverity( Severity.NOTE );
 
-		// Has at least one item.
-		assertEquals(1, notes.size());
+        // Has at least one item.
+        assertEquals( 1,
+                      notes.size() );
 
-		VerifierMessageBase note = notes.iterator().next();
-		assertTrue(note.getFaulty().equals(redundancy));
-	}
+        VerifierMessageBase note = notes.iterator().next();
+        assertTrue( note.getFaulty().equals( redundancy ) );
+    }
 
-	public void testRedundantPatternPossibilitiesInRulePossibilities()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Notes.drl"));
+    public void testRedundantPatternPossibilitiesInRulePossibilities() throws Exception {
+        StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Notes.drl" ) );
 
-		session
-				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-						"Find redundant pattern possibilities from rule possibilities"));
+        session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find redundant pattern possibilities from rule possibilities" ) );
 
-		Collection<Object> objects = new ArrayList<Object>();
-		SubPattern left = new SubPattern();
+        Collection<Object> objects = new ArrayList<Object>();
+        SubPattern left = new SubPattern();
 
-		SubPattern right = new SubPattern();
+        SubPattern right = new SubPattern();
 
-		Redundancy redundancy = new Redundancy(
-				RedundancyType.STRONG, left, right);
+        Redundancy redundancy = new Redundancy( left,
+                                                right );
 
-		SubRule possibility = new SubRule();
-		possibility.add(left);
-		possibility.add(right);
+        SubRule possibility = new SubRule();
+        possibility.add( left );
+        possibility.add( right );
 
-		objects.add(left);
-		objects.add(right);
-		objects.add(redundancy);
-		objects.add(possibility);
+        objects.add( left );
+        objects.add( right );
+        objects.add( redundancy );
+        objects.add( possibility );
 
-		VerifierReport result = VerifierReportFactory.newVerifierReport();
-		session.setGlobal("result", result);
+        VerifierReport result = VerifierReportFactory.newVerifierReport();
+        session.setGlobal( "result",
+                           result );
 
-		session.executeWithResults(objects);
+        session.executeWithResults( objects );
 
-		Collection<VerifierMessageBase> notes = result
-				.getBySeverity(Severity.NOTE);
+        Collection<VerifierMessageBase> notes = result.getBySeverity( Severity.NOTE );
 
-		// Has at least one item.
-		assertEquals(1, notes.size());
+        // Has at least one item.
+        assertEquals( 1,
+                      notes.size() );
 
-		VerifierMessageBase note = notes.iterator().next();
-		assertTrue(note.getFaulty().equals(redundancy));
-	}
+        VerifierMessageBase note = notes.iterator().next();
+        assertTrue( note.getFaulty().equals( redundancy ) );
+    }
 }

Added: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundancyTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundancyTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundancyTest.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,49 @@
+package org.drools.verifier.redundancy;
+
+import java.util.Collection;
+
+import junit.framework.TestCase;
+
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.ClassObjectFilter;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.builder.VerifierImpl;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.Subsumption;
+
+/**
+ * 
+ * @author rikkola
+ *
+ */
+public class RedundancyTest extends TestCase {
+
+    public void testVerifierLiteralRestrictionRedundancy() throws Exception {
+
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+        Verifier verifier = vBuilder.newVerifier();
+
+        verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "RedundantRestrictions.drl",
+                                                                             getClass() ),
+                                       ResourceType.DRL );
+
+        assertFalse( verifier.hasErrors() );
+
+        boolean noProblems = verifier.fireAnalysis();
+        assertTrue( noProblems );
+
+        Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+        Collection<Object> redundancyList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Redundancy.class ) );
+
+        assertEquals( 2,
+                      subsumptionList.size() );
+        assertEquals( 1,
+                      redundancyList.size() );
+
+        verifier.dispose();
+    }
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundancyTestBase.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundancyTestBase.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundancyTestBase.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,118 +0,0 @@
-package org.drools.verifier.redundancy;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.verifier.TestBase;
-import org.drools.verifier.components.RuleComponent;
-import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
-import org.drools.verifier.report.components.Redundancy;
-
-/**
- *
- * @author Toni Rikkola
- *
- */
-public class RedundancyTestBase extends TestBase {
-
-    /**
-     * Creates redundancy map from Redundancy objects, one rule may have several
-     * redundancy dependencies.
-     *
-     * @param iter
-     * @return
-     */
-    protected Map<String, Set<String>> createRedundancyMap(Iterator<Object> iter) {
-
-        Map<String, Set<String>> map = new HashMap<String, Set<String>>();
-        while ( iter.hasNext() ) {
-            Object o = (Object) iter.next();
-            if ( o instanceof Redundancy ) {
-                Redundancy r = (Redundancy) o;
-                RuleComponent left = (RuleComponent) r.getLeft();
-                RuleComponent right = (RuleComponent) r.getRight();
-
-                if ( map.containsKey( left.getRuleName() ) ) {
-                    Set<String> set = map.get( left.getRuleName() );
-                    set.add( right.getRuleName() );
-                } else {
-                    Set<String> set = new HashSet<String>();
-                    set.add( right.getRuleName() );
-                    map.put( left.getRuleName(),
-                             set );
-                }
-            }
-        }
-
-        return map;
-    }
-
-    /**
-     * Creates redundancy map from Redundancy objects, one rule may have several
-     * redundancy dependencies.
-     *
-     * @param iter
-     * @return
-     */
-    protected Map<Cause, Set<Cause>> createRedundancyCauseMap(CauseType type,
-                                                              Iterator<Object> iter) {
-
-        Map<Cause, Set<Cause>> map = new HashMap<Cause, Set<Cause>>();
-        while ( iter.hasNext() ) {
-            Object o = (Object) iter.next();
-            if ( o instanceof Redundancy ) {
-                Redundancy r = (Redundancy) o;
-
-                if ( r.getLeft().getCauseType() == type ) {
-                    Cause left = r.getLeft();
-                    Cause right = r.getRight();
-
-                    if ( map.containsKey( left ) ) {
-                        Set<Cause> set = map.get( left );
-                        set.add( right );
-                    } else {
-                        Set<Cause> set = new HashSet<Cause>();
-                        set.add( right );
-                        map.put( left,
-                                 set );
-                    }
-                }
-            }
-        }
-
-        return map;
-    }
-
-    public void testDummy() {
-        // this is needed as eclipse will try to run this and produce a failure
-        // if its not here.
-    }
-
-    /**
-     * Returns true if map contains redundancy where key is redundant to value.
-     *
-     * @param map
-     * @param key
-     * @param value
-     * @return True if redundancy exists.
-     */
-    protected static boolean mapContains(Map<String, Set<Redundancy>> map,
-                                         String key,
-                                         Object value) {
-        if ( map.containsKey( key ) ) {
-            Set<Redundancy> set = map.get( key );
-            boolean exists = set.remove( value );
-
-            // If set is empty remove key from map.
-            if ( set.isEmpty() ) {
-                map.remove( key );
-            }
-            return exists;
-        }
-        return false;
-    }
-}

Deleted: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantConsequencesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantConsequencesTest.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantConsequencesTest.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,55 +0,0 @@
-package org.drools.verifier.redundancy;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.verifier.TestBase;
-import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.data.VerifierReportFactory;
-
-public class RedundantConsequencesTest extends RedundancyTestBase {
-
-	public void testRedundantTextConsequences() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Consequence.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find redundant TextConsequences"));
-
-		VerifierReport result = VerifierReportFactory.newVerifierReport();
-		Collection<? extends Object> data = getTestData(this.getClass()
-				.getResourceAsStream("ConsequenceRedundancyTest.drl"), result
-				.getVerifierData());
-
-		session.setGlobal("result", result);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<String, Set<String>> map = createRedundancyMap(sessionResult
-				.iterateObjects());
-
-		assertTrue(TestBase.mapContains(map, "Redundant consiquence 1a",
-				"Redundant consiquence 1b"));
-		assertTrue(TestBase.mapContains(map, "Redundant consiquence 1b",
-				"Redundant consiquence 1a"));
-
-		assertTrue(TestBase.mapContains(map, "Redundant consiquence 2a",
-				"Redundant consiquence 2b"));
-		assertTrue(TestBase.mapContains(map, "Redundant consiquence 2b",
-				"Redundant consiquence 2a"));
-
-		assertTrue(TestBase.mapContains(map, "Redundant consiquence 3a",
-				"Redundant consiquence 3b"));
-		assertTrue(TestBase.mapContains(map, "Redundant consiquence 3b",
-				"Redundant consiquence 3a"));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-
-}

Deleted: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantPossibilitiesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantPossibilitiesTest.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantPossibilitiesTest.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,207 +0,0 @@
-package org.drools.verifier.redundancy;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.verifier.TestBase;
-import org.drools.verifier.components.LiteralRestriction;
-import org.drools.verifier.components.Pattern;
-import org.drools.verifier.components.SubPattern;
-import org.drools.verifier.components.SubRule;
-import org.drools.verifier.components.VerifierRule;
-import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.data.VerifierReportFactory;
-import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
-
-public class RedundantPossibilitiesTest extends RedundancyTestBase {
-
-    public void testSubPatternRedundancy() throws Exception {
-        StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Possibilities.drl" ) );
-
-        session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find pattern possibility redundancy" ) );
-
-        Collection<Object> data = new ArrayList<Object>();
-
-        VerifierReport result = VerifierReportFactory.newVerifierReport();
-        session.setGlobal( "result",
-                           result );
-
-        String ruleName1 = "Rule 1";
-        String ruleName2 = "Rule 2";
-
-        Pattern p1 = new Pattern();
-        p1.setRuleName( ruleName1 );
-        Pattern p2 = new Pattern();
-        p2.setRuleName( ruleName2 );
-
-        LiteralRestriction lr1 = new LiteralRestriction();
-        lr1.setRuleName( ruleName1 );
-        LiteralRestriction lr2 = new LiteralRestriction();
-        lr2.setRuleName( ruleName2 );
-
-        SubPattern pp1 = new SubPattern();
-        pp1.setPatternGuid( p1.getGuid() );
-        pp1.setRuleName( ruleName1 );
-        pp1.add( lr1 );
-
-        SubPattern pp2 = new SubPattern();
-        pp2.setPatternGuid( p2.getGuid() );
-        pp2.setRuleName( ruleName2 );
-        pp2.add( lr2 );
-
-        Redundancy r1 = new Redundancy( lr1,
-                                        lr2 );
-        Redundancy r2 = new Redundancy( p1,
-                                        p2 );
-
-        data.add( p1 );
-        data.add( p2 );
-        data.add( lr1 );
-        data.add( lr2 );
-        data.add( pp1 );
-        data.add( pp2 );
-        data.add( r1 );
-        data.add( r2 );
-
-        StatelessSessionResult sessionResult = session.executeWithResults( data );
-
-        Map<String, Set<String>> map = createRedundancyMap( sessionResult.iterateObjects() );
-
-        assertTrue( TestBase.mapContains( map,
-                                          ruleName1,
-                                          ruleName2 ) );
-        assertTrue( TestBase.mapContains( map,
-                                          ruleName2,
-                                          ruleName1 ) );
-
-        if ( !map.isEmpty() ) {
-            fail( "More redundancies than was expected." );
-        }
-    }
-
-    public void testSubRuleRedundancy() throws Exception {
-        StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Possibilities.drl" ) );
-
-        session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find rule possibility redundancy" ) );
-
-        Collection<Object> data = new ArrayList<Object>();
-
-        VerifierReport result = VerifierReportFactory.newVerifierReport();
-        session.setGlobal( "result",
-                           result );
-
-        /*
-         * First rules. These are redundant,
-         */
-        String ruleName1 = "Rule 1";
-        String ruleName2 = "Rule 2";
-
-        VerifierRule r1 = new VerifierRule();
-        r1.setRuleName( ruleName1 );
-        VerifierRule r2 = new VerifierRule();
-        r2.setRuleName( ruleName2 );
-
-        SubPattern pp1 = new SubPattern();
-        pp1.setRuleName( ruleName1 );
-        SubPattern pp2 = new SubPattern();
-        pp2.setRuleName( ruleName2 );
-
-        SubRule rp1 = new SubRule();
-        rp1.setRuleGuid( r1.getGuid() );
-        rp1.setRuleName( ruleName1 );
-        rp1.add( pp1 );
-
-        SubRule rp2 = new SubRule();
-        rp2.setRuleGuid( r2.getGuid() );
-        rp2.setRuleName( ruleName2 );
-        rp2.add( pp2 );
-
-        Redundancy possibilityredundancy = new Redundancy( RedundancyType.STRONG,
-                                                           pp1,
-                                                           pp2 );
-        Redundancy ruleRedundancy = new Redundancy( r1,
-                                                    r2 );
-
-        data.add( r1 );
-        data.add( r2 );
-        data.add( pp1 );
-        data.add( pp2 );
-        data.add( possibilityredundancy );
-        data.add( ruleRedundancy );
-        data.add( rp1 );
-        data.add( rp2 );
-
-        /*
-         * These two rules are not redundant
-         */
-        String ruleName3 = "Rule 3";
-        String ruleName4 = "Rule 4";
-
-        VerifierRule r3 = new VerifierRule();
-        r3.setRuleName( ruleName3 );
-        VerifierRule r4 = new VerifierRule();
-        r4.setRuleName( ruleName4 );
-
-        SubPattern pp3 = new SubPattern();
-        pp3.setRuleGuid( r3.getGuid() );
-        pp3.setRuleName( ruleName3 );
-        SubPattern pp4 = new SubPattern();
-        pp4.setRuleGuid( r4.getGuid() );
-        pp4.setRuleName( ruleName4 );
-        // This possibility makes them different
-        SubPattern pp5 = new SubPattern();
-        pp5.setRuleGuid( r4.getGuid() );
-        pp5.setRuleName( ruleName4 );
-
-        SubRule rp3 = new SubRule();
-        rp3.setRuleGuid( r3.getGuid() );
-        rp3.setRuleName( ruleName3 );
-        rp3.add( pp3 );
-
-        SubRule rp4 = new SubRule();
-        rp4.setRuleGuid( r4.getGuid() );
-        rp4.setRuleName( ruleName4 );
-        rp4.add( pp4 );
-        rp4.add( pp5 );
-
-        Redundancy possibilityredundancy2 = new Redundancy( RedundancyType.STRONG,
-                                                            pp3,
-                                                            pp4 );
-        Redundancy ruleRedundancy2 = new Redundancy( r3,
-                                                     r4 );
-
-        data.add( r3 );
-        data.add( r4 );
-        data.add( pp3 );
-        data.add( pp4 );
-        data.add( pp5 );
-        data.add( possibilityredundancy2 );
-        data.add( ruleRedundancy2 );
-        data.add( rp3 );
-        data.add( rp4 );
-
-        StatelessSessionResult sessionResult = session.executeWithResults( data );
-
-        Map<Cause, Set<Cause>> map = createRedundancyCauseMap( CauseType.RULE_POSSIBILITY,
-                                                               sessionResult.iterateObjects() );
-
-        assertTrue( TestBase.causeMapContains( map,
-                                               rp1,
-                                               rp2 ) );
-        assertFalse( TestBase.causeMapContains( map,
-                                                rp3,
-                                                rp4 ) );
-
-        if ( !map.isEmpty() ) {
-            fail( "More redundancies than was expected." );
-        }
-    }
-}

Deleted: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantRestrictionsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantRestrictionsTest.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantRestrictionsTest.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,80 +0,0 @@
-package org.drools.verifier.redundancy;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.verifier.TestBase;
-import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.data.VerifierReportFactory;
-
-public class RedundantRestrictionsTest extends RedundancyTestBase {
-
-	public void testVerifierLiteralRestrictionRedundancy() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find redundant LiteralRestriction"));
-
-		VerifierReport result = VerifierReportFactory.newVerifierReport();
-		Collection<? extends Object> data = getTestData(this.getClass()
-				.getResourceAsStream("RedundancyLiteralRestrictionTest.drl"),
-				result.getVerifierData());
-
-		session.setGlobal("result", result);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<String, Set<String>> map = createRedundancyMap(sessionResult
-				.iterateObjects());
-
-		assertTrue((TestBase.mapContains(map, "Redundant 1a", "Redundant 1b") ^ TestBase
-				.mapContains(map, "Redundant 1b", "Redundant 1a")));
-		assertTrue((TestBase.mapContains(map, "Redundant 2a", "Redundant 2b") ^ TestBase
-				.mapContains(map, "Redundant 2b", "Redundant 2a")));
-		assertTrue((TestBase.mapContains(map, "Redundant 3a", "Redundant 3b") ^ TestBase
-				.mapContains(map, "Redundant 3b", "Redundant 3a")));
-		assertTrue((TestBase.mapContains(map, "Redundant 4a", "Redundant 4b") ^ TestBase
-				.mapContains(map, "Redundant 4b", "Redundant 4a")));
-		assertTrue((TestBase.mapContains(map, "Redundant 5a", "Redundant 5b") ^ TestBase
-				.mapContains(map, "Redundant 5b", "Redundant 5a")));
-		assertTrue((TestBase.mapContains(map, "Redundant 6a", "Redundant 6b") ^ TestBase
-				.mapContains(map, "Redundant 6b", "Redundant 6a")));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-
-	public void testVerifierVariableRestrictionRedundancy() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find redundant VariableRestriction"));
-
-		VerifierReport result = VerifierReportFactory.newVerifierReport();
-		Collection<? extends Object> data = getTestData(this.getClass()
-				.getResourceAsStream("SubsumptionVariableRestrictionTest.drl"),
-				result.getVerifierData());
-
-		session.setGlobal("result", result);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<String, Set<String>> map = createRedundancyMap(sessionResult
-				.iterateObjects());
-
-		assertTrue(TestBase.mapContains(map, "Redundant 1a", "Redundant 1b")
-				^ TestBase.mapContains(map, "Redundant 1b", "Redundant 1a"));
-		assertTrue(TestBase.mapContains(map, "Redundant 2a", "Redundant 2a"));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-}

Deleted: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantRulesAndPatternsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantRulesAndPatternsTest.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantRulesAndPatternsTest.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,166 +0,0 @@
-package org.drools.verifier.redundancy;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.verifier.TestBase;
-import org.drools.verifier.components.TextConsequence;
-import org.drools.verifier.components.VerifierRule;
-import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.data.VerifierReportFactory;
-import org.drools.verifier.report.components.Redundancy;
-
-public class RedundantRulesAndPatternsTest extends RedundancyTestBase {
-
-	public void testRuleRedundancy() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Rules.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find redundant Rules, strong redundancy"));
-
-		Collection<Object> data = new ArrayList<Object>();
-
-		String ruleName1 = "Rule 1";
-		String ruleName2 = "Rule 2";
-
-		VerifierRule rule1 = new VerifierRule();
-		rule1.setRuleName(ruleName1);
-		VerifierRule rule2 = new VerifierRule();
-		rule2.setRuleName(ruleName2);
-
-		TextConsequence c1 = new TextConsequence();
-		c1.setRuleName(ruleName1);
-		TextConsequence c2 = new TextConsequence();
-		c2.setRuleName(ruleName2);
-
-		Redundancy r1 = new Redundancy(rule1, rule2);
-		Redundancy r2 = new Redundancy(c1, c2);
-
-		data.add(rule1);
-		data.add(rule2);
-		data.add(c1);
-		data.add(c2);
-		data.add(r1);
-		data.add(r2);
-
-		VerifierReport result = VerifierReportFactory.newVerifierReport();
-		session.setGlobal("result", result);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<String, Set<String>> map = createRedundancyMap(sessionResult
-				.iterateObjects());
-
-		assertTrue(TestBase.mapContains(map, ruleName1, ruleName2)
-				^ TestBase.mapContains(map, ruleName2, ruleName1));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-
-	public void testPatternRedundancyWithRestrictions() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Patterns.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find redundant Patterns with restrictions"));
-
-		VerifierReport result = VerifierReportFactory.newVerifierReport();
-		Collection<? extends Object> data = getTestData(this.getClass()
-				.getResourceAsStream("PatternRedundancyTest.drl"), result
-				.getVerifierData());
-
-		session.setGlobal("result", result);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<String, Set<String>> map = createRedundancyMap(sessionResult
-				.iterateObjects());
-
-		assertTrue(TestBase.mapContains(map,
-				"Pattern redundancy with restrictions 1a",
-				"Pattern redundancy with restrictions 1b")
-				^ TestBase.mapContains(map,
-						"Pattern redundancy with restrictions 1b",
-						"Pattern redundancy with restrictions 1a"));
-		assertTrue(TestBase.mapContains(map,
-				"Pattern redundancy with restrictions 2a",
-				"Pattern redundancy with restrictions 2b")
-				^ TestBase.mapContains(map,
-						"Pattern redundancy with restrictions 2b",
-						"Pattern redundancy with restrictions 2a"));
-		assertTrue(TestBase.mapContains(map,
-				"Pattern redundancy with restrictions 3a",
-				"Pattern redundancy with restrictions 3b")
-				^ TestBase.mapContains(map,
-						"Pattern redundancy with restrictions 3b",
-						"Pattern redundancy with restrictions 3a"));
-		assertTrue(TestBase.mapContains(map,
-				"Pattern redundancy with restrictions 4a",
-				"Pattern redundancy with restrictions 4b")
-				^ TestBase.mapContains(map,
-						"Pattern redundancy with restrictions 4b",
-						"Pattern redundancy with restrictions 4a"));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-
-	public void testPatternRedundancyWithoutRestrictions() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Patterns.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find redundant Patterns without restrictions"));
-
-		VerifierReport result = VerifierReportFactory.newVerifierReport();
-		Collection<? extends Object> data = getTestData(this.getClass()
-				.getResourceAsStream("PatternRedundancyTest.drl"), result
-				.getVerifierData());
-
-		session.setGlobal("result", result);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<String, Set<String>> map = createRedundancyMap(sessionResult
-				.iterateObjects());
-
-		assertTrue(TestBase.mapContains(map,
-				"Pattern redundancy without restrictions 1a",
-				"Pattern redundancy without restrictions 1b")
-				^ TestBase.mapContains(map,
-						"Pattern redundancy without restrictions 1b",
-						"Pattern redundancy without restrictions 1a"));
-		assertTrue(TestBase.mapContains(map,
-				"Pattern redundancy without restrictions 2a",
-				"Pattern redundancy without restrictions 2b")
-				^ TestBase.mapContains(map,
-						"Pattern redundancy without restrictions 2b",
-						"Pattern redundancy without restrictions 2a"));
-		assertTrue(TestBase.mapContains(map,
-				"Pattern redundancy without restrictions 3a",
-				"Pattern redundancy without restrictions 3b")
-				^ TestBase.mapContains(map,
-						"Pattern redundancy without restrictions 3b",
-						"Pattern redundancy without restrictions 3a"));
-		assertTrue(TestBase.mapContains(map,
-				"Pattern redundancy without restrictions 4a",
-				"Pattern redundancy without restrictions 4b")
-				^ TestBase.mapContains(map,
-						"Pattern redundancy without restrictions 4b",
-						"Pattern redundancy without restrictions 4a"));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-
-}

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/WarningsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/WarningsTest.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/WarningsTest.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,118 +1,56 @@
 package org.drools.verifier.redundancy;
 
-import java.util.ArrayList;
 import java.util.Collection;
 
-import org.drools.StatelessSession;
-import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
 import org.drools.verifier.TestBase;
-import org.drools.verifier.components.SubRule;
-import org.drools.verifier.components.VerifierRule;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.VerifierError;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
 import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.data.VerifierReportFactory;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
+import org.drools.verifier.report.components.MessageType;
 import org.drools.verifier.report.components.Severity;
 import org.drools.verifier.report.components.VerifierMessageBase;
 
 public class WarningsTest extends TestBase {
 
     public void testRedundantRules() throws Exception {
-        StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Warnings.drl" ) );
 
-        session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find redundant rule possibilities from different rules" ) );
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
 
-        Collection<Object> objects = new ArrayList<Object>();
+        Verifier verifier = vBuilder.newVerifier();
 
-        VerifierRule rule1 = new VerifierRule();
-        VerifierRule rule2 = new VerifierRule();
+        verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "RedundantRules1.drl",
+                                                                             getClass() ),
+                                       ResourceType.DRL );
 
-        Redundancy ruleRedundancy = new Redundancy( RedundancyType.STRONG,
-                                                    rule1,
-                                                    rule2 );
+        for ( VerifierError error : verifier.getErrors() ) {
+            System.out.println( error.getMessage() );
+        }
 
-        SubRule rp1 = new SubRule();
-        rp1.setRuleGuid( rule1.getGuid() );
+        assertFalse( verifier.hasErrors() );
 
-        SubRule rp2 = new SubRule();
-        rp2.setRuleGuid( rule2.getGuid() );
+        boolean noProblems = verifier.fireAnalysis();
+        assertTrue( noProblems );
 
-        Redundancy rulePossibilityRedundancy1 = new Redundancy( RedundancyType.STRONG,
-                                                                rp1,
-                                                                rp2 );
+        VerifierReport result = verifier.getResult();
 
-        Redundancy rulePossibilityRedundancy2 = new Redundancy( RedundancyType.STRONG,
-                                                                rp2,
-                                                                rp1 );
+        Collection<VerifierMessageBase> warnings = result.getBySeverity( Severity.WARNING );
 
-        objects.add( rule1 );
-        objects.add( rule2 );
-        objects.add( ruleRedundancy );
-        objects.add( rp1 );
-        objects.add( rp2 );
-        objects.add( rulePossibilityRedundancy1 );
-        objects.add( rulePossibilityRedundancy2 );
+        int counter = 0;
+        for ( VerifierMessageBase message : warnings ) {
+            //            System.out.println( message );
+            if ( message.getMessageType().equals( MessageType.REDUNDANCY ) ) {
+                //                System.out.println( message );
+                counter++;
+            }
+        }
 
-        VerifierReport result = VerifierReportFactory.newVerifierReport();
-        session.setGlobal( "result",
-                           result );
+        assertEquals( 2,
+                      counter );
 
-        session.executeWithResults( objects );
-
-        Collection<VerifierMessageBase> notes = result.getBySeverity( Severity.WARNING );
-
-        // Has at least one item.
-        assertEquals( 1,
-                      notes.size() );
-
-        VerifierMessageBase warning = notes.iterator().next();
-        assertTrue( warning.getFaulty().equals( rulePossibilityRedundancy1 ) );
+        verifier.dispose();
     }
-
-    public void testSubsumptantRules() throws Exception {
-        StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Warnings.drl" ) );
-
-        session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find subsumptant rule possibilities from different rules" ) );
-
-        Collection<Object> objects = new ArrayList<Object>();
-
-        VerifierRule rule1 = new VerifierRule();
-        VerifierRule rule2 = new VerifierRule();
-
-        Redundancy ruleRedundancy = new Redundancy( RedundancyType.STRONG,
-                                                    rule1,
-                                                    rule2 );
-
-        SubRule rp1 = new SubRule();
-        rp1.setRuleGuid( rule1.getGuid() );
-
-        SubRule rp2 = new SubRule();
-        rp2.setRuleGuid( rule2.getGuid() );
-
-        Redundancy rulePossibilityRedundancy1 = new Redundancy( RedundancyType.STRONG,
-                                                                rp1,
-                                                                rp2 );
-
-        objects.add( rule1 );
-        objects.add( rule2 );
-        objects.add( ruleRedundancy );
-        objects.add( rp1 );
-        objects.add( rp2 );
-        objects.add( rulePossibilityRedundancy1 );
-
-        VerifierReport result = VerifierReportFactory.newVerifierReport();
-        session.setGlobal( "result",
-                           result );
-
-        session.executeWithResults( objects );
-
-        Collection<VerifierMessageBase> notes = result.getBySeverity( Severity.WARNING );
-
-        // Has at least one item.
-        assertEquals( 1,
-                      notes.size() );
-
-        VerifierMessageBase warning = notes.iterator().next();
-        assertTrue( warning.getFaulty().equals( rulePossibilityRedundancy1 ) );
-    }
 }

Deleted: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantPossibilitiesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantPossibilitiesTest.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantPossibilitiesTest.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,318 +0,0 @@
-package org.drools.verifier.subsumption;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.verifier.TestBase;
-import org.drools.verifier.components.LiteralRestriction;
-import org.drools.verifier.components.Pattern;
-import org.drools.verifier.components.SubPattern;
-import org.drools.verifier.components.SubRule;
-import org.drools.verifier.components.VerifierRule;
-import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.data.VerifierReportFactory;
-import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
-import org.drools.verifier.report.components.Subsumption;
-
-public class SubsumptantPossibilitiesTest extends SubsumptionTestBase {
-
-    public void testSubPatternRedundancy1() throws Exception {
-        StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Possibilities.drl" ) );
-
-        session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find subsumptant pattern possibilities" ) );
-
-        Collection<Object> data = new ArrayList<Object>();
-
-        VerifierReport result = VerifierReportFactory.newVerifierReport();
-        session.setGlobal( "result",
-                           result );
-
-        /*
-         * Redundant patterns
-         */
-        String ruleName1 = "Rule 1";
-        String ruleName2 = "Rule 2";
-
-        Pattern p1 = new Pattern();
-        p1.setRuleName( ruleName1 );
-        Pattern p2 = new Pattern();
-        p2.setRuleName( ruleName2 );
-
-        LiteralRestriction lr1 = new LiteralRestriction();
-        lr1.setRuleName( ruleName1 );
-        lr1.setOrderNumber( 0 );
-        LiteralRestriction lr2 = new LiteralRestriction();
-        lr2.setRuleName( ruleName2 );
-        lr2.setOrderNumber( 0 );
-        LiteralRestriction lr3 = new LiteralRestriction();
-        lr3.setRuleName( ruleName2 );
-        lr3.setOrderNumber( 1 );
-
-        SubPattern pp1 = new SubPattern();
-        pp1.setPatternGuid( p1.getGuid() );
-        pp1.setRuleName( ruleName1 );
-        pp1.add( lr1 );
-
-        SubPattern pp2 = new SubPattern();
-        pp2.setPatternGuid( p2.getGuid() );
-        pp2.setRuleName( ruleName2 );
-        pp2.add( lr2 );
-        pp2.add( lr3 );
-
-        Redundancy r1 = new Redundancy( lr1,
-                                        lr2 );
-        Redundancy r2 = new Redundancy( p1,
-                                        p2 );
-
-        data.add( p1 );
-        data.add( p2 );
-        data.add( lr1 );
-        data.add( lr2 );
-        data.add( lr3 );
-        data.add( pp1 );
-        data.add( pp2 );
-        data.add( r1 );
-        data.add( r2 );
-
-        StatelessSessionResult sessionResult = session.executeWithResults( data );
-
-        Map<Cause, Set<Cause>> map = createSubsumptionMap( sessionResult.iterateObjects() );
-
-        assertTrue( TestBase.causeMapContains( map,
-                                               pp1,
-                                               pp2 ) );
-
-        if ( !map.isEmpty() ) {
-            fail( "More redundancies than was expected." );
-        }
-    }
-
-    public void testSubPatternRedundancy2() throws Exception {
-        StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Possibilities.drl" ) );
-
-        session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find subsumptant pattern possibilities" ) );
-
-        Collection<Object> data = new ArrayList<Object>();
-
-        VerifierReport result = VerifierReportFactory.newVerifierReport();
-        session.setGlobal( "result",
-                           result );
-
-        /*
-         * Not redundant patterns
-         * 
-         * For example: Pattern ( a==1, b==1, c==1) and Pattern ( a==1, c==1)
-         */
-        String ruleName1 = "Rule 1";
-        String ruleName2 = "Rule 2";
-
-        Pattern p1 = new Pattern();
-        p1.setRuleName( ruleName1 );
-        Pattern p2 = new Pattern();
-        p2.setRuleName( ruleName2 );
-
-        LiteralRestriction lr1 = new LiteralRestriction();
-        lr1.setRuleName( ruleName1 );
-        lr1.setOrderNumber( 0 );
-        LiteralRestriction lr2 = new LiteralRestriction();
-        lr2.setRuleName( ruleName2 );
-        lr2.setOrderNumber( 0 );
-        LiteralRestriction lr3 = new LiteralRestriction();
-        lr3.setRuleName( ruleName2 );
-        lr3.setOrderNumber( 1 );
-
-        SubPattern pp1 = new SubPattern();
-        pp1.setPatternGuid( p1.getGuid() );
-        pp1.setRuleName( ruleName1 );
-        pp1.add( lr1 );
-
-        SubPattern pp2 = new SubPattern();
-        pp2.setPatternGuid( p2.getGuid() );
-        pp2.setRuleName( ruleName2 );
-        pp2.add( lr2 );
-        pp2.add( lr3 );
-
-        Redundancy r1 = new Redundancy( lr1,
-                                        lr3 );
-        Redundancy r2 = new Redundancy( p1,
-                                        p2 );
-
-        data.add( p1 );
-        data.add( p2 );
-        data.add( lr1 );
-        data.add( lr2 );
-        data.add( lr3 );
-        data.add( pp1 );
-        data.add( pp2 );
-        data.add( r1 );
-        data.add( r2 );
-
-        StatelessSessionResult sessionResult = session.executeWithResults( data );
-
-        Map<Cause, Set<Cause>> map = createSubsumptionMap( sessionResult.iterateObjects() );
-
-        assertFalse( TestBase.causeMapContains( map,
-                                                pp1,
-                                                pp2 ) );
-
-        if ( !map.isEmpty() ) {
-            fail( "More redundancies than was expected." );
-        }
-    }
-
-    public void testSubRuleRedundancy1() throws Exception {
-        StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Possibilities.drl" ) );
-
-        session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find subsumptant rule possibilities" ) );
-
-        Collection<Object> data = new ArrayList<Object>();
-
-        VerifierReport result = VerifierReportFactory.newVerifierReport();
-        session.setGlobal( "result",
-                           result );
-
-        /*
-         * First rules. These are subsumptant,
-         */
-        String ruleName1 = "Rule 1";
-        String ruleName2 = "Rule 2";
-
-        VerifierRule r1 = new VerifierRule();
-        r1.setRuleName( ruleName1 );
-        VerifierRule r2 = new VerifierRule();
-        r2.setRuleName( ruleName2 );
-
-        SubPattern pp1 = new SubPattern();
-        pp1.setRuleName( ruleName1 );
-        SubPattern pp2 = new SubPattern();
-        pp2.setRuleName( ruleName2 );
-        SubPattern pp3 = new SubPattern();
-        pp3.setRuleName( ruleName2 );
-
-        SubRule rp1 = new SubRule();
-        rp1.setRuleGuid( r1.getGuid() );
-        rp1.setRuleName( ruleName1 );
-        rp1.add( pp1 );
-
-        SubRule rp2 = new SubRule();
-        rp2.setRuleGuid( r2.getGuid() );
-        rp2.setRuleName( ruleName2 );
-        rp2.add( pp2 );
-        rp2.add( pp3 );
-
-        Redundancy possibilityredundancy = new Redundancy( RedundancyType.STRONG,
-                                                           pp1,
-                                                           pp2 );
-        Redundancy ruleRedundancy = new Redundancy( r1,
-                                                    r2 );
-
-        data.add( r1 );
-        data.add( r2 );
-        data.add( pp1 );
-        data.add( pp2 );
-        data.add( pp3 );
-        data.add( possibilityredundancy );
-        data.add( ruleRedundancy );
-        data.add( rp1 );
-        data.add( rp2 );
-
-        StatelessSessionResult sessionResult = session.executeWithResults( data );
-
-        Map<Cause, Set<Cause>> map = createSubsumptionMap( sessionResult.iterateObjects() );
-
-        assertTrue( TestBase.causeMapContains( map,
-                                               rp1,
-                                               rp2 ) );
-
-        if ( !map.isEmpty() ) {
-            fail( "More redundancies than was expected." );
-        }
-    }
-
-    public void testSubRuleRedundancy2() throws Exception {
-        StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Possibilities.drl" ) );
-
-        session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find subsumptant rule possibilities" ) );
-        //		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-        //				"XXX: test rule"));
-
-        Collection<Object> data = new ArrayList<Object>();
-
-        VerifierReport result = VerifierReportFactory.newVerifierReport();
-        session.setGlobal( "result",
-                           result );
-
-        /*
-         * First rules. These are subsumptant,
-         */
-        String ruleName1 = "Rule 1";
-        String ruleName2 = "Rule 2";
-
-        VerifierRule r1 = new VerifierRule();
-        r1.setRuleName( ruleName1 );
-        VerifierRule r2 = new VerifierRule();
-        r2.setRuleName( ruleName2 );
-
-        SubPattern pp1 = new SubPattern();
-        pp1.setRuleName( ruleName1 );
-        SubPattern pp2 = new SubPattern();
-        pp2.setRuleName( ruleName1 );
-        SubPattern pp3 = new SubPattern();
-        pp3.setRuleName( ruleName2 );
-        SubPattern pp4 = new SubPattern();
-        pp4.setRuleName( ruleName2 );
-
-        SubRule rp1 = new SubRule();
-        rp1.setRuleGuid( r1.getGuid() );
-        rp1.setRuleName( ruleName1 );
-        rp1.add( pp1 );
-        rp1.add( pp2 );
-
-        SubRule rp2 = new SubRule();
-        rp2.setRuleGuid( r2.getGuid() );
-        rp2.setRuleName( ruleName2 );
-        rp2.add( pp3 );
-        rp2.add( pp4 );
-
-        Redundancy possibilityredundancy = new Redundancy( RedundancyType.STRONG,
-                                                           pp1,
-                                                           pp3 );
-        Subsumption possibilitysubsupmtion = new Subsumption( pp2,
-                                                              pp4 );
-        Redundancy ruleRedundancy = new Redundancy( r1,
-                                                    r2 );
-
-        data.add( r1 );
-        data.add( r2 );
-        data.add( pp1 );
-        data.add( pp2 );
-        data.add( pp3 );
-        data.add( possibilityredundancy );
-        data.add( possibilitysubsupmtion );
-        data.add( ruleRedundancy );
-        data.add( rp1 );
-        data.add( rp2 );
-
-        StatelessSessionResult sessionResult = session.executeWithResults( data );
-
-        Map<Cause, Set<Cause>> map = createSubsumptionMap( sessionResult.iterateObjects() );
-
-        assertTrue( TestBase.causeMapContains( map,
-                                               rp1,
-                                               rp2 ) );
-        assertTrue( TestBase.causeMapContains( map,
-                                               pp2,
-                                               pp4 ) );
-
-        if ( !map.isEmpty() ) {
-            fail( "More redundancies than was expected." );
-        }
-    }
-}

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantRestrictionsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantRestrictionsTest.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantRestrictionsTest.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,190 +1,99 @@
 package org.drools.verifier.subsumption;
 
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
 
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.base.evaluators.Operator;
-import org.drools.verifier.TestBase;
-import org.drools.verifier.components.Field;
-import org.drools.verifier.components.LiteralRestriction;
-import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.data.VerifierReportFactory;
-import org.drools.verifier.report.components.Cause;
+import junit.framework.TestCase;
 
-public class SubsumptantRestrictionsTest extends SubsumptionTestBase {
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.ClassObjectFilter;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.VerifierError;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.builder.VerifierImpl;
+import org.drools.verifier.report.components.Subsumption;
 
-    public void testRestrictionRedundancyGreater() throws Exception {
-        StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Restrictions.drl" ) );
+public class SubsumptantRestrictionsTest extends TestCase {
 
-        session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find subsumptant restrictions, greater than" ) );
+    public void testVerifierLiteralRestrictionRedundancy1() throws Exception {
 
-        Collection<Object> data = new ArrayList<Object>();
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
 
-        VerifierReport result = VerifierReportFactory.newVerifierReport();
-        session.setGlobal( "result",
-                           result );
+        Verifier verifier = vBuilder.newVerifier();
 
-        /*
-         * Redundant restrictions
-         */
-        // Doubles
-        Field field1 = new Field();
+        verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantRestriction1.drl",
+                                                                             getClass() ),
+                                       ResourceType.DRL );
 
-        LiteralRestriction lr1 = new LiteralRestriction();
-        lr1.setOrderNumber( 0 );
-        lr1.setFieldGuid( field1.getGuid() );
-        lr1.setValue( "1.0" );
-        lr1.setOperator( Operator.GREATER );
+        for ( VerifierError error : verifier.getErrors() ) {
+            System.out.println( error.getMessage() );
+        }
 
-        LiteralRestriction lr2 = new LiteralRestriction();
-        lr2.setOrderNumber( 1 );
-        lr2.setFieldGuid( field1.getGuid() );
-        lr2.setValue( "2.0" );
-        lr2.setOperator( Operator.GREATER );
+        assertFalse( verifier.hasErrors() );
 
-        // Integers
-        Field field2 = new Field();
+        boolean noProblems = verifier.fireAnalysis();
+        assertTrue( noProblems );
 
-        LiteralRestriction lr3 = new LiteralRestriction();
-        lr3.setOrderNumber( 0 );
-        lr3.setFieldGuid( field2.getGuid() );
-        lr3.setValue( "1" );
-        lr3.setOperator( Operator.GREATER );
+        Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
 
-        LiteralRestriction lr4 = new LiteralRestriction();
-        lr4.setOrderNumber( 1 );
-        lr4.setFieldGuid( field2.getGuid() );
-        lr4.setValue( "2" );
-        lr4.setOperator( Operator.GREATER_OR_EQUAL );
+        assertEquals( 9,
+                      subsumptionList.size() );
 
-        // Dates
-        Field field3 = new Field();
+        verifier.dispose();
+    }
 
-        LiteralRestriction lr5 = new LiteralRestriction();
-        lr5.setOrderNumber( 0 );
-        lr5.setFieldGuid( field3.getGuid() );
-        lr5.setValue( "10-dec-2005" );
-        lr5.setOperator( Operator.GREATER );
+    public void testVerifierLiteralRestrictionRedundancy2() throws Exception {
 
-        LiteralRestriction lr6 = new LiteralRestriction();
-        lr6.setOrderNumber( 1 );
-        lr6.setFieldGuid( field3.getGuid() );
-        lr6.setValue( "10-dec-2008" );
-        lr6.setOperator( Operator.EQUAL );
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
 
-        data.add( lr1 );
-        data.add( lr2 );
-        data.add( lr3 );
-        data.add( lr4 );
-        data.add( lr5 );
-        data.add( lr6 );
+        Verifier verifier = vBuilder.newVerifier();
 
-        StatelessSessionResult sessionResult = session.executeWithResults( data );
+        verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantRestriction2.drl",
+                                                                             getClass() ),
+                                       ResourceType.DRL );
 
-        Map<Cause, Set<Cause>> map = createSubsumptionMap( sessionResult.iterateObjects() );
-
-        assertTrue( TestBase.causeMapContains( map,
-                                               lr1,
-                                               lr2 ) );
-        assertTrue( TestBase.causeMapContains( map,
-                                               lr3,
-                                               lr4 ) );
-        assertTrue( TestBase.causeMapContains( map,
-                                               lr5,
-                                               lr6 ) );
-
-        if ( !map.isEmpty() ) {
-            fail( "More redundancies than was expected." );
+        for ( VerifierError error : verifier.getErrors() ) {
+            System.out.println( error.getMessage() );
         }
-    }
 
-    public void testRestrictionRedundancyLess() throws Exception {
-        StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Restrictions.drl" ) );
+        assertFalse( verifier.hasErrors() );
 
-        session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find subsumptant restrictions, less than" ) );
+        boolean noProblems = verifier.fireAnalysis();
+        assertTrue( noProblems );
 
-        Collection<Object> data = new ArrayList<Object>();
+        Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
 
-        VerifierReport result = VerifierReportFactory.newVerifierReport();
-        session.setGlobal( "result",
-                           result );
+        assertEquals( 9,
+                      subsumptionList.size() );
 
-        /*
-         * Redundant restrictions
-         */
-        // Doubles
-        Field field1 = new Field();
+        verifier.dispose();
+    }
 
-        LiteralRestriction lr1 = new LiteralRestriction();
-        lr1.setOrderNumber( 0 );
-        lr1.setFieldGuid( field1.getGuid() );
-        lr1.setValue( "2.0" );
-        lr1.setOperator( Operator.LESS );
+    public void testVerifierLiteralRestrictionRedundancy3() throws Exception {
 
-        LiteralRestriction lr2 = new LiteralRestriction();
-        lr2.setOrderNumber( 1 );
-        lr2.setFieldGuid( field1.getGuid() );
-        lr2.setValue( "1.0" );
-        lr2.setOperator( Operator.LESS );
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
 
-        // Integers
-        Field field2 = new Field();
+        Verifier verifier = vBuilder.newVerifier();
 
-        LiteralRestriction lr3 = new LiteralRestriction();
-        lr3.setOrderNumber( 0 );
-        lr3.setFieldGuid( field2.getGuid() );
-        lr3.setValue( "2" );
-        lr3.setOperator( Operator.LESS );
+        verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantRestriction3.drl",
+                                                                             getClass() ),
+                                       ResourceType.DRL );
 
-        LiteralRestriction lr4 = new LiteralRestriction();
-        lr4.setOrderNumber( 1 );
-        lr4.setFieldGuid( field2.getGuid() );
-        lr4.setValue( "1" );
-        lr4.setOperator( Operator.LESS_OR_EQUAL );
+        for ( VerifierError error : verifier.getErrors() ) {
+            System.out.println( error.getMessage() );
+        }
 
-        // Dates
-        Field field3 = new Field();
+        assertFalse( verifier.hasErrors() );
 
-        LiteralRestriction lr5 = new LiteralRestriction();
-        lr5.setOrderNumber( 0 );
-        lr5.setFieldGuid( field3.getGuid() );
-        lr5.setValue( "10-dec-2008" );
-        lr5.setOperator( Operator.LESS );
+        boolean noProblems = verifier.fireAnalysis();
+        assertTrue( noProblems );
 
-        LiteralRestriction lr6 = new LiteralRestriction();
-        lr6.setOrderNumber( 1 );
-        lr6.setFieldGuid( field3.getGuid() );
-        lr6.setValue( "10-dec-2005" );
-        lr6.setOperator( Operator.EQUAL );
+        Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
 
-        data.add( lr1 );
-        data.add( lr2 );
-        data.add( lr3 );
-        data.add( lr4 );
-        data.add( lr5 );
-        data.add( lr6 );
+        assertEquals( 6,
+                      subsumptionList.size() );
 
-        StatelessSessionResult sessionResult = session.executeWithResults( data );
-
-        Map<Cause, Set<Cause>> map = createSubsumptionMap( sessionResult.iterateObjects() );
-
-        assertTrue( TestBase.causeMapContains( map,
-                                               lr1,
-                                               lr2 ) );
-        assertTrue( TestBase.causeMapContains( map,
-                                               lr3,
-                                               lr4 ) );
-        assertTrue( TestBase.causeMapContains( map,
-                                               lr5,
-                                               lr6 ) );
-
-        if ( !map.isEmpty() ) {
-            fail( "More redundancies than was expected." );
-        }
+        verifier.dispose();
     }
 }

Copied: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubPatternsTest.java (from rev 30137, labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantPossibilitiesTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubPatternsTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubPatternsTest.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,206 @@
+package org.drools.verifier.subsumption;
+
+import java.util.Collection;
+
+import junit.framework.TestCase;
+
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.ClassObjectFilter;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.VerifierError;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.builder.VerifierImpl;
+import org.drools.verifier.report.components.CauseType;
+import org.drools.verifier.report.components.Subsumption;
+
+public class SubsumptantSubPatternsTest extends TestCase {
+
+    public void testSubpatternSubsumption1() throws Exception {
+
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+        Verifier verifier = vBuilder.newVerifier();
+
+        verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubPatterns1.drl",
+                                                                             getClass() ),
+                                       ResourceType.DRL );
+
+        for ( VerifierError error : verifier.getErrors() ) {
+            System.out.println( error.getMessage() );
+        }
+
+        assertFalse( verifier.hasErrors() );
+
+        boolean noProblems = verifier.fireAnalysis();
+        assertTrue( noProblems );
+
+        Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+
+        int count = 0;
+        for ( Object object : subsumptionList ) {
+            //            System.out.println( " * " + ((Subsumption) object) );
+            if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+                //                System.out.println( " ** " + ((SubPattern) ((Subsumption) object).getLeft()).getItems() + " - " + ((SubPattern) ((Subsumption) object).getRight()).getItems() );
+                count++;
+            }
+        }
+        assertEquals( 1,
+                      count );
+
+        verifier.dispose();
+    }
+
+    /**
+     * Empty pattern
+     * @throws Exception
+     */
+    public void testSubpatternSubsumption2() throws Exception {
+
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+        Verifier verifier = vBuilder.newVerifier();
+
+        verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubPatterns2.drl",
+                                                                             getClass() ),
+                                       ResourceType.DRL );
+
+        for ( VerifierError error : verifier.getErrors() ) {
+            System.out.println( error.getMessage() );
+        }
+
+        assertFalse( verifier.hasErrors() );
+
+        boolean noProblems = verifier.fireAnalysis();
+        assertTrue( noProblems );
+
+        Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+
+        int count = 0;
+        for ( Object object : subsumptionList ) {
+            //            System.out.println( " * " + ((Subsumption) object) );
+            if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+                count++;
+            }
+        }
+        assertEquals( 1,
+                      count );
+
+        verifier.dispose();
+    }
+
+    /**
+     * Different sources
+     * @throws Exception
+     */
+    public void testSubpatternSubsumption3() throws Exception {
+
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+        Verifier verifier = vBuilder.newVerifier();
+
+        verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubPatterns3.drl",
+                                                                             getClass() ),
+                                       ResourceType.DRL );
+
+        for ( VerifierError error : verifier.getErrors() ) {
+            System.out.println( error.getMessage() );
+        }
+
+        assertFalse( verifier.hasErrors() );
+
+        boolean noProblems = verifier.fireAnalysis();
+        assertTrue( noProblems );
+
+        Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+
+        int count = 0;
+        for ( Object object : subsumptionList ) {
+            //            System.out.println( " * " + ((Subsumption) object) );
+            if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+                count++;
+            }
+        }
+        assertEquals( 1,
+                      count );
+
+        verifier.dispose();
+    }
+
+    /**
+     * Patterns that use from
+     * @throws Exception
+     */
+    public void FIXMEtestSubpatternSubsumption4() throws Exception {
+
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+        Verifier verifier = vBuilder.newVerifier();
+
+        verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubPatterns4.drl",
+                                                                             getClass() ),
+                                       ResourceType.DRL );
+
+        for ( VerifierError error : verifier.getErrors() ) {
+            System.out.println( error.getMessage() );
+        }
+
+        assertFalse( verifier.hasErrors() );
+
+        boolean noProblems = verifier.fireAnalysis();
+        assertTrue( noProblems );
+
+        Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+
+        int count = 0;
+        for ( Object object : subsumptionList ) {
+            System.out.println( " * " + ((Subsumption) object) );
+            if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+                count++;
+            }
+        }
+        assertEquals( 1,
+                      count );
+
+        verifier.dispose();
+    }
+
+    /**
+     * Different sources
+     * @throws Exception
+     */
+    public void testSubpatternSubsumption5() throws Exception {
+
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+        Verifier verifier = vBuilder.newVerifier();
+
+        verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubPatterns5.drl",
+                                                                             getClass() ),
+                                       ResourceType.DRL );
+
+        for ( VerifierError error : verifier.getErrors() ) {
+            System.out.println( error.getMessage() );
+        }
+
+        assertFalse( verifier.hasErrors() );
+
+        boolean noProblems = verifier.fireAnalysis();
+        assertTrue( noProblems );
+
+        Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+
+        int count = 0;
+        for ( Object object : subsumptionList ) {
+            //            System.out.println( " * " + ((Subsumption) object) );
+            if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+                count++;
+            }
+        }
+        assertEquals( 8,
+                      count );
+
+        verifier.dispose();
+    }
+}

Added: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubRulesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubRulesTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubRulesTest.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,168 @@
+package org.drools.verifier.subsumption;
+
+import java.util.Collection;
+
+import junit.framework.TestCase;
+
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.ClassObjectFilter;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.VerifierError;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.builder.VerifierImpl;
+import org.drools.verifier.report.components.CauseType;
+import org.drools.verifier.report.components.Subsumption;
+
+public class SubsumptantSubRulesTest extends TestCase {
+
+    public void testSubruleSubsumption1() throws Exception {
+
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+        Verifier verifier = vBuilder.newVerifier();
+
+        verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubRules1.drl",
+                                                                             getClass() ),
+                                       ResourceType.DRL );
+
+        for ( VerifierError error : verifier.getErrors() ) {
+            System.out.println( error.getMessage() );
+        }
+
+        assertFalse( verifier.hasErrors() );
+
+        boolean noProblems = verifier.fireAnalysis();
+        assertTrue( noProblems );
+
+        Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+
+        int count = 0;
+        for ( Object object : subsumptionList ) {
+            //            System.out.println( " * " + ((Subsumption) object) );
+            if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_RULE ) ) {
+                //                System.out.println( " ** " + ((SubRule) ((Subsumption) object).getLeft()).getItems() + " - " + ((SubRule) ((Subsumption) object).getRight()).getItems() );
+                count++;
+            }
+        }
+        assertEquals( 2,
+                      count );
+
+        verifier.dispose();
+    }
+
+    //    /**
+    //     * Empty pattern
+    //     * @throws Exception
+    //     */
+    //    public void testSubpatternSubsumption2() throws Exception {
+    //
+    //        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+    //
+    //        Verifier verifier = vBuilder.newVerifier();
+    //
+    //        verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubPatterns2.drl",
+    //                                                                             getClass() ),
+    //                                       ResourceType.DRL );
+    //
+    //        for ( VerifierError error : verifier.getErrors() ) {
+    //            System.out.println( error.getMessage() );
+    //        }
+    //
+    //        assertFalse( verifier.hasErrors() );
+    //
+    //        boolean noProblems = verifier.fireAnalysis();
+    //        assertTrue( noProblems );
+    //
+    //        Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+    //
+    //        int count = 0;
+    //        for ( Object object : subsumptionList ) {
+    //            //            System.out.println( " * " + ((Subsumption) object) );
+    //            if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+    //                count++;
+    //            }
+    //        }
+    //        assertEquals( 1,
+    //                      count );
+    //
+    //        verifier.dispose();
+    //    }
+    //
+    //    /**
+    //     * Different sources
+    //     * @throws Exception
+    //     */
+    //    public void testSubpatternSubsumption3() throws Exception {
+    //
+    //        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+    //
+    //        Verifier verifier = vBuilder.newVerifier();
+    //
+    //        verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubPatterns3.drl",
+    //                                                                             getClass() ),
+    //                                       ResourceType.DRL );
+    //
+    //        for ( VerifierError error : verifier.getErrors() ) {
+    //            System.out.println( error.getMessage() );
+    //        }
+    //
+    //        assertFalse( verifier.hasErrors() );
+    //
+    //        boolean noProblems = verifier.fireAnalysis();
+    //        assertTrue( noProblems );
+    //
+    //        Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+    //
+    //        int count = 0;
+    //        for ( Object object : subsumptionList ) {
+    //            //            System.out.println( " * " + ((Subsumption) object) );
+    //            if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+    //                count++;
+    //            }
+    //        }
+    //        assertEquals( 1,
+    //                      count );
+    //
+    //        verifier.dispose();
+    //    }
+    //
+    //    /**
+    //     * Patterns that use from
+    //     * @throws Exception
+    //     */
+    //    public void FIXMEtestSubpatternSubsumption4() throws Exception {
+    //
+    //        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+    //
+    //        Verifier verifier = vBuilder.newVerifier();
+    //
+    //        verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubPatterns4.drl",
+    //                                                                             getClass() ),
+    //                                       ResourceType.DRL );
+    //
+    //        for ( VerifierError error : verifier.getErrors() ) {
+    //            System.out.println( error.getMessage() );
+    //        }
+    //
+    //        assertFalse( verifier.hasErrors() );
+    //
+    //        boolean noProblems = verifier.fireAnalysis();
+    //        assertTrue( noProblems );
+    //
+    //        Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+    //
+    //        int count = 0;
+    //        for ( Object object : subsumptionList ) {
+    //            System.out.println( " * " + ((Subsumption) object) );
+    //            if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+    //                count++;
+    //            }
+    //        }
+    //        assertEquals( 1,
+    //                      count );
+    //
+    //        verifier.dispose();
+    //    }
+}

Deleted: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptionTestBase.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptionTestBase.java	2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptionTestBase.java	2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,56 +0,0 @@
-package org.drools.verifier.subsumption;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.verifier.TestBase;
-import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.Subsumption;
-
-/**
- * 
- * @author Toni Rikkola
- * 
- */
-public class SubsumptionTestBase extends TestBase {
-
-	public void testDummy() {
-		// this is needed as eclipse will try to run this and produce a failure
-		// if its not here.
-	}
-
-	/**
-	 * Creates subsumption map from Subsumption objects, one rule may have
-	 * several subsumption dependencies.
-	 * 
-	 * @param iter
-	 * @return
-	 */
-	protected Map<Cause, Set<Cause>> createSubsumptionMap(Iterator<Object> iter) {
-
-		Map<Cause, Set<Cause>> map = new HashMap<Cause, Set<Cause>>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof Subsumption && !(o instanceof Redundancy)) {
-				Subsumption s = (Subsumption) o;
-				Cause left = s.getLeft();
-				Cause right = s.getRight();
-
-				if (map.containsKey(left)) {
-					Set<Cause> set = map.get(left);
-					set.add(right);
-				} else {
-					Set<Cause> set = new HashSet<Cause>();
-					set.add(right);
-					map.put(left, set);
-				}
-			}
-		}
-
-		return map;
-	}
-}

Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/equivalence/EquivalentRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/equivalence/EquivalentRules.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/equivalence/EquivalentRules.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,19 @@
+package com.sample
+
+rule "Test 1"
+	when
+		    Person( 
+		    	name == "Toni" 
+		     )
+	then
+		System.out.println( "Test 1" );
+end
+
+rule "Test 2"
+	when
+		    Person( 
+		    	name == "Toni" 
+		     )
+	then
+		System.out.println( "Test 2" );
+end
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/misc/SubPattern.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/misc/SubPattern.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/misc/SubPattern.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,27 @@
+package org.drools.verifier.misc;
+
+        
+import com.sample.DroolsTest.Message;
+        
+rule "Test 1"
+	when
+		    Foo( 
+		    	a > 10, 
+		    	a > 100,
+		    	b == 1
+		    )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Test 2"
+	when
+		    Foo( 
+		    	a > 10, 
+		    	a > 10,
+		    	b == 2
+		    )
+	then
+		System.out.println( "Test" );
+end
+        
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/redundancy/RedundantRestrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/redundancy/RedundantRestrictions.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/redundancy/RedundantRestrictions.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,11 @@
+package com.sample
+
+rule "Test"
+	when
+		    Person( 
+		    	name == "Toni",
+		    	name == "Toni" 
+		     )
+	then
+		System.out.println( "Test" );
+end
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/redundancy/RedundantRules1.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/redundancy/RedundantRules1.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/redundancy/RedundantRules1.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,19 @@
+package com.sample
+
+rule "Test 1"
+	when
+		    Person( 
+		    	name == "Toni" 
+		     )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Test 2"
+	when
+		    Person( 
+		    	name == "Toni" 
+		     )
+	then
+		System.out.println( "Test" );
+end
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction1.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction1.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction1.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,25 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Test 1"
+	when
+		    Foo( 
+		    	a > 10, 
+		    	a > 100,
+		    	b == 1
+		    )
+	then
+		System.out.println( "Test 1" );
+end
+
+rule "Test 2"
+	when
+		    Foo( 
+		    	a > 10, 
+		    	a > 10,
+		    	b == 2
+		    )
+	then
+		System.out.println( "Test 2" );
+end

Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction2.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction2.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction2.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,25 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Test 1"
+	when
+		    Foo( 
+		    	a < 10, 
+		    	a < 100,
+		    	b == 1
+		    )
+	then
+		System.out.println( "Test 1" );
+end
+
+rule "Test 2"
+	when
+		    Foo( 
+		    	a < 10, 
+		    	a < 10,
+		    	b == 2
+		    )
+	then
+		System.out.println( "Test 2" );
+end

Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction3.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction3.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction3.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,25 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Test 1"
+	when
+		    Foo( 
+		    	a == 10, 
+		    	a == 100,
+		    	b == 1
+		    )
+	then
+		System.out.println( "Test 1" );
+end
+
+rule "Test 2"
+	when
+		    Foo( 
+		    	a == 10, 
+		    	a == 10,
+		    	b == 2
+		    )
+	then
+		System.out.println( "Test 2" );
+end

Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns1.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns1.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns1.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,32 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Test 11"
+	when
+		    Foo( 
+		    	a > 10 
+		    )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Test 22"
+	when
+		    Foo( 
+		    	a > 10, 
+		    	b == 2
+		    )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Test 33"
+	when
+		    Bar( 
+		    	a > 10, 
+		    	b == 2
+		    )
+	then
+		System.out.println( "Test" );
+end
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns2.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns2.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns2.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,27 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Test 1"
+	when
+		    Foo( )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Test 2"
+	when
+		    Foo( 
+		    	a > 10, 
+		    	b == 2
+		    )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Test 3"
+	when
+		    Bar()
+	then
+		System.out.println( "Test" );
+end
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns3.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns3.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns3.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,35 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Test 1"
+	when
+		    Foo( ) from entry-point "test"
+	then
+		System.out.println( "Test" );
+end
+
+rule "Test 2"
+	when
+		    Foo( 
+		    	a > 10, 
+		    	b == 2
+		    )  from entry-point "test"
+	then
+		System.out.println( "Test" );
+end
+
+rule "Test 3"
+	when
+		    Foo( ) 
+	then
+		System.out.println( "Test" );
+end
+
+
+rule "Test x"
+	when
+		    Bar()
+	then
+		System.out.println( "Test" );
+end
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns4.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns4.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns4.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,42 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Test 1"
+	when
+			list :List()
+		    Foo()  from list.items
+	then
+		System.out.println( "Test" );
+end
+
+rule "Test 2"
+	when
+			list :List()
+		    Foo( 
+		    	a > 10 
+		    )  from list.items
+		    Foo( 
+		    	a > 100 
+		    )  from list.items
+	then
+		System.out.println( "Test" );
+end
+/*
+rule "Test 3"
+	when
+			list2 :List2()
+		    Foo( 
+		    	a > 10 
+		    )  from list2.items
+	then
+		System.out.println( "Test" );
+end
+*/
+
+rule "Test x"
+	when
+		    Bar()
+	then
+		System.out.println( "Test" );
+end
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns5.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns5.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns5.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,57 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+
+#
+# Something
+#
+rule "Test 1"
+	when
+		    Foo( 
+		    	a > 10 
+		    )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Test 2"
+	when
+		    Foo( 
+		    	a > 10, 
+		    	b == 2
+		    )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Test 1 GG"
+	ruleflow-group "GG"
+	when
+		    Foo( 
+		    	a > 10 
+		    )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Test 2 GG"
+	ruleflow-group "GG"
+	when
+		    Foo( 
+		    	a > 10, 
+		    	b == 2
+		    )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Test 3"
+	when
+		    Bar( 
+		    	a > 10, 
+		    	b == 2
+		    )
+	then
+		System.out.println( "Test" );
+end
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubRules1.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubRules1.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubRules1.drl	2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,57 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+
+#
+# Something
+#
+rule "Test 1"
+	when
+		    Foo( 
+		    	a > 10 
+		    )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Test 2"
+	when
+		    Foo( 
+		    	a > 10, 
+		    	b == 2
+		    )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Test 1 GG"
+	ruleflow-group "GG"
+	when
+		    Foo( 
+		    	a > 10 
+		    )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Test 2 GG"
+	ruleflow-group "GG"
+	when
+		    Foo( 
+		    	a > 10, 
+		    	b == 2
+		    )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Test 3"
+	when
+		    Bar( 
+		    	a > 10, 
+		    	b == 2
+		    )
+	then
+		System.out.println( "Test" );
+end
\ No newline at end of file



More information about the jboss-svn-commits mailing list