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
def test_final_3_6(): t = Number("0") t_ = Number("1") try: interpreter.unify(t, t_) assert False except Not_unifiable: assert True
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_)
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_)
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_)
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)}")
def number(self, value): return Number(value.value)
def test_final_3_5(): t = Number("0") t_ = Variable("Y") u = {Variable("Y"): Number("0")} assert (interpreter.unify(t, t_) == u)
def test_final_3_4(): t = Number("0") t_ = Number("0") assert (interpreter.unify(t, t_) == {})
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_)
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)))))))] )
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_)