def test_prove_primitive_call(self): joe = logic.Atom('joe') judy = logic.Atom('judy') jorge = logic.Atom('jorge') x = logic.Var('x') db = {'likes': [], 'hates': []} db['likes'].append( logic.Clause(logic.Relation('likes', (joe, x)), [ logic.Relation('likes', (x, joe)), logic.Relation('hates', (judy, x)) ])) db['likes'].append(logic.Clause(logic.Relation('likes', (jorge, joe)))) db['hates'].append(logic.Clause(logic.Relation('hates', (judy, jorge)))) things = [] def prim(a, b, c, d): things.append(a) db['prim'] = prim goal = logic.Relation('likes', (joe, x)) display = logic.Relation('prim', 'foo') bindings = logic.prove_all([goal, display], {}, db) self.assertEqual(['foo'], things)
def test_prove_all_no_subgoals_required(self): joe = logic.Atom('joe') judy = logic.Atom('judy') jorge = logic.Atom('jorge') x = logic.Var('x') db = {'likes': [], 'hates': []} db['likes'].append(logic.Clause(logic.Relation('likes', (joe, x)), [logic.Relation('likes', (x, joe)), logic.Relation('hates', (judy, x))])) db['likes'].append(logic.Clause(logic.Relation('likes', (jorge, joe)))) db['hates'].append(logic.Clause(logic.Relation('hates', (judy, jorge)))) goal1 = logic.Relation('likes', (x, joe)) goal2 = logic.Relation('hates', (judy, x)) bindings = logic.prove_all([goal1, goal2], {}, db) self.assertEqual({x: jorge}, bindings)
def test_prove_all_no_subgoals_required(self): joe = logic.Atom('joe') judy = logic.Atom('judy') jorge = logic.Atom('jorge') x = logic.Var('x') db = {'likes': [], 'hates': []} db['likes'].append( logic.Clause(logic.Relation('likes', (joe, x)), [ logic.Relation('likes', (x, joe)), logic.Relation('hates', (judy, x)) ])) db['likes'].append(logic.Clause(logic.Relation('likes', (jorge, joe)))) db['hates'].append(logic.Clause(logic.Relation('hates', (judy, jorge)))) goal1 = logic.Relation('likes', (x, joe)) goal2 = logic.Relation('hates', (judy, x)) bindings = logic.prove_all([goal1, goal2], {}, db) self.assertEqual({x: jorge}, bindings)
def test_prove_primitive_call(self): joe = logic.Atom('joe') judy = logic.Atom('judy') jorge = logic.Atom('jorge') x = logic.Var('x') db = {'likes': [], 'hates': []} db['likes'].append(logic.Clause(logic.Relation('likes', (joe, x)), [logic.Relation('likes', (x, joe)), logic.Relation('hates', (judy, x))])) db['likes'].append(logic.Clause(logic.Relation('likes', (jorge, joe)))) db['hates'].append(logic.Clause(logic.Relation('hates', (judy, jorge)))) things = [] def prim(a, b, c, d): things.append(a) db['prim'] = prim goal = logic.Relation('likes', (joe, x)) display = logic.Relation('prim', 'foo') bindings = logic.prove_all([goal, display], {}, db) self.assertEqual(['foo'], things)