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)
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))
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)
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)
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))
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'))
def test_getvalue(self): from dao.solvebase import conslist eq_(eval(begin(getvalue(L("abc", 1)))), conslist("abc", 1))
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")])
def test20(self): eq_(eval(notunify(2, L(1))), True)
def test8(self): x = LogicVar('x') eq_(eval(unify(L(L(1, x)), L(L(1, x)))), True)
def test7(self): x = LogicVar('x') eq_(eval(unify(L(x), L(1))), True)
def test6(self): eq_(eval(unify(L(1), L(1))), True)