예제 #1
0
    def test_combo(self):
        x_obj = qterm.Variable('x', pq('obj'))
        x_var = qterm.Variable('x', pq('?a'))
        phi_var = qterm.Constant('phi', pq('?b->bool'))
        phi_obj = qterm.Constant('phi', pq('obj->bool'))
        combo_var = term_builder.build_combination(phi_var, x_var)
        combo_obj = term_builder.build_combination(phi_obj, x_obj)
        combo_var2 = term_builder.build_combination(phi_var, x_obj)

        x, combo = unify_types([x_obj, combo_var])
        assert x == x_obj
        assert combo == combo_obj

        phi_a, phi_b = unify_types([phi_var, phi_obj])
        assert phi_a == phi_var
        assert phi_b == phi_obj

        combo_a, combo_b = unify_types([combo_var, combo_obj])
        assert combo_a == combo_obj
        assert combo_b == combo_obj

        combo_a, combo_b = unify_types([combo_var2, combo_obj])
        assert combo_a == combo_obj
        assert combo_b == combo_obj

        f = qterm.Variable('f', pq('?x->?y'))
        raises(UnificationError, term_builder.build_combination, f, f)
        raises(UnificationError, term_builder.build_combination, x_var, x_var)
예제 #2
0
파일: test_parser.py 프로젝트: cap/cheqed
    def test_parse_function(self):
        t = qfun(qobj(), qobj())
        f = qterm.Variable('f', t)
        g = qterm.Variable('g', t)
        h = qterm.Variable('h', qfun(qobj(), t))
        x = qterm.Variable('x', qobj())
        y = qterm.Variable('y', qobj())

        assert_equal(self.parser.parse('f:obj->obj(x)'),
                     term_builder.build_combination(f, x))
        
        assert (self.parser.parse('f:obj->obj(g:obj->obj(x))')
                == term_builder.build_combination(f, term_builder.build_combination(g, x)))

        assert (self.parser.parse('h:obj->obj->obj(x, y)')
                == term_builder.build_binary_op(h, x, y))
예제 #3
0
파일: test_parser.py 프로젝트: cap/cheqed
 def test_parse_operator(self):
     assert (self.parser.parse('not a')
             == term_builder.build_combination(self.not_,
                                qterm.Variable('a', qbool())))
     
     assert (self.parser.parse('a:obj = b:obj')
             == term_builder.build_binary_op(self.equals,
                                qterm.Variable('a', qobj()),
                                qterm.Variable('b', qobj())))