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
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
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)
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)