Пример #1
0
 def get_facts(self, rels, definite=True):
     clauses = []
     if not definite:
         clauses += [[~lit for lit in n.fmla] for n in self.all_nodes
                     if n.status == "false"]
         clauses += [
             rela_fact(1, equals, n, n) for n in self.all_nodes
             if (n.status != "false" and not n.summary and not any(
                 is_equality_lit(lit) for lit in n.fmla))
         ]
     for n in self.all_nodes:
         if n.status == 'true':
             wit = get_witness(n)
             if wit != None:
                 fmla = substitute_clause(n.fmla, {'X': (wit)})
                 clauses += [[lit] for lit in fmla
                             if not is_taut_equality_lit(lit)]
     names = set(
         n.name for n in self.all_nodes
         if (n.status == "true" if definite else n.status != "false"))
     for (r, tvals) in rels:
         if tvals:
             clauses += r.get_definite_facts(
                 names, tvals) if definite else r.get_facts(names, tvals)
     return clauses
Пример #2
0
 def get_facts(self,rels,definite=True):
     clauses = []
     if not definite:
         clauses += [[~lit for lit in n.fmla] for n in self.all_nodes if n.status == "false"]
         clauses += [rela_fact(1,equals,n,n)
                     for n in self.all_nodes
                     if (n.status != "false" and not n.summary and not any(is_equality_lit(lit) for lit in n.fmla))]
     for n in self.all_nodes:
         if n.status == 'true':
             wit = get_witness(n)
             if wit != None:
                 fmla = substitute_clause(n.fmla,{'X':(wit)})
                 clauses += [[lit] for lit in fmla if not is_taut_equality_lit(lit)]
     names = set(n.name for n in self.all_nodes if (n.status == "true" if definite else n.status != "false"))
     for (r,tvals) in rels:
         if tvals:
             clauses += r.get_definite_facts(names,tvals) if definite else r.get_facts(names,tvals)
     return clauses
Пример #3
0
 def add_witness_constraint(self,node,nc):
     g = self
     fmla = substitute_clause(node.fmla,{'X':nc})
     self.add_constraints([[lit]
                           for lit in fmla if not is_taut_equality_lit(lit)],False)
Пример #4
0
 def add_witness_constraint(self, node, nc):
     g = self
     fmla = substitute_clause(node.fmla, {'X': nc})
     self.add_constraints(
         [[lit] for lit in fmla if not is_taut_equality_lit(lit)], False)