示例#1
0
 def test10(self):
     x = LogicVar('x')
     x1 = Const('x')
     y1 = Const('y')
     eq_(
         eval(
             begin(assign(x1, L(L(1, x))), assign(y1, L(L(1, x))),
                   unify(x1, y1))), True)
示例#2
0
 def test_var(self):
     eq_(eval(isvar(1)), False)
     eq_(eval(isvar(L(1))), False)
     eq_(eval(nonvar(1)), True)
     eq_(eval(nonvar(L(1))), True)
     eq_(eval(isvar(x)), True)
     eq_(eval(nonvar_p(1)), True)
     eq_(eval(nonvar_p(L(1))), True)
     eq_(eval(isvar_p(x)), True)
     assert_raises(NoSolution, eval, isvar_p(1))
     assert_raises(NoSolution, eval, isvar_p(L(1)))
     assert_raises(NoSolution, eval, nonvar_p(x))
示例#3
0
 def testKleene4(self):
     x, _, c, s, kleene = Var('x'), DummyVar('_'), Var('c'), Var('s'), Var(
         'kleene')
     ruleList = [(s, function(((x, ), kleene(_, x)))),
                 (kleene,
                  function(((_, Cons(c, x)), char(c) & kleene(_, x)),
                           ((_, nil), nullword)))]
     eq_(eval(letr(ruleList, parse_text(s(x), 'a'), x)), L('a'))
     eq_(eval(letr(ruleList, parse_text(s(x), 'aa'), x)), L('a', 'a'))
     eq_(eval(letr(ruleList, parse_text(s(x), 'aaa'), x)), L('a', 'a', 'a'))
     eq_(eval(letr(ruleList, parse_text(s(x), 'bbb'), x)), L('b', 'b', 'b'))
     eq_(eval(letr(ruleList, parse_text(s(x), 'abc'), x)), L('a', 'b', 'c'))
     eq_(eval(letr(ruleList, parse_text(s(x), ''), x)), nil)
示例#4
0
 def testKleene3(self):
     x, c, kleene = Var('x'), Var('c'), Var('kleene')
     ruleList = [(kleene,
                  function(((Cons(c, x), ), char(c), kleene(x)),
                           ((nil, ), nullword)))]
     eq_(eval(letr(ruleList, parse_text(kleene(x), 'a'), x)), L('a'))
     eq_(eval(letr(ruleList, parse_text(kleene(x), 'aa'), x)), L('a', 'a'))
     eq_(eval(letr(ruleList, parse_text(kleene(x), 'aaa'), x)),
         L('a', 'a', 'a'))
     eq_(eval(letr(ruleList, parse_text(kleene(x), 'bbb'), x)),
         L('b', 'b', 'b'))
     eq_(eval(letr(ruleList, parse_text(kleene(x), 'abc'), x)),
         L('a', 'b', 'c'))
     eq_(eval(letr(ruleList, parse_text(kleene(x), ''), x)), nil)
示例#5
0
 def testKleene2(self):
     x, c, s, kleene = Var('x'), Var('c'), Var('s'), Var('kleene')
     ruleList = [(s, function(((x, ), kleene(c, x)))),
                 (kleene,
                  function(((c, Cons(c, x)), and_p(char(c), kleene(c, x))),
                           ((c, nil), nullword)))]
     eq_(eval(letr(ruleList, parse_text(s(x), 'aa'), x)), L('a', 'a'))
     eq_(eval(letr(ruleList, parse_text(s(x), 'aaa'), x)), L('a', 'a', 'a'))
     eq_(eval(letr(ruleList, parse_text(s(x), 'bbb'), x)), L('b', 'b', 'b'))
     eq_(eval(letr(ruleList, parse_text(s(x), ''), x)), nil)
     assert_raises(NoSolution, eval,
                   letr(ruleList, parse_text(and_p(s(x), eoi), 'aab'), x))
     assert_raises(NoSolution, eval,
                   letr(ruleList, parse_text(and_p(s(x), eoi), 'abc'), x))
     assert_raises(NoSolution, eval,
                   letr(ruleList, parse_text(and_p(s(x), eoi), '41'), x))
示例#6
0
 def testKleene1(self):  #occurs_check
     x, s, kleene = Var('x'), Var('s'), Var('kleene')
     x1 = Var('x')
     result = LogicVar('result')
     ruleList = [(kleene,
                  rules(((cons('a', x), ), begin(char('a'), kleene(x))),
                        ((nil, ), nullword)))]
     eq_(
         eval(
             letrec(ruleList, parse_text(kleene(result), 'aa'),
                    getvalue(result))), L('a', 'a'))
示例#7
0
 def test_getvalue(self):
     from dao.solvebase import conslist
     eq_(eval(begin(getvalue(L("abc", 1)))), conslist("abc", 1))
示例#8
0
 def test_findall_string_concat2(self):
     eq_(eval(begin(findall(concat(x, y, "abc"), L(x, y), z), z)),
         [L("a", "bc"), L("ab", "c")])
示例#9
0
 def test20(self):
     eq_(eval(notunify(2, L(1))), True)
示例#10
0
 def test8(self):
     x = LogicVar('x')
     eq_(eval(unify(L(L(1, x)), L(L(1, x)))), True)
示例#11
0
 def test7(self):
     x = LogicVar('x')
     eq_(eval(unify(L(x), L(1))), True)
示例#12
0
 def test6(self):
     eq_(eval(unify(L(1), L(1))), True)