def get_subsuming_decl(self,lit): if lit == 'holdsAt(orntdiff(id2,id1,45),69879)': stop = 'here' modebs,modehs = self.globvals.modeb,self.globvals.modeh modes = flatten([modebs,modehs]) mcopy = {self.variabilize_mode(m):m for m in modes} sumsuming = None for m in mcopy: if asp.theta_subsumes([m],[lit]): sumsuming = m break if sumsuming == None: msg = 'No matching mode declaration schema found for atom %s'%(lit) raise excps.ModeDeclarationsMatchingException(msg) return mcopy[sumsuming]
def theta_subsumes(clause1, clause2, **kwargs): (skolems, skolemized) = skolemize(clause2) _vars = get_vars(clause1) modes_subs = False if "modes_subsumption" in kwargs and kwargs["modes_subsumption"]: modes_subs = True if modes_subs: if not asp.theta_subsumes(clause1, clause2): # speed up things a little... return (False, None) while len(skolems) < len(_vars): # generate extra skolem constants if needed skolems += skolems for x in itertools.permutations(skolems): g = generate(clause1, _vars, x) if test(g, skolemized): if modes_subs: return (True, dict(zip(_vars, list(x)))) else: return True if modes_subs: return (False, None) else: return False
def theta_subsumes(clause1,clause2,**kwargs): (skolems,skolemized) = skolemize(clause2) _vars = get_vars(clause1) modes_subs = False if 'modes_subsumption' in kwargs and kwargs['modes_subsumption']: modes_subs = True if modes_subs: if not asp.theta_subsumes(clause1,clause2): # speed up things a little... return (False,None) while len(skolems) < len(_vars): # generate extra skolem constants if needed skolems += skolems for x in itertools.permutations(skolems): g = generate(clause1,_vars,x) if test(g,skolemized): if modes_subs: return (True,dict(zip(_vars,list(x)))) else: return True if modes_subs: return (False,None) else: return False