public void testSimpleClauseExamples()
{
FOLDomain domain = new FOLDomain();
domain.addConstant("A");
domain.addConstant("B");
domain.addConstant("C");
domain.addConstant("D");
domain.addConstant("E");
domain.addPredicate("P");
domain.addPredicate("Q");
domain.addPredicate("W");
domain.addFunction("F");
domain.addFunction("G");
domain.addFunction("H");
domain.addFunction("J");
FOLParser parser = new FOLParser(domain);
List<Literal> lits = new List<Literal>();
Predicate p1 = (Predicate)parser.parse("Q(z, G(D,B))");
Predicate p2 = (Predicate)parser.parse("P(x, G(A,C))");
Predicate p3 = (Predicate)parser.parse("W(z,x,u,w,y)");
lits.Add(new Literal(p1));
lits.Add(new Literal(p2));
lits.Add(new Literal(p3));
Clause clExpression = new Clause(lits);
TermEquality assertion = (TermEquality)parser.parse("G(x,y) = x");
Clause altClExpression = demodulation.apply(assertion, clExpression);
Assert.AreEqual("[P(x,G(A,C)), Q(z,D), W(z,x,u,w,y)]",
altClExpression.ToString());
altClExpression = demodulation.apply(assertion, altClExpression);
Assert.AreEqual("[P(x,A), Q(z,D), W(z,x,u,w,y)]", altClExpression
.ToString());
}