def true(self, CE, mapping_list): assert len(mapping_list) >0 nmapping_list = [] for mapping in mapping_list: new_self = deepcopy(self) assert new_self == self for i in range(len(self.args)): new_self.args[i] = self.args[i].unify(mapping) #print 'Searching for %s' % self if len(Search.determination_list(CE, new_self)) == 0: continue if Search.search_true(CE, self) is True: nmapping_uf = Search.search_true(CE, self, return_mapping=True) nmapping = {} for a,b in nmapping_uf.items(): #print a,b if isinstance(a, Atom): nmapping[b]=a else: nmapping[a]=b nmapping_list.append(dict(mapping.items() + nmapping.items())) #print self, mapping_list, nmapping_list return len(nmapping_list) > 0, nmapping_list