Пример #1
0
 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