def test_basic_unification(self): assert_true(mia.unify(mia)) two = Term.from_integer(2) assert_true(two, two) assert_false(mia.unify(vincent)) with Frame(): assert_true(Term().unify(mia)) with Frame(): assert_true(Term().unify(Term())) with Frame(): X = Term() assert_true(X.unify(mia)) assert_false(X.unify(vincent)) k = Functor('k', 2) s = Functor('s', 1) t = Functor('t', 1) g = Term.from_atom_name('g') k_atom = Term.from_atom_name('k') with Frame(): X = Term() Y = Term() assert_true(k(s(g), Y).unify(k(X, t(k_atom)))) assert_equal(X, s(g)) assert_equal(Y, t(k_atom)) with Frame(): X = Term() Y = Term() assert_true(k(s(g), t(k_atom)).unify(k(X, t(Y)))) assert_equal(X, s(g)) assert_equal(Y, k_atom) self.retractall(loves(Term(), Term())) self.assertz(loves(vincent, mia)) self.assertz(loves(marcellus, mia)) self.assertz(loves(pumpkin, honey_bunny)) self.assertz(loves(honey_bunny, pumpkin)) with Frame(): X = Term() assert_false(loves(X, X).unify(loves(marcellus, mia)))
def test_unification_right(self): X = Term() assert_not_equal(self.term, X) X.unify(self.term) assert_equal(self.term, X)