def reach_state_from_pred(state,clauses=None): """ If state is reachable from its predecessor's underapproximation, update its underapproximation with some reachable set of states. If not reachable, throw UnsatCoreWithInterpolant. In this case, the interpolant is implied by the predecessor's underapproximation but cannot reach the current state, hence it is a reasonable abductive inference. """ post = reach_state(state,clauses) if post != None: return post ri = reverse_interpolant_case(clauses,state.update,pre,state.domain.functions) if ri: raise UnsatCoreWithInterpolant(*ri) return None
def reach_state_from_pred(state,clauses=None): """ If state is reachable from its predecessor's underapproximation, update its underapproximation with some reachable set of states. If not reachable, throw UnsatCoreWithInterpolant. In this case, the interpolant is implied by the predecessor's underapproximation but cannot reach the current state, hence it is a reasonable abductive inference. """ post = reach_state(state,clauses) if post != None: return post ri = reverse_interpolant_case(clauses,state.update,pre,axioms,state.domain.functions) if ri: raise UnsatCoreWithInterpolant(*ri) return None