Exemple #1
0
 def test_final_3_7():
     t = Function("f", [Number("0")])
     t_ = Function("g", [Number("1")])
     try:
         interpreter.unify(t, t_)
         assert False
     except Not_unifiable:
         assert True
Exemple #2
0
 def test_final_3_6():
     t = Number("0")
     t_ = Number("1")
     try:
         interpreter.unify(t, t_)
         assert False
     except Not_unifiable:
         assert True
Exemple #3
0
 def test_final_2_4():
     s = {Variable(("Y")): Number("0"), Variable("X"): Variable(("Y"))}
     p = Function("p", [Variable("X"), Variable(("Y")), Atom(("a"))])
     q = Function("q", [Atom(("a")), Atom(("b")), Atom(("a"))])
     p_ = Function("p", [Variable(("Y")), Number("0"), Atom(("a"))])
     q_ = Function("q", [Atom(("a")), Atom(("b")), Atom(("a"))])
     r = Rule(p, RuleBody([q]))
     r_ = Rule(p_, RuleBody([q_]))
     assert (interpreter.substitute_in_clause(s, r) == r_)
Exemple #4
0
 def test_final_2_3():
     s = {Variable(("Y")): Number("0"), Variable("X"): Variable(("Y"))}
     r = Rule((Function(
         "p", [Variable("X"), Variable("Y"),
               Atom("a")])), RuleBody([]))
     r_ = Rule(
         (Function("p", [Variable("Y"),
                         Number("0"), Atom("a")])), RuleBody([]))
     assert (interpreter.substitute_in_clause(s, r) == r_)
Exemple #5
0
 def test_substitute_in_clause(self):
     s = {Variable("Y"): Number(0), Variable("X"): Variable("Y")}
     p = Function("p", [Variable("X"), Variable("Y"), Atom("a")])
     q = Function("q", [Atom("a"), Atom("b"), Atom("a")])
     p_ = Function("p", [Variable("Y"), Number(0), Atom("a")])
     q_ = Function("q", [Atom("a"), Atom("b"), Atom("a")])
     r = Rule(p, [q])
     r_ = Rule(p_, [q_])
     #assert
     (self.substitute_in_clause(s, r) == r_)
Exemple #6
0
 def test_challenge_4():
     print(f"\nProgram: {list2str(pappend)}")
     # Tests choice points
     g = [
         append(Variable("X"), (Variable("Y")),
                (cons(Number("1"), (cons(Number("2"),
                                         (cons(Number("3"), nil)))))))
     ]
     print(f"Goal: {list2str(g)}")
     g_ = interpreter.det_query(pappend, g)
     assert (len(g_) == 4)
     for sg in g_:
         print(f"Solution: {list2str(sg)}")
Exemple #7
0
 def number(self, value):
     return Number(value.value)
Exemple #8
0
 def test_final_3_5():
     t = Number("0")
     t_ = Variable("Y")
     u = {Variable("Y"): Number("0")}
     assert (interpreter.unify(t, t_) == u)
Exemple #9
0
 def test_final_3_4():
     t = Number("0")
     t_ = Number("0")
     assert (interpreter.unify(t, t_) == {})
Exemple #10
0
 def test_final_2_2():
     s = {Variable(("Y")): Number("0"), Variable("X"): Variable(("Y"))}
     t = Function("p", [Variable("X"), Variable("Y"), Atom("a")])
     t_ = Function("p", [Variable("Y"), Number("0"), Atom("a")])
     assert (interpreter.substitute_in_term(s, t) == t_)
Exemple #11
0
 def test_final_4_7():
     print(f"\nProgram: {list2str(pappend)}")
     g = [append (Variable("X"), Variable("Y"), \
       (cons (Number("1"), (cons (Number("2"), (cons (Number("3"), nil)))))))]
     print(f"Goal: {list2str(g)}")
     g_ = interpreter.nondet_query(pappend, g)
     print(f"Solution: {list2str(g_)}")
     assert (
     g_ == [append (nil, (cons (Number("1"), (cons (Number("2"), (cons (Number("3"), nil)))))), \
           (cons (Number("1"), (cons (Number("2"), (cons (Number("3"), nil)))))))] or
     g_ == [append ((cons (Number("1"), nil)), (cons (Number("2"), (cons (Number("3"), nil)))), \
           (cons (Number("1"), (cons (Number("2"), (cons (Number("3"), nil)))))))] or
     g_ == [append ((cons (Number("1"), (cons (Number("2"), nil)))), (cons (Number("3"), nil)), \
            (cons (Number("1"), (cons (Number("2"), (cons (Number("3"), nil)))))))] or
     g_ == [append ((cons (Number("1"), (cons (Number("2"), (cons (Number("3"), nil)))))), nil, \
           (cons (Number("1"), (cons (Number("2"), (cons (Number("3"), nil)))))))] )
Exemple #12
0
 def test_substitute_in_term(self):
     s = {Variable("Y"): Number(0), Variable("X"): Variable("Y")}
     t = Function("f", [Variable("X"), Variable("Y"), Atom("a")])
     t_ = Function("f", [Variable("Y"), Number(0), Atom("a")])
     #assert
     (self.substitute_in_term(s, t) == t_)