class KB2Tests(unittest.TestCase): def setUp(self): # Assert starter facts file = 'statements_kb2.txt' data = read.read_tokenize(file) self.KB = KnowledgeBase([], []) for item in data: if isinstance(item, Fact): self.KB.kb_assert(item) def test1(self): ask1 = read.parse_input("fact: (attacked Ai Nosliw)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(answer[0].bindings, []) def test2(self): ask1 = read.parse_input("fact: (diamonds ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : Loot") def test3(self): ask1 = read.parse_input("fact: (rubies gem)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertFalse(answer)
class KBTest(unittest.TestCase): def setUp(self): # Assert starter facts file = 'statements_kb.txt' data = read.read_tokenize(file) self.KB = KnowledgeBase([], []) for item in data: if isinstance(item, Fact): self.KB.kb_assert(item) def test1(self): ask1 = read.parse_input("fact: (color bigbox red)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(answer[0].bindings, []) #self.assertEqual(answer.list_of_bindings[0][1][0], ask1) def test2(self): ask1 = read.parse_input("fact: (color littlebox red)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertFalse(answer) def test3(self): ask1 = read.parse_input("fact: (color ?X red)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bigbox") self.assertEqual(str(answer[1]), "?X : pyramid3") self.assertEqual(str(answer[2]), "?X : pyramid4") def test4(self): ask1 = read.parse_input("fact: (color bigbox ?Y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?Y : red") def test5(self): ask1 = read.parse_input("fact: (color ?X ?Y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bigbox, ?Y : red") self.assertEqual(str(answer[1]), "?X : littlebox, ?Y : blue") self.assertEqual(str(answer[2]), "?X : pyramid1, ?Y : blue") self.assertEqual(str(answer[3]), "?X : pyramid2, ?Y : green") self.assertEqual(str(answer[4]), "?X : pyramid3, ?Y : red") self.assertEqual(str(answer[5]), "?X : pyramid4, ?Y : red") def test6(self): ask1 = read.parse_input("fact: (size pyramid2 ?Y") print('Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]),"?Y : small") def test7(self): ask1 = read.parse_input("fact: (size ?X small") print('Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]),"?X : littlebox")
class CustomTests2(unittest.TestCase): def setUp(self): # Assert starter facts file = 'statements_kb5.txt' self.data = read.read_tokenize(file) data = read.read_tokenize(file) self.KB = KnowledgeBase([], []) for item in data: if isinstance(item, Fact) or isinstance(item, Rule): self.KB.kb_assert(item) def test6(self): # makes sure retract does not retract supported fact ask1 = read.parse_input("fact: (grandparent A ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : C") # self.assertEqual(str(answer[1]), "?X : chen") r1 = read.parse_input("fact: (parent B C)") print(' Retracting', r1) self.KB.kb_retract(r1) print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : C") r1 = read.parse_input("fact: (parent A D)") print(' Retracting', r1) self.KB.kb_retract(r1) print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) print(str(len(answer))) self.assertEqual(len(answer), 0)
class KBTest(unittest.TestCase): def setUp(self): # Assert starter facts file = 'statements_kb.txt' data = read.read_tokenize(file) self.KB = KnowledgeBase([], []) for item in data: if isinstance(item, Fact): self.KB.kb_assert(item) ''' def test1(self): ask1 = read.parse_input("fact: (color bigbox red)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(answer[0].bindings, []) #self.assertEqual(answer.list_of_bindings[0][1][0], ask1) def test2(self): ask1 = read.parse_input("fact: (color littlebox red)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertFalse(answer) ''' def test3(self): ask1 = read.parse_input("fact: (color ?X red)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bigbox") self.assertEqual(str(answer[1]), "?X : pyramid3") self.assertEqual(str(answer[2]), "?X : pyramid4") '''
class KBTest(unittest.TestCase): def setUp(self): # Assert starter facts file = 'statements_kb3.txt' self.data = read.read_tokenize(file) data = read.read_tokenize(file) self.KB = KnowledgeBase([], []) for item in data: if isinstance(item, Fact) or isinstance(item, Rule): self.KB.kb_assert(item) def test1(self): ask1 = read.parse_input("fact: (hero ?y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?Y : a") def test2(self): ask1 = read.parse_input("fact: (person ?y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?Y : a") def test3(self): ask1 = read.parse_input("fact: (goodman ?y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?Y : a") def test4(self): r1 = read.parse_input("fact: (goodman a)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (goodman ?y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?Y : a") def test5(self): r1 = read.parse_input("fact: (hero a)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (goodman ?y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(answer, []) def test6(self): r1 = read.parse_input("fact: (person a)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (goodman ?y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(answer, [])
class KBTest(unittest.TestCase): def setUp(self): # Assert starter facts file = 'statements_kb4.txt' self.data = read.read_tokenize(file) data = read.read_tokenize(file) self.KB = KnowledgeBase([], []) for item in data: print(item.name) if isinstance(item, Fact) or isinstance(item, Rule): self.KB.kb_assert(item)
def main(): KB = KnowledgeBase([], []) _, fact1 = read.parse_input("fact: (hero A)") _, fact2 = read.parse_input("fact: (person A)") _, rule1 = read.parse_input( "rule: ((hero ?x) (person ?x)) -> (goodman ?x)") _, rule2 = read.parse_input( "rule: ((goodman ?x) (wenttoschool ?x)) -> (doctor ?x)") _, fact3 = read.parse_input("fact: (wenttoschool A)") _, fact4 = read.parse_input("fact: (goodman A)") _, ask1 = read.parse_input("fact: (goodman A)") _, ask2 = read.parse_input("fact: (doctor A)") _, ask3 = read.parse_input("rule: ((person A)) -> (goodman A)") KB.kb_assert(fact1) KB.kb_assert(fact2) KB.kb_assert(fact4) KB.kb_assert(rule1) KB.kb_assert(rule2) KB.kb_assert(fact3) print KB answer1 = KB.kb_ask(ask1) answer2 = KB.kb_ask(ask2) KB.kb_retract(fact1) print KB answer3 = not Rule(ask3) in KB.rules answer4 = KB.kb_ask(ask1) answer5 = KB.kb_ask(ask2) KB2 = KnowledgeBase([], []) _, fact21 = read.parse_input("fact: (relaa A)") _, fact22 = read.parse_input("fact: (relab A)") _, rule21 = read.parse_input("rule: ((relaa ?x)) -> (good ?x)") _, rule22 = read.parse_input("rule: ((relab ?x)) -> (good ?x)") _, ask21 = read.parse_input("fact: (good ?x)") KB2.kb_assert(fact21) KB2.kb_assert(fact22) KB2.kb_assert(rule21) KB2.kb_assert(rule22) answer6 = KB2.kb_ask(ask21) KB2.kb_retract(fact21) answer7 = KB2.kb_ask(ask21) answer8 = not KB2.kb_ask(fact21) if answer1 and answer2 and answer3 and answer4 and answer5 and answer6 and answer7 and answer8: print "pass test5" exit(0) else: print "fail test5" exit(1)
class KBTest(unittest.TestCase): def setUp(self): # Assert starter facts file = 'statements_kb4.txt' self.data = read.read_tokenize(file) data = read.read_tokenize(file) self.KB = KnowledgeBase([], []) for item in data: if isinstance(item, Fact) or isinstance(item, Rule): self.KB.kb_assert(item) def test1(self): ask1 = read.parse_input("fact: (motherof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bing") def test2(self): ask1 = read.parse_input("fact: (grandmotherof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : felix") self.assertEqual(str(answer[1]), "?X : chen") def test3(self): r1 = read.parse_input("fact: (motherof ada bing)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (grandmotherof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : felix") def test4(self): r1 = read.parse_input("fact: (grandmotherof ada chen)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (grandmotherof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : felix") self.assertEqual(str(answer[1]), "?X : chen") def test5(self): r1 = read.parse_input("rule: ((motherof ?x ?y)) -> (parentof ?x ?y)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (parentof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bing")
class KBTest2(unittest.TestCase): def setUp(self): # Assert starter facts file2 = 'statements_kb2.txt' data = read.read_tokenize(file2) self.KB = KnowledgeBase([], []) for item in data: if isinstance(item, Fact): self.KB.kb_assert(item) def test_assert(self): print('test_assert') ask1 = read.parse_input("fact: (color bigbox red)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(answer[0].bindings, [])
def main(): # Assert starter facts file = 'statements_kb3.txt' data = read.read_tokenize(file) KB = KnowledgeBase([], []) for dtype, item in data: if dtype == read.FACT or dtype == read.RULE: KB.kb_assert(item) # KB demonstration # Ask for one of the starter facts print "Starting basic KB demonstration" _, ask1 = read.parse_input("fact: (goodman ?x)") print " Asking if", ask1 answer = KB.kb_ask(ask1) pprint_justification(answer) print KB
class KBTest(unittest.TestCase): def setUp(self): # Assert starter facts file = 'statements_kb.txt' data = read.read_tokenize(file) self.KB = KnowledgeBase([], []) for item in data: if isinstance(item, Fact): self.KB.kb_assert(item) def test2(self): ask1 = read.parse_input("fact: (color littlebox red)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertFalse(answer) print(self.KB.facts) for i in range(len(self.KB.facts)): print(self.KB.facts[i])
def main(): KB = KnowledgeBase([], []) _, fact1 = read.parse_input("fact: (hero A)") _, fact2 = read.parse_input("fact: (person A)") _, rule1 = read.parse_input( "rule: ((hero ?x) (person ?x)) -> (goodman ?x)") _, ask1 = read.parse_input("fact: (goodman A)") KB.kb_assert(fact1) KB.kb_assert(fact2) KB.kb_assert(rule1) answer = KB.kb_ask(ask1) if answer: print "pass test1" exit(0) else: print "fail test1" exit(1)
def main(): KB = KnowledgeBase([], []) _, fact1 = read.parse_input("fact: (hero A)") _, fact2 = read.parse_input("fact: (person B)") _, rule1 = read.parse_input( "rule: ((hero ?x) (person ?x)) -> (goodman ?x)") _, ask1 = read.parse_input("rule: ((person A)) -> (goodman A)") _, ask2 = read.parse_input("rule: ((hero B)) -> (goodman B)") KB.kb_assert(fact1) KB.kb_assert(fact2) KB.kb_assert(rule1) ask_rule1 = Rule(ask1) ask_rule2 = Rule(ask2) if ask_rule1 in KB.rules and ask_rule2 not in KB.rules: print "pass test2" exit(0) else: print "fail test2" exit(1)
def main(): KB = KnowledgeBase([], []) _, fact1 = read.parse_input("fact: (rela A X)") _, fact2 = read.parse_input("fact: (relb B X)") _, fact3 = read.parse_input("fact: (relc C X)") _, fact4 = read.parse_input("fact: (reld D X)") _, fact5 = read.parse_input("fact: (rele E X)") _, rule1 = read.parse_input( "rule: ((rela ?a ?x) (relb ?b ?x) (relc ?c ?x) (reld ?d ?x) (rele ?e ?x)) -> (relf ?x)" ) _, ask1 = read.parse_input("fact: (relf X)") KB.kb_assert(fact1) KB.kb_assert(fact2) KB.kb_assert(fact3) KB.kb_assert(fact4) KB.kb_assert(fact5) KB.kb_assert(rule1) answer1 = KB.kb_ask(ask1) if answer1: print "pass test8" exit(0) else: print "fail test8" exit(1)
def main(): KB = KnowledgeBase([], []) _, fact1 = read.parse_input("fact: (rela A B C D E F)") _, fact2 = read.parse_input("fact: (relb D E F G H I)") _, fact3 = read.parse_input("fact: (reld G H I)") _, rule1 = read.parse_input( "rule: ((rela ?a ?b ?c ?d ?e ?f) (relb ?d ?e ?f ?g ?h ?i)) -> (relc ?a ?b ?c ?g ?h ?i)" ) _, rule2 = read.parse_input( "rule: ((relc ?a ?b ?c ?g ?h ?i) (reld ?g ?h ?i)) -> (rele ?a ?b ?c)") _, ask1 = read.parse_input("fact: (rele A B C)") KB.kb_assert(fact1) KB.kb_assert(fact2) KB.kb_assert(fact3) KB.kb_assert(rule1) KB.kb_assert(rule2) answer1 = KB.kb_ask(ask1) if answer1: print "pass test7" exit(0) else: print "fail test7" exit(1)
def main(): KB = KnowledgeBase([], []) _, fact1 = read.parse_input("fact: (hero A)") _, fact2 = read.parse_input("fact: (person A)") _, rule1 = read.parse_input( "rule: ((hero ?x) (person ?x)) -> (goodman ?x)") _, rule2 = read.parse_input( "rule: ((goodman ?x) (wenttoschool ?x)) -> (doctor ?x)") _, fact3 = read.parse_input("fact: (wenttoschool A)") _, ask1 = read.parse_input("fact: (goodman A)") _, ask2 = read.parse_input("fact: (doctor A)") _, ask3 = read.parse_input("rule: ((person A)) -> (goodman A)") KB.kb_assert(fact1) KB.kb_assert(fact2) KB.kb_assert(rule1) KB.kb_assert(rule2) KB.kb_assert(fact3) answer1 = KB.kb_ask(ask1) answer2 = KB.kb_ask(ask2) answer3 = Rule(ask3) in KB.rules KB.kb_retract(fact1) answer4 = KB.kb_ask(ask1) answer5 = KB.kb_ask(ask2) answer6 = Rule(ask3) in KB.rules print KB if answer1 and answer2 and answer3 and not answer4 and not answer5 and not answer6: print "pass test4" exit(0) else: print "fail test4" exit(1)
def main(): KB = KnowledgeBase([], []) _, fact1 = read.parse_input("fact: (hero A)") _, fact2 = read.parse_input("fact: (person A)") _, rule1 = read.parse_input( "rule: ((hero ?x) (person ?x)) -> (goodman ?x)") _, rule2 = read.parse_input( "rule: ((goodman ?x) (wenttoschool ?x)) -> (doctor ?x)") _, fact3 = read.parse_input("fact: (wenttoschool A)") _, ask1 = read.parse_input("fact: (goodman A)") _, ask2 = read.parse_input("fact: (doctor A)") KB.kb_assert(fact1) KB.kb_assert(fact2) KB.kb_assert(rule1) answer1 = KB.kb_ask(ask1) KB.kb_assert(rule2) KB.kb_assert(fact3) answer2 = KB.kb_ask(ask2) if answer1 and answer2: print "pass test3" exit(0) else: print "fail test3" exit(1)
def main(): KB = KnowledgeBase([], []) _, fact1 = read.parse_input("fact: (hero A)") _, fact2 = read.parse_input("fact: (person A)") _, fact3 = read.parse_input("fact: (goodman A)") _, rule1 = read.parse_input( "rule: ((hero ?x) (person ?x)) -> (goodman ?x)") KB.kb_assert(fact1) KB.kb_assert(fact2) KB.kb_assert(fact3) KB.kb_assert(rule1) answer1 = KB.facts[KB.facts.index(Fact(fact3))].asserted KB.kb_retract(fact3) answer2 = KB.facts[KB.facts.index(Fact(fact3))].asserted if answer1 and not answer2: print "pass test10" exit(0) else: print "fail test10" exit(1)
def main(): KB = KnowledgeBase([], []) _, fact1 = read.parse_input("fact: (rela A B)") _, fact2 = read.parse_input("fact: (relb B C)") _, fact3 = read.parse_input("fact: (reld C D)") _, fact4 = read.parse_input("fact: (relf D E)") _, fact5 = read.parse_input("fact: (relh E F)") _, rule1 = read.parse_input( "rule: ((rela ?x ?y) (relb ?y ?z)) -> (relc ?x ?z)") _, rule2 = read.parse_input( "rule: ((relc ?x ?y) (reld ?y ?z)) -> (rele ?x ?z)") _, rule3 = read.parse_input( "rule: ((rele ?x ?y) (relf ?y ?z)) -> (relg ?x ?z)") _, rule4 = read.parse_input( "rule: ((relg ?x ?y) (relh ?y ?z)) -> (reli ?x ?z)") _, ask1 = read.parse_input("fact: (reli A F)") KB.kb_assert(fact1) KB.kb_assert(fact2) KB.kb_assert(fact3) KB.kb_assert(fact4) KB.kb_assert(fact5) KB.kb_assert(rule1) KB.kb_assert(rule2) KB.kb_assert(rule3) KB.kb_assert(rule4) answer1 = KB.kb_ask(ask1) if answer1: print "pass test6" exit(0) else: print "fail test6" exit(1)
class KBTest(unittest.TestCase): def setUp(self): # Assert starter facts file = 'statements_kb3.txt' data = read.read_tokenize(file) self.KB = KnowledgeBase([], []) for item in data: if isinstance(item, Fact): self.KB.kb_assert(item) def test1(self): ask1 = read.parse_input("fact: (inst ?X dragon)") print('Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : Nosliw") self.assertEqual(str(answer[1]), "?X : Uzna") def test2(self): ask1 = read.parse_input("fact: (friendly ?X)") print('Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : Uzna") self.assertEqual(str(answer[1]), "?X : Hershey") self.assertEqual(str(answer[2]), "?X : Ai") self.assertEqual(len(answer), 3) def test3(self): ask1 = read.parse_input("fact: (friendly Nosliw)") print('Askig if', ask1) answer = self.KB.kb_ask(ask1) self.assertFalse(answer) def test4(self): ask1 = read.parse_input("fact: (dead Nosliw)") answer = self.KB.kb_ask(ask1) self.assertFalse(answer)
class KBTest(unittest.TestCase): def setUp(self): # Assert starter facts file = 'statements_kb6.txt' self.data = read.read_tokenize(file) data = read.read_tokenize(file) self.KB = KnowledgeBase([], []) for item in data: if isinstance(item, Fact) or isinstance(item, Rule): self.KB.kb_assert(item) def test1(self): print("--------------------TEST ONE-----------------------") # makes sure retract does not retract supported fact # student test from piazza ask1 = read.parse_input("fact: (grandparent A ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : C") r1 = read.parse_input("fact: (parent B C)") print(' Retracting', r1) self.KB.kb_retract(r1) print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : C") r1 = read.parse_input("fact: (parent A D)") print(' Retracting', r1) self.KB.kb_retract(r1) print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) print(str(len(answer))) self.assertEqual(0, len(answer))
class KBTest(unittest.TestCase): def setUp(self): # Assert starter facts file = 'statements_kb4.txt' self.data = read.read_tokenize(file) data = read.read_tokenize(file) self.KB = KnowledgeBase([], []) for item in data: if isinstance(item, Fact) or isinstance(item, Rule): self.KB.kb_assert(item) # def test1(self): # # Did the student code contain syntax errors, AttributeError, etc. # ask1 = read.parse_input("fact: (motherof ada ?X)") # print(' Asking if', ask1) # answer = self.KB.kb_ask(ask1) # self.assertEqual(str(answer[0]), "?X : bing") # # def test2(self): # # Can fc_infer actually infer # ask1 = read.parse_input("fact: (grandmotherof ada ?X)") # print(' Asking if', ask1) # answer = self.KB.kb_ask(ask1) # self.assertEqual(str(answer[0]), "?X : felix") # self.assertEqual(str(answer[1]), "?X : chen") def test3(self): # Does retract actually retract things r1 = read.parse_input("fact: (motherof ada bing)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (grandmotherof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(len(answer), 1) self.assertEqual(str(answer[0]), "?X : felix")
class KBTest2(unittest.TestCase): def setUp(self): # Assert starter facts file = 'statements_kb2.txt' data = read.read_tokenize(file) self.KB = KnowledgeBase([], []) for item in data: if isinstance(item, Fact): self.KB.kb_assert(item) def test2_1(self): ask1 = read.parse_input("fact: (attacked Ai Nosliw)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(answer[0].bindings, []) #self.assertEqual(aswer.list_of_bindings[0][1][0], ask1) print("test 2_1 passed!") def test2_2(self): ask1 = read.parse_input("fact: (color littlebox red)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertFalse(answer) print("test 2_2 passed!") def test2_3(self): a1 = read.parse_input("fact: (inst Harry Wizard)") a2 = read.parse_input("fact: (inst Ron Wizard)") a3 = read.parse_input("fact: (inst Hermione Sorceress)") self.KB.kb_assert(a1) self.KB.kb_assert(a2) self.KB.kb_assert(a3) ask1 = read.parse_input("fact: (inst ?X Wizard)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : Harry") self.assertEqual(str(answer[1]), "?X : Ron") ask2 = read.parse_input("fact: (inst ?X Sorceress)") print(' Asking if', ask2) answer2 = self.KB.kb_ask(ask2) self.assertEqual(str(answer2[0]), "?X : Sarorah") self.assertEqual(str(answer2[1]), "?X : Hermione") print("test 2_3 passed!")
def main(): KB = KnowledgeBase([], []) _, fact1 = read.parse_input("fact: (hero A)") _, fact2 = read.parse_input("fact: (person A)") _, rule1 = read.parse_input("rule: ((hero ?x) (person ?x)) -> (goodman ?x)") _, rule2 = read.parse_input( "rule: ((goodman ?x) (wenttoschool ?x)) -> (doctor ?x)") _, fact3 = read.parse_input("fact: (wenttoschool A)") _, fact4 = read.parse_input("fact: (goodman A)") _, ask1 = read.parse_input("fact: (goodman A)") _, ask2 = read.parse_input("fact: (doctor A)") _, ask3 = read.parse_input("rule: ((person A)) -> (goodman A)") KB.kb_assert(fact1) KB.kb_assert(fact2) KB.kb_assert(fact4) KB.kb_assert(rule1) KB.kb_assert(rule2) KB.kb_assert(fact3) print KB answer1 = KB.kb_ask(ask1)
class CustomTests3(unittest.TestCase): def setUp(self): file = 'statements_kb3.txt' self.data = read.read_tokenize(file) data = read.read_tokenize(file) self.KB = KnowledgeBase([], []) for item in data: if isinstance(item, Fact) or isinstance(item, Rule): self.KB.kb_assert(item) def test1(self): ask1 = read.parse_input("fact: (goodman ?X)") answer1 = self.KB.kb_ask(ask1) self.assertEqual(len(answer1), 1) self.assertEqual(str(answer1[0]), "?X : a") def test2(self): fact1 = read.parse_input("fact: (goodman a)") self.KB.kb_retract(fact1) ask1 = read.parse_input("fact: (goodman ?X)") answer1 = self.KB.kb_ask(ask1) self.assertEqual(len(answer1), 1) self.assertEqual(str(answer1[0]), "?X : a") def test3(self): fact1 = read.parse_input("fact: (hero a)") fact2 = read.parse_input("fact: (person a)") self.KB.kb_retract(fact1) self.KB.kb_retract(fact2) ask1 = read.parse_input("fact: (hero ?X)") ask2 = read.parse_input("fact: (person ?X)") answer1 = self.KB.kb_ask(ask1) answer2 = self.KB.kb_ask(ask2) self.assertEqual(len(answer1), 0) self.assertEqual(len(answer2), 0) def test4(self): fact1 = read.parse_input("fact: (hero a)") fact2 = read.parse_input("fact: (person a)") fact3 = read.parse_input("fact: (goodman a)") self.KB.kb_retract(fact1) self.KB.kb_retract(fact2) self.KB.kb_retract(fact3) ask1 = read.parse_input("fact: (goodman ?X") answer1 = self.KB.kb_ask(ask1) self.assertEqual(len(answer1), 0) def test5(self): fact1 = read.parse_input("fact: (hero a)") fact2 = read.parse_input("fact: (person a)") self.KB.kb_retract(fact1) self.KB.kb_retract(fact2) ask1 = read.parse_input("fact: (goodman ?X") answer1 = self.KB.kb_ask(ask1) self.assertEqual(len(answer1), 1) self.assertEqual(str(answer1[0]), "?X : a") fact3 = read.parse_input("fact: (goodman a)") self.KB.kb_retract(fact3) ask1 = read.parse_input("fact: (goodman ?X") answer1 = self.KB.kb_ask(ask1) self.assertEqual(len(answer1), 0) def test6(self): fact1 = read.parse_input("fact: (human a)") rule1 = read.parse_input("rule: ((human ?y)) -> (person ?y)") self.KB.kb_assert(fact1) self.KB.kb_assert(rule1) remove1 = read.parse_input("fact: (person a") self.KB.kb_retract(remove1) ask1 = read.parse_input("fact: (goodman ?X") answer1 = self.KB.kb_ask(ask1) self.assertEqual(len(answer1), 1) self.assertEqual(str(answer1[0]), "?X : a") remove1 = read.parse_input("fact: (human a") self.KB.kb_retract(remove1) ask1 = read.parse_input("fact: (goodman ?X") answer1 = self.KB.kb_ask(ask1) self.assertEqual(len(answer1), 1) self.assertEqual(str(answer1[0]), "?X : a") remove1 = read.parse_input("fact: (person a") self.KB.kb_retract(remove1) ask1 = read.parse_input("fact: (goodman ?X") answer1 = self.KB.kb_ask(ask1) self.assertEqual(len(answer1), 1) self.assertEqual(str(answer1[0]), "?X : a") remove1 = read.parse_input("fact: (goodman a") for x in self.KB.facts: if x == remove1: print("Asserted?") print(x.asserted) self.KB.kb_retract(remove1) ask1 = read.parse_input("fact: (goodman ?X") answer1 = self.KB.kb_ask(ask1) self.assertEqual(len(answer1), 0) def test7(self): remove1 = read.parse_input("fact: (goodman a") self.KB.kb_retract(remove1) ask1 = read.parse_input("fact: (goodman ?X") answer1 = self.KB.kb_ask(ask1) self.assertEqual(len(answer1), 1) self.assertEqual(str(answer1[0]), "?X : a") remove1 = read.parse_input("fact: (person a") self.KB.kb_retract(remove1) ask1 = read.parse_input("fact: (goodman ?X") answer1 = self.KB.kb_ask(ask1) self.assertEqual(len(answer1), 0)
class KBTest(unittest.TestCase): def setUp(self): # Assert starter facts file = 'statements_kb4.txt' self.data = read.read_tokenize(file) data = read.read_tokenize(file) self.KB = KnowledgeBase([], []) for item in data: if isinstance(item, Fact) or isinstance(item, Rule): self.KB.kb_assert(item) def test1(self): # Did the student code contain syntax errors, AttributeError, etc. ask1 = read.parse_input("fact: (motherof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bing") def test2(self): # Can fc_infer actually infer ask1 = read.parse_input("fact: (grandmotherof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : felix") self.assertEqual(str(answer[1]), "?X : chen") def test3(self): # Does retract actually retract things r1 = read.parse_input("fact: (motherof ada bing)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (grandmotherof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(len(answer), 1) self.assertEqual(str(answer[0]), "?X : felix") def test4(self): # makes sure retract does not retract supported fact ask1 = read.parse_input("fact: (grandmotherof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : felix") self.assertEqual(str(answer[1]), "?X : chen") r1 = read.parse_input("fact: (grandmotherof ada chen)") print(' Retracting', r1) self.KB.kb_retract(r1) print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : felix") self.assertEqual(str(answer[1]), "?X : chen") def test5(self): # makes sure retract does not deal with rules ask1 = read.parse_input("fact: (parentof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bing") r1 = read.parse_input("rule: ((motherof ?x ?y)) -> (parentof ?x ?y)") print(' Retracting', r1) self.KB.kb_retract(r1) print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bing") def test37(self): r1 = read.parse_input("fact: (motherof ada bing)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (parentof ada ?X)") answer = self.KB.kb_ask(ask1) print(' Answer is ', answer) self.assertEqual(len(answer), 0)
class CustomTests4(unittest.TestCase): def setUp(self): # Assert starter facts file = 'statements_kb6.txt' self.data = read.read_tokenize(file) data = read.read_tokenize(file) self.KB = KnowledgeBase([], []) for item in data: if isinstance(item, Fact) or isinstance(item, Rule): self.KB.kb_assert(item) def test6(self): """this student generated test ensures retract only removes facts and rules that are supported by 1 or less fact-rule pairs """ r1 = read.parse_input("fact: (dresslike profHammond TonyStark)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (isliterally ?X TonyStark)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : profHammond") ask2 = read.parse_input("fact: (resembles profHammond ?Y)") print(' Asking if', ask2) answer = self.KB.kb_ask(ask2) self.assertFalse(answer) def test7(self): """this student generated test ensures retracting the 2nd fact in the lhs of a rule successfully retracts the final inferred fact but re-assertion re-infers the fact """ r1 = read.parse_input("fact: (lookslike profHammond TonyStark)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (resembles profHammond ?Y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertFalse(answer) a1 = read.parse_input("fact: (lookslike profHammond TonyStark)") print(' Reasserting', a1) self.KB.kb_assert(a1) ask2 = read.parse_input("fact: (resembles profHammond ?Y)") print(' Asking if', ask2) answer = self.KB.kb_ask(ask2) self.assertEqual(str(answer[0]), "?Y : TonyStark") def test8(self): """this student generated test ensures retracting a fact that supports inferences 2 links away also retracts all facts down that chain """ r1 = read.parse_input("fact: (techgenius profHammond)") print(' Retracting', r1) self.KB.kb_retract(r1) r2 = read.parse_input("fact: (talkslike profHammond)") print(' Retracting', r2) self.KB.kb_retract(r2) ask1 = read.parse_input("fact: (isliterally ?X TonyStark)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertFalse(answer) ask2 = read.parse_input("fact: (IronMan ?X)") print(' Asking if', ask2) answer = self.KB.kb_ask(ask2) self.assertFalse(answer) ask3 = read.parse_input("fact: (Avenger ?X)") print(' Asking if', ask3) answer = self.KB.kb_ask(ask3) self.assertFalse(answer) def test9(self): """this student generated test ensures retracting a fact that supports two or more facts or rules successfully retracts all inferred facts and rules """ r1 = read.parse_input("fact: (techgenius profHammond)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (employable ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertFalse(answer) ask2 = read.parse_input("fact: (smart ?X)") print(' Asking if', ask2) answer = self.KB.kb_ask(ask2) self.assertFalse(answer) def test10(self): """this student generated test ensures the inference engine is working at a basic level""" ask1 = read.parse_input("fact: (Avenger ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : profHammond") ask2 = read.parse_input("fact: (smart ?X)") print(' Asking if', ask2) answer = self.KB.kb_ask(ask2) self.assertEqual(str(answer[0]), "?X : profHammond") ask3 = read.parse_input("fact: (employable ?X)") print(' Asking if', ask3) answer = self.KB.kb_ask(ask3) self.assertEqual(str(answer[0]), "?X : profHammond")
class KBTest(unittest.TestCase): def setUp(self): # Assert starter facts file = 'statements_kb4.txt' self.data = read.read_tokenize(file) data = read.read_tokenize(file) self.KB = KnowledgeBase([], []) for item in data: if isinstance(item, Fact) or isinstance(item, Rule): self.KB.kb_assert(item) def test1(self): # Did the student code contain syntax errors, AttributeError, etc. ask1 = read.parse_input("fact: (motherof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bing") def test2(self): # Can fc_infer actually infer ask1 = read.parse_input("fact: (grandmotherof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : felix") self.assertEqual(str(answer[1]), "?X : chen") def test3(self): # Does retract actually retract things r1 = read.parse_input("fact: (motherof ada bing)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (grandmotherof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(len(answer), 1) self.assertEqual(str(answer[0]), "?X : felix") def test4(self): # makes sure retract does not retract supported fact ask1 = read.parse_input("fact: (grandmotherof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : felix") self.assertEqual(str(answer[1]), "?X : chen") r1 = read.parse_input("fact: (grandmotherof ada chen)") print(' Retracting', r1) self.KB.kb_retract(r1) print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : felix") self.assertEqual(str(answer[1]), "?X : chen") def test5(self): # makes sure retract does not deal with rules ask1 = read.parse_input("fact: (parentof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bing") r1 = read.parse_input("rule: ((motherof ?x ?y)) -> (parentof ?x ?y)") print(' Retracting', r1) self.KB.kb_retract(r1) print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bing") def test6(self): """this student generated test ensures retract only removes facts and rules that are supported by 1 or less fact-rule pairs """ r1 = read.parse_input("fact: (dresslike profHammond TonyStark)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (isliterally ?X TonyStark)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : profHammond") ask2 = read.parse_input("fact: (resembles profHammond ?Y)") print(' Asking if', ask2) answer = self.KB.kb_ask(ask2) self.assertFalse(answer) def test7(self): """this student generated test ensures retracting the 2nd fact in the lhs of a rule successfully retracts the final inferred fact but re-assertion re-infers the fact """ r1 = read.parse_input("fact: (lookslike profHammond TonyStark)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (resembles profHammond ?Y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertFalse(answer) a1 = read.parse_input("fact: (lookslike profHammond TonyStark)") print(' Reasserting', a1) self.KB.kb_assert(a1) ask2 = read.parse_input("fact: (resembles profHammond ?Y)") print(' Asking if', ask2) answer = self.KB.kb_ask(ask2) self.assertEqual(str(answer[0]), "?Y : TonyStark") def test8(self): """this student generated test ensures retracting a fact that supports two or more facts or rules successfully retracts all inferred facts and rules """ r1 = read.parse_input("fact: (techgenius profHammond)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (employable ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertFalse(answer) ask2 = read.parse_input("fact: (smart ?X)") print(' Asking if', ask2) answer = self.KB.kb_ask(ask2) self.assertFalse(answer) def test9(self): """this student generated test ensures the inference engine is working at a basic level""" ask1 = read.parse_input("fact: (Avenger ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : profHammond") ask2 = read.parse_input("fact: (smart ?X)") print(' Asking if', ask2) answer = self.KB.kb_ask(ask2) self.assertEqual(str(answer[0]), "?X : profHammond") ask3 = read.parse_input("fact: (employable ?X)") print(' Asking if', ask3) answer = self.KB.kb_ask(ask3) self.assertEqual(str(answer[0]), "?X : profHammond")
def main(): # Assert starter facts file = 'statements_kb2.txt' data = read.read_tokenize(file) KB = KnowledgeBase([], []) for dtype, item in data: if dtype == read.FACT: KB.kb_assert(item) # KB demonstration # Ask for one of the starter facts print "Starting basic KB demonstration" _, ask1 = read.parse_input("fact: (hero ?x)") print " Asking if", ask1 answer = KB.kb_ask(ask1) #pprint_justification(answer) print ("Basic demonstration of KB complete" if answer else "ERROR: KB demonstration failed") + "\n" print "Starting Test 1" _, test1 = read.parse_input("fact: (hero Ai)") print " Retracting", test1 # KB.kb_retract(Statement(test1)) KB.kb_retract(test1) answer = KB.kb_ask(ask1) # pprint_justification(answer) print (("Fail" if answer else "Pass") + " Test 1\n") print "Starting Test 2" fail = True for dtype, item in data: if dtype == read.RULE: KB.kb_assert(item) _, test2_1 = read.parse_input("fact: (strong ?x)") print " Asking", test2_1 answer = KB.kb_ask(test2_1) #pprint_justification(answer) if answer and len(answer)==1 and answer[0]['?x'] == 'Ai': print " Pass Part 1" _, test2_2 = read.parse_input("fact: (inst Sarorah ?x)") print " Asking", test2_2 answer = KB.kb_ask(test2_2) #pprint_justification(answer) if answer and len(answer)==2 and (answer[0]['?x'] == 'Sorceress' or answer[0]['?x'] == 'Wizard'): print " Pass Part 2" _, test2_3 = read.parse_input("fact: (dead ?dragon)") print " Asking", test2_3 answer = KB.kb_ask(test2_3) #pprint_justification(answer) if not answer: print " Pass Part 3" _, assert_hero = read.parse_input("fact: (hero Ai)") print " Asserting", assert_hero KB.kb_assert(assert_hero) _, test2_4 = read.parse_input("fact: (dead ?dragon)") print " Asking", test2_4 answer = KB.kb_ask(test2_4) #pprint_justification(answer) if answer and len(answer)==1 and answer[0]['?dragon'] == 'Nosliw': print " Pass Part 4\nPass Test 2\n" fail = False if fail: print "Fail Test 2\n" print "Starting Test 3" fail = True _, possesses = read.parse_input("fact: (possesses Ai Loot)") print " Retracting", possesses KB.kb_retract(possesses) _, test3_1 = read.parse_input("fact: (dead ?dragon)") print " Asking", test3_1 answer = KB.kb_ask(test3_1) # pprint_justification(answer) if not answer: print " Pass Part 1" print " Asserting", possesses KB.kb_assert(possesses) _, sleeping = read.parse_input("fact: (sleeping Nosliw)") _, safe = read.parse_input("rule: (sleeping Nosliw) -> (safe HappyDale)") print " Asserting", sleeping KB.kb_assert(sleeping) print " Asserting", safe KB.kb_assert(safe) print " Retracting", possesses KB.kb_retract(possesses) _, possesses = read.parse_input("fact: (possesses Ai Loot)") _, test3_2 = read.parse_input("fact: (safe ?town)") print " Asking", test3_2 answer = KB.kb_ask(test3_2) #pprint_justification(answer) if answer and len(answer)==1 and answer[0]['?town'] == 'HappyDale': print " Pass Part 2\nPass Test 3\n" fail = False if fail: print "Fail Test 3\n"
class KBTest(unittest.TestCase): def setUp(self): # Assert starter facts file = 'statements_kb.txt' data = read.read_tokenize(file) self.KB = KnowledgeBase([], []) for item in data: if isinstance(item, Fact): self.KB.kb_assert(item) def test1(self): ask1 = read.parse_input("fact: (color bigbox red)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(answer[0].bindings, []) #self.assertEqual(answer.list_of_bindings[0][1][0], ask1) def test2(self): ask1 = read.parse_input("fact: (color littlebox red)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertFalse(answer) def test3(self): ask1 = read.parse_input("fact: (color ?X red)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bigbox") self.assertEqual(str(answer[1]), "?X : pyramid3") self.assertEqual(str(answer[2]), "?X : pyramid4") def test4(self): ask1 = read.parse_input("fact: (color bigbox ?Y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?Y : red") def test5(self): ask1 = read.parse_input("fact: (color ?X ?Y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bigbox, ?Y : red") self.assertEqual(str(answer[1]), "?X : littlebox, ?Y : blue") self.assertEqual(str(answer[2]), "?X : pyramid1, ?Y : blue") self.assertEqual(str(answer[3]), "?X : pyramid2, ?Y : green") self.assertEqual(str(answer[4]), "?X : pyramid3, ?Y : red") self.assertEqual(str(answer[5]), "?X : pyramid4, ?Y : red") def test6(self): ask1 = read.parse_input("fact: (inst ?X cube)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : cube1") self.assertEqual(str(answer[1]), "?X : cube2") self.assertEqual(str(answer[2]), "?X : cube3") self.assertEqual(str(answer[3]), "?X : cube4") def test7(self): ask1 = read.parse_input("fact: (size ?X ?Y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bigbox, ?Y : big") self.assertEqual(str(answer[1]), "?X : littlebox, ?Y : small") self.assertEqual(str(answer[2]), "?X : pyramid1, ?Y : small") self.assertEqual(str(answer[3]), "?X : pyramid2, ?Y : small") self.assertEqual(str(answer[4]), "?X : pyramid3, ?Y : big") self.assertEqual(str(answer[5]), "?X : pyramid4, ?Y : big") def test8(self): ask1 = read.parse_input("fact: (isa cube ?Y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?Y : block") def test9(self): ask1 = read.parse_input("fact: (isa ?X block)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : cube") self.assertEqual(str(answer[1]), "?X : pyramid") self.assertEqual(str(answer[2]), "?X : sphere") def test10(self): ask1 = read.parse_input( "rule: ((isa ?x ?y) (isa ?y ?z)) -> (isa ?x ?z)") print(' Asking if', ask1) answer = self.KD.kb_ask(ask1) self.assertFalse(answer) def test10(self): ask1 = read.parse_input("fact: (attacked ?X ?Y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : Ai, ?Y : Nosliw")