//Testing whether true and false are handled as prolog queries private static void TestBoolConstant() { KnowledgeBase kb = new KnowledgeBase("Global", null); kb.Consult("PrologTest.prolog"); kb.IsTrueWrite("true."); kb.IsTrueWrite("false."); }
/* * Testing queries that have no arguments. */ private static void QueryWithNoArgument() { KnowledgeBase kb = new KnowledgeBase("global", null); kb.IsTrueWrite("assert((test :- foo))."); kb.IsTrueWrite("assert(foo)."); kb.IsTrueWrite("retract(foo)."); kb.IsTrueWrite("test."); }
/* * Demonstrates assertions, and that queries are correctly solved after appropriate assertion of facts and rules. */ private static void AssertingAFact() { KnowledgeBase kb = new KnowledgeBase("global", null); kb.IsTrueWrite("assert(person(plato))."); kb.IsTrueWrite("person(socratese)."); kb.IsTrueWrite("assert((mortal(X) :- person(X)))."); kb.IsTrueWrite("mortal(socratese)."); kb.IsTrueWrite("assert(person(socratese))."); kb.IsTrueWrite("person(socratese)."); kb.IsTrueWrite("mortal(socratese)."); kb.IsTrueWrite("mortal(plato), person(socratese)."); }
/* * fixme: Queries which involve chaining bindings generate an error. It looks like in the guts of SolveFor() there * are recursive calls which call GameObject.SolveFor(). So using this basic feature of prolog requires * the UnityProlog KB to be embeded in a game object. To debug this I should just develop a TextChoices unity * demo with the KB stored on a GameObject. */ private static void TestIncrement() { KnowledgeBase kb = new KnowledgeBase("Global", null); kb.Consult("PrologTestWithError.prolog"); kb.IsTrueWrite("triesGreaterThan(1)."); //kb.IsTrueWrite("tries(X), X > 1."); //kb.IsTrueWrite("assert(triedDoor)."); //kb.IsTrueWrite("incrementTries."); //kb.IsTrueWrite("tries(X), X > 1."); //kb.IsTrueWrite("assert(triedDoor)."); //kb.IsTrueWrite("tries(x), X > 1."); }