// Note: see -
// http://logic.stanford.edu/classes/cs157/2008/lectures/lecture15.pdf
// slide 12 for where this test example was taken from.
public static FOLKnowledgeBase createABCEqualityKnowledgeBase(
InferenceProcedure infp, bool includeEqualityAxioms)
{
FOLDomain domain = new FOLDomain();
domain.addConstant("A");
domain.addConstant("B");
domain.addConstant("C");
FOLKnowledgeBase kb = new FOLKnowledgeBase(domain, infp);
kb.tell("B = A");
kb.tell("B = C");
if (includeEqualityAxioms)
{
// Reflexivity Axiom
kb.tell("x = x");
// Symmetry Axiom
kb.tell("(x = y => y = x)");
// Transitivity Axiom
kb.tell("((x = y AND y = z) => x = z)");
}
return(kb);
}