Esempio n. 1
0
 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]
Esempio n. 2
0
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
Esempio n. 3
0
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