def reverse_join_concrete_clauses(state,join_of,clauses=None): if clauses == None: clauses = state.clauses for s in join_of: if not clauses_imply(and_clauses(s.clauses,clauses),false_clauses()): return (and_clauses(s.clauses,clauses),s) pre = or_clauses(*[s.clauses for s in join_of]) itp = interpolant(pre,clauses,state.domain.functions) if itp: raise UnsatCoreWithInterpolant(*itp) raise IvyError(None,"decision procedure incompleteness")
def reverse_join_concrete_clauses(state, join_of, clauses=None): if clauses == None: clauses = state.clauses for s in join_of: if not clauses_imply(and_clauses(s.clauses, clauses), false_clauses()): return (and_clauses(s.clauses, clauses), s) pre = or_clauses(*[s.clauses for s in join_of]) itp = interpolant(pre, clauses, state.domain.functions) if itp: raise UnsatCoreWithInterpolant(*itp) raise IvyError(None, "decision procedure incompleteness")