public void testAddComplexRule()
{
weaponsKB
.tell("( (((American(x) AND Weapon(y)) AND Sells(x,y,z)) AND Hostile(z)) => Criminal(x))");
Assert.AreEqual(1, weaponsKB.getNumberRules());
weaponsKB.tell("American(West)");
Assert.AreEqual(1, weaponsKB.getNumberRules());
List<Term> terms = new List<Term>();
terms.Add(new Variable("v0"));
Clause dcRule = weaponsKB.getAllDefiniteClauseImplications()[0];
Assert.IsNotNull(dcRule);
Assert.AreEqual(true, dcRule.isImplicationDefiniteClause());
Assert.AreEqual(new Literal(new Predicate("Criminal", terms)),
dcRule.getPositiveLiterals()[0]);
}