Example #1
0
    def test_standardize_apart(self):
        var1, var2 = tree.Var(1), tree.Var(2)
        tr1 = tree.T('ListLink', var1, var2)

        tr2 = tree.standardize_apart(tr1)

        print tr1
        print tr2

        self.assertNotEquals(tree.unify(tr1, tr2, {}), None)

        var1_new, var2_new = tr2.args

        self.assertNotEquals(var1_new, var2_new)
        assert var1_new not in [var1, var2]
        assert var2_new not in [var1, var2]
Example #2
0
 def test_standardize_apart(self):
     var1, var2 = tree.Var(1), tree.Var(2)
     tr1 = tree.T('ListLink', var1, var2)
     
     tr2 = tree.standardize_apart(tr1)
     
     print tr1
     print tr2
     
     self.assertNotEquals(tree.unify(tr1, tr2, {}),  None)
     
     var1_new, var2_new = tr2.args
     
     self.assertNotEquals(var1_new, var2_new)        
     assert var1_new not in [var1, var2]
     assert var2_new not in [var1, var2]
Example #3
0
    def test_unify(self):
        T = tree.T
        V = tree.Var
        x1_template = T(self.x1)
        x1_tree = tree.tree_from_atom(self.x1)
        s = tree.unify(x1_template, x1_tree, {})
        self.assertEquals(s, {})

        x2_template = T(self.x2)
        s = tree.unify(x2_template, x1_tree, {})
        self.assertEquals(s, None)

        all_template = V(1)
        l2_tree = tree.tree_from_atom(self.l2)
        s = tree.unify(all_template, l2_tree, {})
        s_correct = {all_template: l2_tree}
        self.assertEquals(s, s_correct)

        t1 = V(1)
        t2 = V(2)
        s = tree.unify(t1, t2, {})
        self.assertEquals(s, {V(1): V(2)})

        t1 = V(1)
        t2 = V(2)
        s_correct = {V(1): V(2)}
        s = tree.unify(t1, t2, s_correct)
        self.assertEquals(s, s_correct)

        t1 = T('blah', V(1))
        t2 = T('blah', V(2))
        s = tree.unify(t1, t2, {})
        self.assertEquals(s, {V(1): V(2)})

        t1 = T('blah', V(1), V(2))
        t2 = T('blah', V(3), V(4))
        s = tree.unify(t1, t2, {})
        self.assertEquals(s, {V(1): V(3), V(2): V(4)})

        t1 = T('blah', V(1), V(1))
        t2 = T('blah', V(2), V(2))
        s = tree.unify(t1, t2, {})
        self.assertEquals(s, {V(1): V(2)})
Example #4
0
    def test_unify(self):
        T = tree.T
        V = tree.Var
        x1_template = T(self.x1)
        x1_tree = tree.tree_from_atom(self.x1)
        s = tree.unify(x1_template, x1_tree, {})
        self.assertEquals(s, {})

        x2_template = T(self.x2)
        s = tree.unify(x2_template, x1_tree, {})
        self.assertEquals(s, None)
        
        all_template = V(1)
        l2_tree = tree.tree_from_atom(self.l2)
        s = tree.unify(all_template, l2_tree, {})
        s_correct = {all_template : l2_tree}
        self.assertEquals(s, s_correct)

        t1 = V(1)
        t2 = V(2)
        s = tree.unify(t1, t2, {})
        self.assertEquals(s, {V(1):V(2)})
        
        t1 = V(1)
        t2 = V(2)
        s_correct = {V(1):V(2)}
        s = tree.unify(t1, t2, s_correct)
        self.assertEquals(s, s_correct)
        
        t1 = T('blah',V(1))
        t2 = T('blah',V(2))
        s = tree.unify(t1, t2, {})
        self.assertEquals(s, {V(1):V(2)})
        
        t1 = T('blah',V(1), V(2))
        t2 = T('blah',V(3), V(4))
        s = tree.unify(t1, t2, {})
        self.assertEquals(s, {V(1):V(3), V(2):V(4)})
        
        t1 = T('blah',V(1), V(1))
        t2 = T('blah',V(2), V(2))
        s = tree.unify(t1, t2, {})
        self.assertEquals(s, {V(1):V(2)})