def test_knowledge_database_2(self): self.dynamic(Term.from_functor(happy)) self.dynamic(Term.from_functor(listens_2_music)) self.dynamic(Term.from_functor(plays_air_guitar)) self.assertz(happy(yolanda)) self.assertz(listens_2_music(mia)) self.assertz(self.rule(listens_2_music(yolanda), happy(yolanda))) self.assertz(self.rule(plays_air_guitar(mia), listens_2_music(mia))) self.assertz(self.rule(plays_air_guitar(yolanda), listens_2_music(yolanda))) assert_true(plays_air_guitar(mia)())
def test_knowledge_database_4(self): self.retractall(woman(Term())) self.retractall(loves(Term(), Term())) self.dynamic(Term.from_functor(woman)) self.dynamic(Term.from_functor(loves)) self.assertz(woman(mia)) self.assertz(woman(jody)) self.assertz(woman(yolanda)) self.assertz(loves(vincent, mia)) self.assertz(loves(marcellus, mia)) self.assertz(loves(pumpkin, honey_bunny)) self.assertz(loves(honey_bunny, pumpkin)) with Frame() as f: X = f.term() # Creates a compound term: woman(X) # Then evaluates that compound term like once(woman(X)) # Finds the first solution. woman(X)() assert_equal(X, mia) with Frame() as f: # Do the same thing by calling a predicate instead of evaluating # a compound term. # Creates the predicate `woman` then evaluates it with the argument # `X`. Again, finds the first solution. X = f.term() Predicate(woman)(X) assert_equal(X, mia) # Use a query to find all solutions. with Frame() as f: X = f.term() with Query(Predicate(woman), X) as q: q.next_solution() assert_equal(X, mia) q.next_solution() assert_equal(X, jody) q.next_solution() assert_equal(X, yolanda) assert_false(q.next_solution()) with Frame() as f: X = f.term() assert_true((loves(marcellus, X) & woman(X))()) assert_equal(X, mia)
def test_knowledge_database_3(self): self.dynamic(Term.from_functor(happy)) self.dynamic(Term.from_functor(listens_2_music)) self.dynamic(Term.from_functor(plays_air_guitar)) self.assertz(happy(vincent)) self.assertz(listens_2_music(butch)) self.assertz(self.rule(plays_air_guitar(vincent), (listens_2_music(vincent) & happy(vincent)))) self.assertz(self.rule(plays_air_guitar(butch), happy(butch))) self.assertz(self.rule(plays_air_guitar(butch), listens_2_music(butch))) assert_false(plays_air_guitar(vincent)()) assert_true(plays_air_guitar(butch)())
def test_knowledge_database_1(self): self.dynamic(Term.from_functor(woman)) self.dynamic(rock_concert) self.assertz(woman(mia)) self.assertz(woman(jody)) self.assertz(woman(yolanda)) self.assertz(plays_air_guitar(jody)) self.assertz(party) assert_true(woman(mia)()) assert_true(woman(jody)()) assert_true(woman(yolanda)()) assert_false(woman(Term.from_atom_name('bob'))()) once = Functor('once', 1) once_pred = Predicate(once) assert_true(once_pred(woman(mia))) once_pred(woman(mia), check=True) assert_false(once_pred(woman(Term.from_atom_name('bob')))) assert_true(plays_air_guitar(jody)()) assert_false(plays_air_guitar(mia)()) assert_true(party()) assert_false(Term.from_atom_name('rockConcert')())